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_ppc64_powernv(self): 263 """ 264 :avocado: tags=arch:ppc64 265 :avocado: tags=machine:powernv 266 :avocado: tags=accel:tcg 267 """ 268 kernel_url = ('https://archives.fedoraproject.org/pub/archive' 269 '/fedora-secondary/releases/29/Everything/ppc64le/os' 270 '/ppc/ppc64/vmlinuz') 271 kernel_hash = '3fe04abfc852b66653b8c3c897a59a689270bc77' 272 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 273 274 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + \ 275 'console=tty0 console=hvc0' 276 console_pattern = 'VFS: Cannot open root device' 277 self.run_rr(kernel_path, kernel_command_line, console_pattern) 278 279 def test_m68k_q800(self): 280 """ 281 :avocado: tags=arch:m68k 282 :avocado: tags=machine:q800 283 """ 284 deb_url = ('https://snapshot.debian.org/archive/debian-ports' 285 '/20191021T083923Z/pool-m68k/main' 286 '/l/linux/kernel-image-5.3.0-1-m68k-di_5.3.7-1_m68k.udeb') 287 deb_hash = '044954bb9be4160a3ce81f8bc1b5e856b75cccd1' 288 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 289 kernel_path = self.extract_from_deb(deb_path, 290 '/boot/vmlinux-5.3.0-1-m68k') 291 292 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 293 'console=ttyS0 vga=off') 294 console_pattern = 'No filesystem could mount root' 295 self.run_rr(kernel_path, kernel_command_line, console_pattern) 296 297 def do_test_advcal_2018(self, file_path, kernel_name, args=None): 298 archive.extract(file_path, self.workdir) 299 300 for entry in os.scandir(self.workdir): 301 if entry.name.startswith('day') and entry.is_dir(): 302 kernel_path = os.path.join(entry.path, kernel_name) 303 break 304 305 kernel_command_line = '' 306 console_pattern = 'QEMU advent calendar' 307 self.run_rr(kernel_path, kernel_command_line, console_pattern, 308 args=args) 309 310 def test_arm_vexpressa9(self): 311 """ 312 :avocado: tags=arch:arm 313 :avocado: tags=machine:vexpress-a9 314 """ 315 tar_hash = '32b7677ce8b6f1471fb0059865f451169934245b' 316 tar_url = ('https://qemu-advcal.gitlab.io' 317 '/qac-best-of-multiarch/download/day16.tar.xz') 318 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 319 dtb_path = self.workdir + '/day16/vexpress-v2p-ca9.dtb' 320 self.do_test_advcal_2018(file_path, 'winter.zImage', 321 args=('-dtb', dtb_path)) 322 323 def test_m68k_mcf5208evb(self): 324 """ 325 :avocado: tags=arch:m68k 326 :avocado: tags=machine:mcf5208evb 327 """ 328 tar_hash = 'ac688fd00561a2b6ce1359f9ff6aa2b98c9a570c' 329 tar_url = ('https://qemu-advcal.gitlab.io' 330 '/qac-best-of-multiarch/download/day07.tar.xz') 331 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 332 self.do_test_advcal_2018(file_path, 'sanity-clause.elf') 333 334 @skip("Test currently broken") # Console stuck as of 5.2-rc1 335 def test_microblaze_s3adsp1800(self): 336 """ 337 :avocado: tags=arch:microblaze 338 :avocado: tags=machine:petalogix-s3adsp1800 339 """ 340 tar_hash = '08bf3e3bfb6b6c7ce1e54ab65d54e189f2caf13f' 341 tar_url = ('https://qemu-advcal.gitlab.io' 342 '/qac-best-of-multiarch/download/day17.tar.xz') 343 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 344 self.do_test_advcal_2018(file_path, 'ballerina.bin') 345 346 def test_ppc64_e500(self): 347 """ 348 :avocado: tags=arch:ppc64 349 :avocado: tags=machine:ppce500 350 :avocado: tags=cpu:e5500 351 """ 352 tar_hash = '6951d86d644b302898da2fd701739c9406527fe1' 353 tar_url = ('https://qemu-advcal.gitlab.io' 354 '/qac-best-of-multiarch/download/day19.tar.xz') 355 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 356 self.do_test_advcal_2018(file_path, 'uImage') 357 358 def test_or1k_sim(self): 359 """ 360 :avocado: tags=arch:or1k 361 :avocado: tags=machine:or1k-sim 362 """ 363 tar_hash = '20334cdaf386108c530ff0badaecc955693027dd' 364 tar_url = ('https://qemu-advcal.gitlab.io' 365 '/qac-best-of-multiarch/download/day20.tar.xz') 366 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 367 self.do_test_advcal_2018(file_path, 'vmlinux') 368 369 @skip("nios2 emulation is buggy under record/replay") 370 def test_nios2_10m50(self): 371 """ 372 :avocado: tags=arch:nios2 373 :avocado: tags=machine:10m50-ghrd 374 """ 375 tar_hash = 'e4251141726c412ac0407c5a6bceefbbff018918' 376 tar_url = ('https://qemu-advcal.gitlab.io' 377 '/qac-best-of-multiarch/download/day14.tar.xz') 378 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 379 self.do_test_advcal_2018(file_path, 'vmlinux.elf') 380 381 def test_ppc_g3beige(self): 382 """ 383 :avocado: tags=arch:ppc 384 :avocado: tags=machine:g3beige 385 """ 386 tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc' 387 tar_url = ('https://qemu-advcal.gitlab.io' 388 '/qac-best-of-multiarch/download/day15.tar.xz') 389 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 390 self.do_test_advcal_2018(file_path, 'invaders.elf', 391 args=('-M', 'graphics=off')) 392 393 def test_ppc_mac99(self): 394 """ 395 :avocado: tags=arch:ppc 396 :avocado: tags=machine:mac99 397 """ 398 tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc' 399 tar_url = ('https://qemu-advcal.gitlab.io' 400 '/qac-best-of-multiarch/download/day15.tar.xz') 401 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 402 self.do_test_advcal_2018(file_path, 'invaders.elf', 403 args=('-M', 'graphics=off')) 404 405 def test_sparc_ss20(self): 406 """ 407 :avocado: tags=arch:sparc 408 :avocado: tags=machine:SS-20 409 """ 410 tar_hash = 'b18550d5d61c7615d989a06edace051017726a9f' 411 tar_url = ('https://qemu-advcal.gitlab.io' 412 '/qac-best-of-multiarch/download/day11.tar.xz') 413 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 414 self.do_test_advcal_2018(file_path, 'zImage.elf') 415 416 def test_xtensa_lx60(self): 417 """ 418 :avocado: tags=arch:xtensa 419 :avocado: tags=machine:lx60 420 :avocado: tags=cpu:dc233c 421 """ 422 tar_hash = '49e88d9933742f0164b60839886c9739cb7a0d34' 423 tar_url = ('https://qemu-advcal.gitlab.io' 424 '/qac-best-of-multiarch/download/day02.tar.xz') 425 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 426 self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf') 427 428@skipUnless(os.getenv('AVOCADO_TIMEOUT_EXPECTED'), 'Test might timeout') 429class ReplayKernelSlow(ReplayKernelBase): 430 # Override the timeout, because this kernel includes an inner 431 # loop which is executed with TB recompilings during replay, 432 # making it very slow. 433 timeout = 180 434 435 def test_mips_malta_cpio(self): 436 """ 437 :avocado: tags=arch:mips 438 :avocado: tags=machine:malta 439 :avocado: tags=endian:big 440 :avocado: tags=slowness:high 441 """ 442 deb_url = ('http://snapshot.debian.org/archive/debian/' 443 '20160601T041800Z/pool/main/l/linux/' 444 'linux-image-4.5.0-2-4kc-malta_4.5.5-1_mips.deb') 445 deb_hash = 'a3c84f3e88b54e06107d65a410d1d1e8e0f340f8' 446 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 447 kernel_path = self.extract_from_deb(deb_path, 448 '/boot/vmlinux-4.5.0-2-4kc-malta') 449 initrd_url = ('https://github.com/groeck/linux-build-test/raw/' 450 '8584a59ed9e5eb5ee7ca91f6d74bbb06619205b8/rootfs/' 451 'mips/rootfs.cpio.gz') 452 initrd_hash = 'bf806e17009360a866bf537f6de66590de349a99' 453 initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash) 454 initrd_path = self.workdir + "rootfs.cpio" 455 archive.gzip_uncompress(initrd_path_gz, initrd_path) 456 457 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 458 'console=ttyS0 console=tty ' 459 'rdinit=/sbin/init noreboot') 460 console_pattern = 'Boot successful.' 461 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5, 462 args=('-initrd', initrd_path)) 463 464 @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') 465 def test_mips64el_malta_5KEc_cpio(self): 466 """ 467 :avocado: tags=arch:mips64el 468 :avocado: tags=machine:malta 469 :avocado: tags=endian:little 470 :avocado: tags=slowness:high 471 :avocado: tags=cpu:5KEc 472 """ 473 kernel_url = ('https://github.com/philmd/qemu-testing-blob/' 474 'raw/9ad2df38/mips/malta/mips64el/' 475 'vmlinux-3.19.3.mtoman.20150408') 476 kernel_hash = '00d1d268fb9f7d8beda1de6bebcc46e884d71754' 477 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 478 initrd_url = ('https://github.com/groeck/linux-build-test/' 479 'raw/8584a59e/rootfs/' 480 'mipsel64/rootfs.mipsel64r1.cpio.gz') 481 initrd_hash = '1dbb8a396e916847325284dbe2151167' 482 initrd_path_gz = self.fetch_asset(initrd_url, algorithm='md5', 483 asset_hash=initrd_hash) 484 initrd_path = self.workdir + "rootfs.cpio" 485 archive.gzip_uncompress(initrd_path_gz, initrd_path) 486 487 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 488 'console=ttyS0 console=tty ' 489 'rdinit=/sbin/init noreboot') 490 console_pattern = 'Boot successful.' 491 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5, 492 args=('-initrd', initrd_path)) 493 494 def do_test_mips_malta32el_nanomips(self, kernel_path_xz): 495 kernel_path = self.workdir + "kernel" 496 with lzma.open(kernel_path_xz, 'rb') as f_in: 497 with open(kernel_path, 'wb') as f_out: 498 shutil.copyfileobj(f_in, f_out) 499 500 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 501 'mem=256m@@0x0 ' 502 'console=ttyS0') 503 console_pattern = 'Kernel command line: %s' % kernel_command_line 504 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 505 506 def test_mips_malta32el_nanomips_4k(self): 507 """ 508 :avocado: tags=arch:mipsel 509 :avocado: tags=machine:malta 510 :avocado: tags=endian:little 511 :avocado: tags=cpu:I7200 512 """ 513 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 514 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 515 'generic_nano32r6el_page4k.xz') 516 kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6' 517 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 518 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 519 520 def test_mips_malta32el_nanomips_16k_up(self): 521 """ 522 :avocado: tags=arch:mipsel 523 :avocado: tags=machine:malta 524 :avocado: tags=endian:little 525 :avocado: tags=cpu:I7200 526 """ 527 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 528 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 529 'generic_nano32r6el_page16k_up.xz') 530 kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc' 531 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 532 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 533 534 def test_mips_malta32el_nanomips_64k_dbg(self): 535 """ 536 :avocado: tags=arch:mipsel 537 :avocado: tags=machine:malta 538 :avocado: tags=endian:little 539 :avocado: tags=cpu:I7200 540 """ 541 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 542 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 543 'generic_nano32r6el_page64k_dbg.xz') 544 kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180' 545 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 546 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 547