1# Record/replay test that boots a Linux kernel 2# 3# Copyright (c) 2020 ISP RAS 4# 5# Author: 6# Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru> 7# 8# This work is licensed under the terms of the GNU GPL, version 2 or 9# later. See the COPYING file in the top-level directory. 10 11import os 12import lzma 13import shutil 14import logging 15import time 16 17from avocado import skip 18from avocado import skipIf 19from avocado import skipUnless 20from avocado_qemu import wait_for_console_pattern 21from avocado.utils import archive 22from avocado.utils import process 23from boot_linux_console import LinuxKernelTest 24 25class ReplayKernelBase(LinuxKernelTest): 26 """ 27 Boots a Linux kernel in record mode and checks that the console 28 is operational and the kernel command line is properly passed 29 from QEMU to the kernel. 30 Then replays the same scenario and verifies, that QEMU correctly 31 terminates. 32 """ 33 34 timeout = 120 35 KERNEL_COMMON_COMMAND_LINE = 'printk.time=1 panic=-1 ' 36 37 def run_vm(self, kernel_path, kernel_command_line, console_pattern, 38 record, shift, args, replay_path): 39 # icount requires TCG to be available 40 self.require_accelerator('tcg') 41 42 logger = logging.getLogger('replay') 43 start_time = time.time() 44 vm = self.get_vm() 45 vm.set_console() 46 if record: 47 logger.info('recording the execution...') 48 mode = 'record' 49 else: 50 logger.info('replaying the execution...') 51 mode = 'replay' 52 vm.add_args('-icount', 'shift=%s,rr=%s,rrfile=%s' % 53 (shift, mode, replay_path), 54 '-kernel', kernel_path, 55 '-append', kernel_command_line, 56 '-net', 'none', 57 '-no-reboot') 58 if args: 59 vm.add_args(*args) 60 vm.launch() 61 self.wait_for_console_pattern(console_pattern, vm) 62 if record: 63 vm.shutdown() 64 logger.info('finished the recording with log size %s bytes' 65 % os.path.getsize(replay_path)) 66 else: 67 vm.wait() 68 logger.info('successfully finished the replay') 69 elapsed = time.time() - start_time 70 logger.info('elapsed time %.2f sec' % elapsed) 71 return elapsed 72 73 def run_rr(self, kernel_path, kernel_command_line, console_pattern, 74 shift=7, args=None): 75 replay_path = os.path.join(self.workdir, 'replay.bin') 76 t1 = self.run_vm(kernel_path, kernel_command_line, console_pattern, 77 True, shift, args, replay_path) 78 t2 = self.run_vm(kernel_path, kernel_command_line, console_pattern, 79 False, shift, args, replay_path) 80 logger = logging.getLogger('replay') 81 logger.info('replay overhead {:.2%}'.format(t2 / t1 - 1)) 82 83class ReplayKernelNormal(ReplayKernelBase): 84 @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab') 85 def test_x86_64_pc(self): 86 """ 87 :avocado: tags=arch:x86_64 88 :avocado: tags=machine:pc 89 """ 90 kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora' 91 '/linux/releases/29/Everything/x86_64/os/images/pxeboot' 92 '/vmlinuz') 93 kernel_hash = '23bebd2680757891cf7adedb033532163a792495' 94 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 95 96 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' 97 console_pattern = 'VFS: Cannot open root device' 98 99 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 100 101 def test_mips_malta(self): 102 """ 103 :avocado: tags=arch:mips 104 :avocado: tags=machine:malta 105 :avocado: tags=endian:big 106 """ 107 deb_url = ('http://snapshot.debian.org/archive/debian/' 108 '20130217T032700Z/pool/main/l/linux-2.6/' 109 'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb') 110 deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04' 111 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 112 kernel_path = self.extract_from_deb(deb_path, 113 '/boot/vmlinux-2.6.32-5-4kc-malta') 114 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' 115 console_pattern = 'Kernel command line: %s' % kernel_command_line 116 117 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 118 119 def test_mips64el_malta(self): 120 """ 121 This test requires the ar tool to extract "data.tar.gz" from 122 the Debian package. 123 124 The kernel can be rebuilt using this Debian kernel source [1] and 125 following the instructions on [2]. 126 127 [1] http://snapshot.debian.org/package/linux-2.6/2.6.32-48/ 128 #linux-source-2.6.32_2.6.32-48 129 [2] https://kernel-team.pages.debian.net/kernel-handbook/ 130 ch-common-tasks.html#s-common-official 131 132 :avocado: tags=arch:mips64el 133 :avocado: tags=machine:malta 134 """ 135 deb_url = ('http://snapshot.debian.org/archive/debian/' 136 '20130217T032700Z/pool/main/l/linux-2.6/' 137 'linux-image-2.6.32-5-5kc-malta_2.6.32-48_mipsel.deb') 138 deb_hash = '1aaec92083bf22fda31e0d27fa8d9a388e5fc3d5' 139 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 140 kernel_path = self.extract_from_deb(deb_path, 141 '/boot/vmlinux-2.6.32-5-5kc-malta') 142 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' 143 console_pattern = 'Kernel command line: %s' % kernel_command_line 144 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 145 146 def test_aarch64_virt(self): 147 """ 148 :avocado: tags=arch:aarch64 149 :avocado: tags=machine:virt 150 :avocado: tags=cpu:cortex-a53 151 """ 152 kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora' 153 '/linux/releases/29/Everything/aarch64/os/images/pxeboot' 154 '/vmlinuz') 155 kernel_hash = '8c73e469fc6ea06a58dc83a628fc695b693b8493' 156 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 157 158 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 159 'console=ttyAMA0') 160 console_pattern = 'VFS: Cannot open root device' 161 162 self.run_rr(kernel_path, kernel_command_line, console_pattern) 163 164 def test_arm_virt(self): 165 """ 166 :avocado: tags=arch:arm 167 :avocado: tags=machine:virt 168 """ 169 kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora' 170 '/linux/releases/29/Everything/armhfp/os/images/pxeboot' 171 '/vmlinuz') 172 kernel_hash = 'e9826d741b4fb04cadba8d4824d1ed3b7fb8b4d4' 173 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 174 175 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 176 'console=ttyAMA0') 177 console_pattern = 'VFS: Cannot open root device' 178 179 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=1) 180 181 @skipIf(os.getenv('GITLAB_CI'), 'Running on GitLab') 182 def test_arm_cubieboard_initrd(self): 183 """ 184 :avocado: tags=arch:arm 185 :avocado: tags=machine:cubieboard 186 """ 187 deb_url = ('https://apt.armbian.com/pool/main/l/' 188 'linux-5.10.16-sunxi/linux-image-current-sunxi_21.02.2_armhf.deb') 189 deb_hash = '9fa84beda245cabf0b4fa84cf6eaa7738ead1da0' 190 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 191 kernel_path = self.extract_from_deb(deb_path, 192 '/boot/vmlinuz-5.10.16-sunxi') 193 dtb_path = '/usr/lib/linux-image-current-sunxi/sun4i-a10-cubieboard.dtb' 194 dtb_path = self.extract_from_deb(deb_path, dtb_path) 195 initrd_url = ('https://github.com/groeck/linux-build-test/raw/' 196 '2eb0a73b5d5a28df3170c546ddaaa9757e1e0848/rootfs/' 197 'arm/rootfs-armv5.cpio.gz') 198 initrd_hash = '2b50f1873e113523967806f4da2afe385462ff9b' 199 initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash) 200 initrd_path = os.path.join(self.workdir, 'rootfs.cpio') 201 archive.gzip_uncompress(initrd_path_gz, initrd_path) 202 203 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 204 'console=ttyS0,115200 ' 205 'usbcore.nousb ' 206 'panic=-1 noreboot') 207 console_pattern = 'Boot successful.' 208 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=1, 209 args=('-dtb', dtb_path, 210 '-initrd', initrd_path, 211 '-no-reboot')) 212 213 def test_s390x_s390_ccw_virtio(self): 214 """ 215 :avocado: tags=arch:s390x 216 :avocado: tags=machine:s390-ccw-virtio 217 """ 218 kernel_url = ('https://archives.fedoraproject.org/pub/archive' 219 '/fedora-secondary/releases/29/Everything/s390x/os/images' 220 '/kernel.img') 221 kernel_hash = 'e8e8439103ef8053418ef062644ffd46a7919313' 222 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 223 224 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=sclp0' 225 console_pattern = 'Kernel command line: %s' % kernel_command_line 226 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=9) 227 228 def test_alpha_clipper(self): 229 """ 230 :avocado: tags=arch:alpha 231 :avocado: tags=machine:clipper 232 """ 233 kernel_url = ('http://archive.debian.org/debian/dists/lenny/main/' 234 'installer-alpha/20090123lenny10/images/cdrom/vmlinuz') 235 kernel_hash = '3a943149335529e2ed3e74d0d787b85fb5671ba3' 236 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 237 238 uncompressed_kernel = archive.uncompress(kernel_path, self.workdir) 239 240 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' 241 console_pattern = 'Kernel command line: %s' % kernel_command_line 242 self.run_rr(uncompressed_kernel, kernel_command_line, console_pattern, shift=9, 243 args=('-nodefaults', )) 244 245 def test_ppc64_pseries(self): 246 """ 247 :avocado: tags=arch:ppc64 248 :avocado: tags=machine:pseries 249 :avocado: tags=accel:tcg 250 """ 251 kernel_url = ('https://archives.fedoraproject.org/pub/archive' 252 '/fedora-secondary/releases/29/Everything/ppc64le/os' 253 '/ppc/ppc64/vmlinuz') 254 kernel_hash = '3fe04abfc852b66653b8c3c897a59a689270bc77' 255 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 256 257 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=hvc0' 258 # icount is not good enough for PPC64 for complete boot yet 259 console_pattern = 'Kernel command line: %s' % kernel_command_line 260 self.run_rr(kernel_path, kernel_command_line, console_pattern) 261 262 def test_m68k_q800(self): 263 """ 264 :avocado: tags=arch:m68k 265 :avocado: tags=machine:q800 266 """ 267 deb_url = ('https://snapshot.debian.org/archive/debian-ports' 268 '/20191021T083923Z/pool-m68k/main' 269 '/l/linux/kernel-image-5.3.0-1-m68k-di_5.3.7-1_m68k.udeb') 270 deb_hash = '044954bb9be4160a3ce81f8bc1b5e856b75cccd1' 271 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 272 kernel_path = self.extract_from_deb(deb_path, 273 '/boot/vmlinux-5.3.0-1-m68k') 274 275 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 276 'console=ttyS0 vga=off') 277 console_pattern = 'No filesystem could mount root' 278 self.run_rr(kernel_path, kernel_command_line, console_pattern) 279 280 def do_test_advcal_2018(self, file_path, kernel_name, args=None): 281 archive.extract(file_path, self.workdir) 282 283 for entry in os.scandir(self.workdir): 284 if entry.name.startswith('day') and entry.is_dir(): 285 kernel_path = os.path.join(entry.path, kernel_name) 286 break 287 288 kernel_command_line = '' 289 console_pattern = 'QEMU advent calendar' 290 self.run_rr(kernel_path, kernel_command_line, console_pattern, 291 args=args) 292 293 def test_arm_vexpressa9(self): 294 """ 295 :avocado: tags=arch:arm 296 :avocado: tags=machine:vexpress-a9 297 """ 298 tar_hash = '32b7677ce8b6f1471fb0059865f451169934245b' 299 tar_url = ('https://qemu-advcal.gitlab.io' 300 '/qac-best-of-multiarch/download/day16.tar.xz') 301 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 302 dtb_path = self.workdir + '/day16/vexpress-v2p-ca9.dtb' 303 self.do_test_advcal_2018(file_path, 'winter.zImage', 304 args=('-dtb', dtb_path)) 305 306 def test_m68k_mcf5208evb(self): 307 """ 308 :avocado: tags=arch:m68k 309 :avocado: tags=machine:mcf5208evb 310 """ 311 tar_hash = 'ac688fd00561a2b6ce1359f9ff6aa2b98c9a570c' 312 tar_url = ('https://qemu-advcal.gitlab.io' 313 '/qac-best-of-multiarch/download/day07.tar.xz') 314 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 315 self.do_test_advcal_2018(file_path, 'sanity-clause.elf') 316 317 @skip("Test currently broken") # Console stuck as of 5.2-rc1 318 def test_microblaze_s3adsp1800(self): 319 """ 320 :avocado: tags=arch:microblaze 321 :avocado: tags=machine:petalogix-s3adsp1800 322 """ 323 tar_hash = '08bf3e3bfb6b6c7ce1e54ab65d54e189f2caf13f' 324 tar_url = ('https://qemu-advcal.gitlab.io' 325 '/qac-best-of-multiarch/download/day17.tar.xz') 326 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 327 self.do_test_advcal_2018(file_path, 'ballerina.bin') 328 329 def test_ppc64_e500(self): 330 """ 331 :avocado: tags=arch:ppc64 332 :avocado: tags=machine:ppce500 333 :avocado: tags=cpu:e5500 334 """ 335 tar_hash = '6951d86d644b302898da2fd701739c9406527fe1' 336 tar_url = ('https://qemu-advcal.gitlab.io' 337 '/qac-best-of-multiarch/download/day19.tar.xz') 338 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 339 self.do_test_advcal_2018(file_path, 'uImage') 340 341 def test_or1k_sim(self): 342 """ 343 :avocado: tags=arch:or1k 344 :avocado: tags=machine:or1k-sim 345 """ 346 tar_hash = '20334cdaf386108c530ff0badaecc955693027dd' 347 tar_url = ('https://qemu-advcal.gitlab.io' 348 '/qac-best-of-multiarch/download/day20.tar.xz') 349 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 350 self.do_test_advcal_2018(file_path, 'vmlinux') 351 352 @skip("nios2 emulation is buggy under record/replay") 353 def test_nios2_10m50(self): 354 """ 355 :avocado: tags=arch:nios2 356 :avocado: tags=machine:10m50-ghrd 357 """ 358 tar_hash = 'e4251141726c412ac0407c5a6bceefbbff018918' 359 tar_url = ('https://qemu-advcal.gitlab.io' 360 '/qac-best-of-multiarch/download/day14.tar.xz') 361 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 362 self.do_test_advcal_2018(file_path, 'vmlinux.elf') 363 364 def test_ppc_g3beige(self): 365 """ 366 :avocado: tags=arch:ppc 367 :avocado: tags=machine:g3beige 368 """ 369 tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc' 370 tar_url = ('https://qemu-advcal.gitlab.io' 371 '/qac-best-of-multiarch/download/day15.tar.xz') 372 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 373 self.do_test_advcal_2018(file_path, 'invaders.elf', 374 args=('-M', 'graphics=off')) 375 376 def test_ppc_mac99(self): 377 """ 378 :avocado: tags=arch:ppc 379 :avocado: tags=machine:mac99 380 """ 381 tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc' 382 tar_url = ('https://qemu-advcal.gitlab.io' 383 '/qac-best-of-multiarch/download/day15.tar.xz') 384 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 385 self.do_test_advcal_2018(file_path, 'invaders.elf', 386 args=('-M', 'graphics=off')) 387 388 def test_sparc_ss20(self): 389 """ 390 :avocado: tags=arch:sparc 391 :avocado: tags=machine:SS-20 392 """ 393 tar_hash = 'b18550d5d61c7615d989a06edace051017726a9f' 394 tar_url = ('https://qemu-advcal.gitlab.io' 395 '/qac-best-of-multiarch/download/day11.tar.xz') 396 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 397 self.do_test_advcal_2018(file_path, 'zImage.elf') 398 399 def test_xtensa_lx60(self): 400 """ 401 :avocado: tags=arch:xtensa 402 :avocado: tags=machine:lx60 403 :avocado: tags=cpu:dc233c 404 """ 405 tar_hash = '49e88d9933742f0164b60839886c9739cb7a0d34' 406 tar_url = ('https://qemu-advcal.gitlab.io' 407 '/qac-best-of-multiarch/download/day02.tar.xz') 408 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 409 self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf') 410 411@skipUnless(os.getenv('AVOCADO_TIMEOUT_EXPECTED'), 'Test might timeout') 412class ReplayKernelSlow(ReplayKernelBase): 413 # Override the timeout, because this kernel includes an inner 414 # loop which is executed with TB recompilings during replay, 415 # making it very slow. 416 timeout = 180 417 418 def test_mips_malta_cpio(self): 419 """ 420 :avocado: tags=arch:mips 421 :avocado: tags=machine:malta 422 :avocado: tags=endian:big 423 :avocado: tags=slowness:high 424 """ 425 deb_url = ('http://snapshot.debian.org/archive/debian/' 426 '20160601T041800Z/pool/main/l/linux/' 427 'linux-image-4.5.0-2-4kc-malta_4.5.5-1_mips.deb') 428 deb_hash = 'a3c84f3e88b54e06107d65a410d1d1e8e0f340f8' 429 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 430 kernel_path = self.extract_from_deb(deb_path, 431 '/boot/vmlinux-4.5.0-2-4kc-malta') 432 initrd_url = ('https://github.com/groeck/linux-build-test/raw/' 433 '8584a59ed9e5eb5ee7ca91f6d74bbb06619205b8/rootfs/' 434 'mips/rootfs.cpio.gz') 435 initrd_hash = 'bf806e17009360a866bf537f6de66590de349a99' 436 initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash) 437 initrd_path = self.workdir + "rootfs.cpio" 438 archive.gzip_uncompress(initrd_path_gz, initrd_path) 439 440 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 441 'console=ttyS0 console=tty ' 442 'rdinit=/sbin/init noreboot') 443 console_pattern = 'Boot successful.' 444 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5, 445 args=('-initrd', initrd_path)) 446 447 @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') 448 def test_mips64el_malta_5KEc_cpio(self): 449 """ 450 :avocado: tags=arch:mips64el 451 :avocado: tags=machine:malta 452 :avocado: tags=endian:little 453 :avocado: tags=slowness:high 454 :avocado: tags=cpu:5KEc 455 """ 456 kernel_url = ('https://github.com/philmd/qemu-testing-blob/' 457 'raw/9ad2df38/mips/malta/mips64el/' 458 'vmlinux-3.19.3.mtoman.20150408') 459 kernel_hash = '00d1d268fb9f7d8beda1de6bebcc46e884d71754' 460 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 461 initrd_url = ('https://github.com/groeck/linux-build-test/' 462 'raw/8584a59e/rootfs/' 463 'mipsel64/rootfs.mipsel64r1.cpio.gz') 464 initrd_hash = '1dbb8a396e916847325284dbe2151167' 465 initrd_path_gz = self.fetch_asset(initrd_url, algorithm='md5', 466 asset_hash=initrd_hash) 467 initrd_path = self.workdir + "rootfs.cpio" 468 archive.gzip_uncompress(initrd_path_gz, initrd_path) 469 470 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 471 'console=ttyS0 console=tty ' 472 'rdinit=/sbin/init noreboot') 473 console_pattern = 'Boot successful.' 474 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5, 475 args=('-initrd', initrd_path)) 476 477 def do_test_mips_malta32el_nanomips(self, kernel_path_xz): 478 kernel_path = self.workdir + "kernel" 479 with lzma.open(kernel_path_xz, 'rb') as f_in: 480 with open(kernel_path, 'wb') as f_out: 481 shutil.copyfileobj(f_in, f_out) 482 483 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 484 'mem=256m@@0x0 ' 485 'console=ttyS0') 486 console_pattern = 'Kernel command line: %s' % kernel_command_line 487 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 488 489 def test_mips_malta32el_nanomips_4k(self): 490 """ 491 :avocado: tags=arch:mipsel 492 :avocado: tags=machine:malta 493 :avocado: tags=endian:little 494 :avocado: tags=cpu:I7200 495 """ 496 kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/' 497 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 498 'generic_nano32r6el_page4k.xz') 499 kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6' 500 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 501 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 502 503 def test_mips_malta32el_nanomips_16k_up(self): 504 """ 505 :avocado: tags=arch:mipsel 506 :avocado: tags=machine:malta 507 :avocado: tags=endian:little 508 :avocado: tags=cpu:I7200 509 """ 510 kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/' 511 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 512 'generic_nano32r6el_page16k_up.xz') 513 kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc' 514 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 515 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 516 517 def test_mips_malta32el_nanomips_64k_dbg(self): 518 """ 519 :avocado: tags=arch:mipsel 520 :avocado: tags=machine:malta 521 :avocado: tags=endian:little 522 :avocado: tags=cpu:I7200 523 """ 524 kernel_url = ('https://mipsdistros.mips.com/LinuxDistro/nanomips/' 525 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 526 'generic_nano32r6el_page64k_dbg.xz') 527 kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180' 528 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 529 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 530