~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/hid/vmtest.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/testing/selftests/hid/vmtest.sh (Version linux-6.12-rc7) and /tools/testing/selftests/hid/vmtest.sh (Version linux-4.4.302)


  1 #!/bin/bash                                       
  2 # SPDX-License-Identifier: GPL-2.0                
  3                                                   
  4 set -u                                            
  5 set -e                                            
  6                                                   
  7 # This script currently only works for x86_64     
  8 ARCH="$(uname -m)"                                
  9 case "${ARCH}" in                                 
 10 x86_64)                                           
 11         QEMU_BINARY=qemu-system-x86_64            
 12         BZIMAGE="arch/x86/boot/bzImage"           
 13         ;;                                        
 14 *)                                                
 15         echo "Unsupported architecture"           
 16         exit 1                                    
 17         ;;                                        
 18 esac                                              
 19 SCRIPT_DIR="$(dirname $(realpath $0))"            
 20 OUTPUT_DIR="$SCRIPT_DIR/results"                  
 21 KCONFIG_REL_PATHS=("${SCRIPT_DIR}/config" "${S    
 22 B2C_URL="https://gitlab.freedesktop.org/gfx-ci    
 23 NUM_COMPILE_JOBS="$(nproc)"                       
 24 LOG_FILE_BASE="$(date +"hid_selftests.%Y-%m-%d    
 25 LOG_FILE="${LOG_FILE_BASE}.log"                   
 26 EXIT_STATUS_FILE="${LOG_FILE_BASE}.exit_status    
 27 CONTAINER_IMAGE="registry.freedesktop.org/bent    
 28                                                   
 29 TARGETS="${TARGETS:=$(basename ${SCRIPT_DIR})}    
 30 DEFAULT_COMMAND="pip3 install hid-tools; make     
 31                                                   
 32 usage()                                           
 33 {                                                 
 34         cat <<EOF                                 
 35 Usage: $0 [-j N] [-s] [-b] [-d <output_dir>] -    
 36                                                   
 37 <command> is the command you would normally ru    
 38 the source kernel direcory. e.g:                  
 39                                                   
 40         $0 -- ./tools/testing/selftests/hid/hi    
 41                                                   
 42 If no command is specified and a debug shell (    
 43 "${DEFAULT_COMMAND}" will be run by default.      
 44                                                   
 45 If you build your kernel using KBUILD_OUTPUT=     
 46 can be passed as environment variables to the     
 47                                                   
 48   O=<kernel_build_path> $0 -- ./tools/testing/    
 49                                                   
 50 or                                                
 51                                                   
 52   KBUILD_OUTPUT=<kernel_build_path> $0 -- ./to    
 53                                                   
 54 Options:                                          
 55                                                   
 56         -u)             Update the boot2contai    
 57         -d)             Update the output dire    
 58         -b)             Run only the build ste    
 59         -j)             Number of jobs for com    
 60                         (default: ${NUM_COMPIL    
 61         -s)             Instead of powering of    
 62                         shell. If <command> is    
 63                         the command finishes e    
 64 EOF                                               
 65 }                                                 
 66                                                   
 67 download()                                        
 68 {                                                 
 69         local file="$1"                           
 70                                                   
 71         echo "Downloading $file..." >&2           
 72         curl -Lsf "$file" -o "${@:2}"             
 73 }                                                 
 74                                                   
 75 recompile_kernel()                                
 76 {                                                 
 77         local kernel_checkout="$1"                
 78         local make_command="$2"                   
 79                                                   
 80         cd "${kernel_checkout}"                   
 81                                                   
 82         ${make_command} olddefconfig              
 83         ${make_command} headers                   
 84         ${make_command}                           
 85 }                                                 
 86                                                   
 87 update_selftests()                                
 88 {                                                 
 89         local kernel_checkout="$1"                
 90         local selftests_dir="${kernel_checkout    
 91                                                   
 92         cd "${selftests_dir}"                     
 93         ${make_command}                           
 94 }                                                 
 95                                                   
 96 run_vm()                                          
 97 {                                                 
 98         local run_dir="$1"                        
 99         local b2c="$2"                            
100         local kernel_bzimage="$3"                 
101         local command="$4"                        
102         local post_command=""                     
103                                                   
104         cd "${run_dir}"                           
105                                                   
106         if ! which "${QEMU_BINARY}" &> /dev/nu    
107                 cat <<EOF                         
108 Could not find ${QEMU_BINARY}                     
109 Please install qemu or set the QEMU_BINARY env    
110 EOF                                               
111                 exit 1                            
112         fi                                        
113                                                   
114         # alpine (used in post-container requi    
115         export PATH=$PATH:/bin                    
116                                                   
117         if [[ "${debug_shell}" != "yes" ]]        
118         then                                      
119                 touch ${OUTPUT_DIR}/${LOG_FILE    
120                 command="mount bpffs -t bpf /s    
121                 post_command="cat ${OUTPUT_DIR    
122         else                                      
123                 command="mount bpffs -t bpf /s    
124         fi                                        
125                                                   
126         set +e                                    
127         $b2c --command "${command}" \             
128              --kernel ${kernel_bzimage} \         
129              --workdir ${OUTPUT_DIR} \            
130              --image ${CONTAINER_IMAGE}           
131                                                   
132         echo $? > ${OUTPUT_DIR}/${EXIT_STATUS_    
133                                                   
134         set -e                                    
135                                                   
136         ${post_command}                           
137 }                                                 
138                                                   
139 is_rel_path()                                     
140 {                                                 
141         local path="$1"                           
142                                                   
143         [[ ${path:0:1} != "/" ]]                  
144 }                                                 
145                                                   
146 do_update_kconfig()                               
147 {                                                 
148         local kernel_checkout="$1"                
149         local kconfig_file="$2"                   
150                                                   
151         rm -f "$kconfig_file" 2> /dev/null        
152                                                   
153         for config in "${KCONFIG_REL_PATHS[@]}    
154                 local kconfig_src="${config}"     
155                 cat "$kconfig_src" >> "$kconfi    
156         done                                      
157 }                                                 
158                                                   
159 update_kconfig()                                  
160 {                                                 
161         local kernel_checkout="$1"                
162         local kconfig_file="$2"                   
163                                                   
164         if [[ -f "${kconfig_file}" ]]; then       
165                 local local_modified="$(stat -    
166                                                   
167                 for config in "${KCONFIG_REL_P    
168                         local kconfig_src="${c    
169                         local src_modified="$(    
170                         # Only update the conf    
171                         # previously cached co    
172                         # unnecessarily compil    
173                         if [[ "${src_modified}    
174                                 do_update_kcon    
175                                 # Once we have    
176                                 # there is no     
177                                 break             
178                         fi                        
179                 done                              
180         else                                      
181                 do_update_kconfig "$kernel_che    
182         fi                                        
183 }                                                 
184                                                   
185 main()                                            
186 {                                                 
187         local script_dir="$(cd -P -- "$(dirnam    
188         local kernel_checkout=$(realpath "${sc    
189         # By default the script searches for t    
190         # it also obeys environment variables     
191         local kernel_bzimage="${kernel_checkou    
192         local command="${DEFAULT_COMMAND}"        
193         local update_b2c="no"                     
194         local debug_shell="no"                    
195         local build_only="no"                     
196                                                   
197         while getopts ':hsud:j:b' opt; do         
198                 case ${opt} in                    
199                 u)                                
200                         update_b2c="yes"          
201                         ;;                        
202                 d)                                
203                         OUTPUT_DIR="$OPTARG"      
204                         ;;                        
205                 j)                                
206                         NUM_COMPILE_JOBS="$OPT    
207                         ;;                        
208                 s)                                
209                         command="/bin/sh"         
210                         debug_shell="yes"         
211                         ;;                        
212                 b)                                
213                         build_only="yes"          
214                         ;;                        
215                 h)                                
216                         usage                     
217                         exit 0                    
218                         ;;                        
219                 \? )                              
220                         echo "Invalid Option:     
221                         usage                     
222                         exit 1                    
223                         ;;                        
224                 : )                               
225                         echo "Invalid Option:     
226                         usage                     
227                         exit 1                    
228                         ;;                        
229                 esac                              
230         done                                      
231         shift $((OPTIND -1))                      
232                                                   
233         # trap 'catch "$?"' EXIT                  
234         if [[ "${build_only}" == "no" && "${de    
235                 if [[ $# -eq 0 ]]; then           
236                         echo "No command speci    
237                 else                              
238                         command="$@"              
239                                                   
240                         if [[ "${command}" ==     
241                         then                      
242                                 debug_shell="y    
243                         fi                        
244                 fi                                
245         fi                                        
246                                                   
247         local kconfig_file="${OUTPUT_DIR}/late    
248         local make_command="make -j ${NUM_COMP    
249                                                   
250         # Figure out where the kernel is being    
251         # O takes precedence over KBUILD_OUTPU    
252         if [[ "${O:=""}" != "" ]]; then           
253                 if is_rel_path "${O}"; then       
254                         O="$(realpath "${PWD}/    
255                 fi                                
256                 kernel_bzimage="${O}/${BZIMAGE    
257                 make_command="${make_command}     
258         elif [[ "${KBUILD_OUTPUT:=""}" != "" ]    
259                 if is_rel_path "${KBUILD_OUTPU    
260                         KBUILD_OUTPUT="$(realp    
261                 fi                                
262                 kernel_bzimage="${KBUILD_OUTPU    
263                 make_command="${make_command}     
264         fi                                        
265                                                   
266         local b2c="${OUTPUT_DIR}/vm2c.py"         
267                                                   
268         echo "Output directory: ${OUTPUT_DIR}"    
269                                                   
270         mkdir -p "${OUTPUT_DIR}"                  
271         update_kconfig "${kernel_checkout}" "$    
272                                                   
273         recompile_kernel "${kernel_checkout}"     
274         update_selftests "${kernel_checkout}"     
275                                                   
276         if [[ "${build_only}" == "no" ]]; then    
277                 if [[ "${update_b2c}" == "no"     
278                         echo "vm2c script not     
279                         update_b2c="yes"          
280                 fi                                
281                                                   
282                 if [[ "${update_b2c}" == "yes"    
283                         download $B2C_URL $b2c    
284                         chmod +x $b2c             
285                 fi                                
286                                                   
287                 run_vm "${kernel_checkout}" $b    
288                 if [[ "${debug_shell}" != "yes    
289                         echo "Logs saved in ${    
290                 fi                                
291                                                   
292                 exit $(cat ${OUTPUT_DIR}/${EXI    
293         fi                                        
294 }                                                 
295                                                   
296 main "$@"                                         
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php