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 skipUnless 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 85 def test_i386_pc(self): 86 """ 87 :avocado: tags=arch:i386 88 :avocado: tags=machine:pc 89 """ 90 kernel_url = ('https://storage.tuxboot.com/20230331/i386/bzImage') 91 kernel_hash = 'a3e5b32a354729e65910f5a1ffcda7c14a6c12a55e8213fb86e277f1b76ed956' 92 kernel_path = self.fetch_asset(kernel_url, 93 asset_hash=kernel_hash, 94 algorithm = "sha256") 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 # See https://gitlab.com/qemu-project/qemu/-/issues/2094 102 @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test sometimes gets stuck') 103 def test_x86_64_pc(self): 104 """ 105 :avocado: tags=arch:x86_64 106 :avocado: tags=machine:pc 107 :avocado: tags=flaky 108 """ 109 kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora' 110 '/linux/releases/29/Everything/x86_64/os/images/pxeboot' 111 '/vmlinuz') 112 kernel_hash = '23bebd2680757891cf7adedb033532163a792495' 113 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 114 115 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' 116 console_pattern = 'VFS: Cannot open root device' 117 118 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 119 120 def test_mips_malta(self): 121 """ 122 :avocado: tags=arch:mips 123 :avocado: tags=machine:malta 124 :avocado: tags=endian:big 125 """ 126 deb_url = ('http://snapshot.debian.org/archive/debian/' 127 '20130217T032700Z/pool/main/l/linux-2.6/' 128 'linux-image-2.6.32-5-4kc-malta_2.6.32-48_mips.deb') 129 deb_hash = 'a8cfc28ad8f45f54811fc6cf74fc43ffcfe0ba04' 130 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 131 kernel_path = self.extract_from_deb(deb_path, 132 '/boot/vmlinux-2.6.32-5-4kc-malta') 133 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' 134 console_pattern = 'Kernel command line: %s' % kernel_command_line 135 136 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 137 138 def test_mips64el_malta(self): 139 """ 140 This test requires the ar tool to extract "data.tar.gz" from 141 the Debian package. 142 143 The kernel can be rebuilt using this Debian kernel source [1] and 144 following the instructions on [2]. 145 146 [1] http://snapshot.debian.org/package/linux-2.6/2.6.32-48/ 147 #linux-source-2.6.32_2.6.32-48 148 [2] https://kernel-team.pages.debian.net/kernel-handbook/ 149 ch-common-tasks.html#s-common-official 150 151 :avocado: tags=arch:mips64el 152 :avocado: tags=machine:malta 153 """ 154 deb_url = ('http://snapshot.debian.org/archive/debian/' 155 '20130217T032700Z/pool/main/l/linux-2.6/' 156 'linux-image-2.6.32-5-5kc-malta_2.6.32-48_mipsel.deb') 157 deb_hash = '1aaec92083bf22fda31e0d27fa8d9a388e5fc3d5' 158 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 159 kernel_path = self.extract_from_deb(deb_path, 160 '/boot/vmlinux-2.6.32-5-5kc-malta') 161 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' 162 console_pattern = 'Kernel command line: %s' % kernel_command_line 163 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 164 165 def test_aarch64_virt(self): 166 """ 167 :avocado: tags=arch:aarch64 168 :avocado: tags=machine:virt 169 :avocado: tags=cpu:cortex-a53 170 """ 171 kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora' 172 '/linux/releases/29/Everything/aarch64/os/images/pxeboot' 173 '/vmlinuz') 174 kernel_hash = '8c73e469fc6ea06a58dc83a628fc695b693b8493' 175 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 176 177 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 178 'console=ttyAMA0') 179 console_pattern = 'VFS: Cannot open root device' 180 181 self.run_rr(kernel_path, kernel_command_line, console_pattern) 182 183 def test_arm_virt(self): 184 """ 185 :avocado: tags=arch:arm 186 :avocado: tags=machine:virt 187 """ 188 kernel_url = ('https://archives.fedoraproject.org/pub/archive/fedora' 189 '/linux/releases/29/Everything/armhfp/os/images/pxeboot' 190 '/vmlinuz') 191 kernel_hash = 'e9826d741b4fb04cadba8d4824d1ed3b7fb8b4d4' 192 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 193 194 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 195 'console=ttyAMA0') 196 console_pattern = 'VFS: Cannot open root device' 197 198 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=1) 199 200 def test_arm_cubieboard_initrd(self): 201 """ 202 :avocado: tags=arch:arm 203 :avocado: tags=machine:cubieboard 204 """ 205 deb_url = ('https://apt.armbian.com/pool/main/l/' 206 'linux-5.10.16-sunxi/linux-image-current-sunxi_21.02.2_armhf.deb') 207 deb_hash = '9fa84beda245cabf0b4fa84cf6eaa7738ead1da0' 208 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 209 kernel_path = self.extract_from_deb(deb_path, 210 '/boot/vmlinuz-5.10.16-sunxi') 211 dtb_path = '/usr/lib/linux-image-current-sunxi/sun4i-a10-cubieboard.dtb' 212 dtb_path = self.extract_from_deb(deb_path, dtb_path) 213 initrd_url = ('https://github.com/groeck/linux-build-test/raw/' 214 '2eb0a73b5d5a28df3170c546ddaaa9757e1e0848/rootfs/' 215 'arm/rootfs-armv5.cpio.gz') 216 initrd_hash = '2b50f1873e113523967806f4da2afe385462ff9b' 217 initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash) 218 initrd_path = os.path.join(self.workdir, 'rootfs.cpio') 219 archive.gzip_uncompress(initrd_path_gz, initrd_path) 220 221 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 222 'console=ttyS0,115200 ' 223 'usbcore.nousb ' 224 'panic=-1 noreboot') 225 console_pattern = 'Boot successful.' 226 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=1, 227 args=('-dtb', dtb_path, 228 '-initrd', initrd_path, 229 '-no-reboot')) 230 231 def test_s390x_s390_ccw_virtio(self): 232 """ 233 :avocado: tags=arch:s390x 234 :avocado: tags=machine:s390-ccw-virtio 235 """ 236 kernel_url = ('https://archives.fedoraproject.org/pub/archive' 237 '/fedora-secondary/releases/29/Everything/s390x/os/images' 238 '/kernel.img') 239 kernel_hash = 'e8e8439103ef8053418ef062644ffd46a7919313' 240 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 241 242 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=sclp0' 243 console_pattern = 'Kernel command line: %s' % kernel_command_line 244 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=9) 245 246 def test_alpha_clipper(self): 247 """ 248 :avocado: tags=arch:alpha 249 :avocado: tags=machine:clipper 250 """ 251 kernel_url = ('http://archive.debian.org/debian/dists/lenny/main/' 252 'installer-alpha/20090123lenny10/images/cdrom/vmlinuz') 253 kernel_hash = '3a943149335529e2ed3e74d0d787b85fb5671ba3' 254 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 255 256 uncompressed_kernel = archive.uncompress(kernel_path, self.workdir) 257 258 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + 'console=ttyS0' 259 console_pattern = 'Kernel command line: %s' % kernel_command_line 260 self.run_rr(uncompressed_kernel, kernel_command_line, console_pattern, shift=9, 261 args=('-nodefaults', )) 262 263 def test_ppc64_pseries(self): 264 """ 265 :avocado: tags=arch:ppc64 266 :avocado: tags=machine:pseries 267 :avocado: tags=accel:tcg 268 """ 269 kernel_url = ('https://archives.fedoraproject.org/pub/archive' 270 '/fedora-secondary/releases/29/Everything/ppc64le/os' 271 '/ppc/ppc64/vmlinuz') 272 kernel_hash = '3fe04abfc852b66653b8c3c897a59a689270bc77' 273 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 274 275 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + '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_ppc64_powernv(self): 280 """ 281 :avocado: tags=arch:ppc64 282 :avocado: tags=machine:powernv 283 :avocado: tags=accel:tcg 284 """ 285 kernel_url = ('https://archives.fedoraproject.org/pub/archive' 286 '/fedora-secondary/releases/29/Everything/ppc64le/os' 287 '/ppc/ppc64/vmlinuz') 288 kernel_hash = '3fe04abfc852b66653b8c3c897a59a689270bc77' 289 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 290 291 kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE + \ 292 'console=tty0 console=hvc0' 293 console_pattern = 'VFS: Cannot open root device' 294 self.run_rr(kernel_path, kernel_command_line, console_pattern) 295 296 def test_m68k_q800(self): 297 """ 298 :avocado: tags=arch:m68k 299 :avocado: tags=machine:q800 300 """ 301 deb_url = ('https://snapshot.debian.org/archive/debian-ports' 302 '/20191021T083923Z/pool-m68k/main' 303 '/l/linux/kernel-image-5.3.0-1-m68k-di_5.3.7-1_m68k.udeb') 304 deb_hash = '044954bb9be4160a3ce81f8bc1b5e856b75cccd1' 305 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 306 kernel_path = self.extract_from_deb(deb_path, 307 '/boot/vmlinux-5.3.0-1-m68k') 308 309 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 310 'console=ttyS0 vga=off') 311 console_pattern = 'No filesystem could mount root' 312 self.run_rr(kernel_path, kernel_command_line, console_pattern) 313 314 def do_test_advcal_2018(self, file_path, kernel_name, args=None): 315 archive.extract(file_path, self.workdir) 316 317 for entry in os.scandir(self.workdir): 318 if entry.name.startswith('day') and entry.is_dir(): 319 kernel_path = os.path.join(entry.path, kernel_name) 320 break 321 322 kernel_command_line = '' 323 console_pattern = 'QEMU advent calendar' 324 self.run_rr(kernel_path, kernel_command_line, console_pattern, 325 args=args) 326 327 def test_arm_vexpressa9(self): 328 """ 329 :avocado: tags=arch:arm 330 :avocado: tags=machine:vexpress-a9 331 """ 332 tar_hash = '32b7677ce8b6f1471fb0059865f451169934245b' 333 tar_url = ('https://qemu-advcal.gitlab.io' 334 '/qac-best-of-multiarch/download/day16.tar.xz') 335 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 336 dtb_path = self.workdir + '/day16/vexpress-v2p-ca9.dtb' 337 self.do_test_advcal_2018(file_path, 'winter.zImage', 338 args=('-dtb', dtb_path)) 339 340 def test_m68k_mcf5208evb(self): 341 """ 342 :avocado: tags=arch:m68k 343 :avocado: tags=machine:mcf5208evb 344 """ 345 tar_hash = 'ac688fd00561a2b6ce1359f9ff6aa2b98c9a570c' 346 tar_url = ('https://qemu-advcal.gitlab.io' 347 '/qac-best-of-multiarch/download/day07.tar.xz') 348 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 349 self.do_test_advcal_2018(file_path, 'sanity-clause.elf') 350 351 def test_microblaze_s3adsp1800(self): 352 """ 353 :avocado: tags=arch:microblaze 354 :avocado: tags=machine:petalogix-s3adsp1800 355 """ 356 tar_hash = '08bf3e3bfb6b6c7ce1e54ab65d54e189f2caf13f' 357 tar_url = ('https://qemu-advcal.gitlab.io' 358 '/qac-best-of-multiarch/download/day17.tar.xz') 359 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 360 self.do_test_advcal_2018(file_path, 'ballerina.bin') 361 362 def test_ppc64_e500(self): 363 """ 364 :avocado: tags=arch:ppc64 365 :avocado: tags=machine:ppce500 366 :avocado: tags=cpu:e5500 367 """ 368 tar_hash = '6951d86d644b302898da2fd701739c9406527fe1' 369 tar_url = ('https://qemu-advcal.gitlab.io' 370 '/qac-best-of-multiarch/download/day19.tar.xz') 371 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 372 self.do_test_advcal_2018(file_path, 'uImage') 373 374 def test_or1k_sim(self): 375 """ 376 :avocado: tags=arch:or1k 377 :avocado: tags=machine:or1k-sim 378 """ 379 tar_hash = '20334cdaf386108c530ff0badaecc955693027dd' 380 tar_url = ('https://qemu-advcal.gitlab.io' 381 '/qac-best-of-multiarch/download/day20.tar.xz') 382 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 383 self.do_test_advcal_2018(file_path, 'vmlinux') 384 385 def test_nios2_10m50(self): 386 """ 387 :avocado: tags=arch:nios2 388 :avocado: tags=machine:10m50-ghrd 389 """ 390 tar_hash = 'e4251141726c412ac0407c5a6bceefbbff018918' 391 tar_url = ('https://qemu-advcal.gitlab.io' 392 '/qac-best-of-multiarch/download/day14.tar.xz') 393 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 394 self.do_test_advcal_2018(file_path, 'vmlinux.elf') 395 396 def test_ppc_g3beige(self): 397 """ 398 :avocado: tags=arch:ppc 399 :avocado: tags=machine:g3beige 400 """ 401 tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc' 402 tar_url = ('https://qemu-advcal.gitlab.io' 403 '/qac-best-of-multiarch/download/day15.tar.xz') 404 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 405 self.do_test_advcal_2018(file_path, 'invaders.elf', 406 args=('-M', 'graphics=off')) 407 408 def test_ppc_mac99(self): 409 """ 410 :avocado: tags=arch:ppc 411 :avocado: tags=machine:mac99 412 """ 413 tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc' 414 tar_url = ('https://qemu-advcal.gitlab.io' 415 '/qac-best-of-multiarch/download/day15.tar.xz') 416 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 417 self.do_test_advcal_2018(file_path, 'invaders.elf', 418 args=('-M', 'graphics=off')) 419 420 def test_sparc_ss20(self): 421 """ 422 :avocado: tags=arch:sparc 423 :avocado: tags=machine:SS-20 424 """ 425 tar_hash = 'b18550d5d61c7615d989a06edace051017726a9f' 426 tar_url = ('https://qemu-advcal.gitlab.io' 427 '/qac-best-of-multiarch/download/day11.tar.xz') 428 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 429 self.do_test_advcal_2018(file_path, 'zImage.elf') 430 431 def test_xtensa_lx60(self): 432 """ 433 :avocado: tags=arch:xtensa 434 :avocado: tags=machine:lx60 435 :avocado: tags=cpu:dc233c 436 """ 437 tar_hash = '49e88d9933742f0164b60839886c9739cb7a0d34' 438 tar_url = ('https://qemu-advcal.gitlab.io' 439 '/qac-best-of-multiarch/download/day02.tar.xz') 440 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash) 441 self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf') 442 443@skipUnless(os.getenv('AVOCADO_TIMEOUT_EXPECTED'), 'Test might timeout') 444class ReplayKernelSlow(ReplayKernelBase): 445 # Override the timeout, because this kernel includes an inner 446 # loop which is executed with TB recompilings during replay, 447 # making it very slow. 448 timeout = 180 449 450 def test_mips_malta_cpio(self): 451 """ 452 :avocado: tags=arch:mips 453 :avocado: tags=machine:malta 454 :avocado: tags=endian:big 455 :avocado: tags=slowness:high 456 """ 457 deb_url = ('http://snapshot.debian.org/archive/debian/' 458 '20160601T041800Z/pool/main/l/linux/' 459 'linux-image-4.5.0-2-4kc-malta_4.5.5-1_mips.deb') 460 deb_hash = 'a3c84f3e88b54e06107d65a410d1d1e8e0f340f8' 461 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash) 462 kernel_path = self.extract_from_deb(deb_path, 463 '/boot/vmlinux-4.5.0-2-4kc-malta') 464 initrd_url = ('https://github.com/groeck/linux-build-test/raw/' 465 '8584a59ed9e5eb5ee7ca91f6d74bbb06619205b8/rootfs/' 466 'mips/rootfs.cpio.gz') 467 initrd_hash = 'bf806e17009360a866bf537f6de66590de349a99' 468 initrd_path_gz = self.fetch_asset(initrd_url, asset_hash=initrd_hash) 469 initrd_path = self.workdir + "rootfs.cpio" 470 archive.gzip_uncompress(initrd_path_gz, initrd_path) 471 472 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 473 'console=ttyS0 console=tty ' 474 'rdinit=/sbin/init noreboot') 475 console_pattern = 'Boot successful.' 476 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5, 477 args=('-initrd', initrd_path)) 478 479 @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code') 480 def test_mips64el_malta_5KEc_cpio(self): 481 """ 482 :avocado: tags=arch:mips64el 483 :avocado: tags=machine:malta 484 :avocado: tags=endian:little 485 :avocado: tags=slowness:high 486 :avocado: tags=cpu:5KEc 487 """ 488 kernel_url = ('https://github.com/philmd/qemu-testing-blob/' 489 'raw/9ad2df38/mips/malta/mips64el/' 490 'vmlinux-3.19.3.mtoman.20150408') 491 kernel_hash = '00d1d268fb9f7d8beda1de6bebcc46e884d71754' 492 kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 493 initrd_url = ('https://github.com/groeck/linux-build-test/' 494 'raw/8584a59e/rootfs/' 495 'mipsel64/rootfs.mipsel64r1.cpio.gz') 496 initrd_hash = '1dbb8a396e916847325284dbe2151167' 497 initrd_path_gz = self.fetch_asset(initrd_url, algorithm='md5', 498 asset_hash=initrd_hash) 499 initrd_path = self.workdir + "rootfs.cpio" 500 archive.gzip_uncompress(initrd_path_gz, initrd_path) 501 502 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 503 'console=ttyS0 console=tty ' 504 'rdinit=/sbin/init noreboot') 505 console_pattern = 'Boot successful.' 506 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5, 507 args=('-initrd', initrd_path)) 508 509 def do_test_mips_malta32el_nanomips(self, kernel_path_xz): 510 kernel_path = self.workdir + "kernel" 511 with lzma.open(kernel_path_xz, 'rb') as f_in: 512 with open(kernel_path, 'wb') as f_out: 513 shutil.copyfileobj(f_in, f_out) 514 515 kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE + 516 'mem=256m@@0x0 ' 517 'console=ttyS0') 518 console_pattern = 'Kernel command line: %s' % kernel_command_line 519 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5) 520 521 def test_mips_malta32el_nanomips_4k(self): 522 """ 523 :avocado: tags=arch:mipsel 524 :avocado: tags=machine:malta 525 :avocado: tags=endian:little 526 :avocado: tags=cpu:I7200 527 """ 528 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 529 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 530 'generic_nano32r6el_page4k.xz') 531 kernel_hash = '477456aafd2a0f1ddc9482727f20fe9575565dd6' 532 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 533 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 534 535 def test_mips_malta32el_nanomips_16k_up(self): 536 """ 537 :avocado: tags=arch:mipsel 538 :avocado: tags=machine:malta 539 :avocado: tags=endian:little 540 :avocado: tags=cpu:I7200 541 """ 542 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 543 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 544 'generic_nano32r6el_page16k_up.xz') 545 kernel_hash = 'e882868f944c71c816e832e2303b7874d044a7bc' 546 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 547 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 548 549 def test_mips_malta32el_nanomips_64k_dbg(self): 550 """ 551 :avocado: tags=arch:mipsel 552 :avocado: tags=machine:malta 553 :avocado: tags=endian:little 554 :avocado: tags=cpu:I7200 555 """ 556 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/' 557 'kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/' 558 'generic_nano32r6el_page64k_dbg.xz') 559 kernel_hash = '18d1c68f2e23429e266ca39ba5349ccd0aeb7180' 560 kernel_path_xz = self.fetch_asset(kernel_url, asset_hash=kernel_hash) 561 self.do_test_mips_malta32el_nanomips(kernel_path_xz) 562