]> git.proxmox.com Git - mirror_qemu.git/blame - tests/avocado/replay_kernel.py
tests/avocado/machine_aspeed.py: Update buildroot images to 2023.11
[mirror_qemu.git] / tests / avocado / replay_kernel.py
CommitLineData
c7ebab0f
PD
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
1d2ff14b
PD
12import lzma
13import shutil
c7ebab0f
PD
14import logging
15import time
16
b48580ad 17from avocado import skip
9b45cc99 18from avocado import skipUnless
a58bf4b3 19from avocado import skipUnless
c7ebab0f
PD
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
1d2ff14b 25class ReplayKernelBase(LinuxKernelTest):
c7ebab0f
PD
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
36a7ab5f 34 timeout = 120
c7ebab0f
PD
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):
89b65e30
DHB
39 # icount requires TCG to be available
40 self.require_accelerator('tcg')
41
c7ebab0f
PD
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))
904be130 82
1d2ff14b 83class ReplayKernelNormal(ReplayKernelBase):
3365f3d9 84
940f70cc
AB
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
139db3cc
AB
101 # See https://gitlab.com/qemu-project/qemu/-/issues/2094
102 @skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test sometimes gets stuck')
904be130
PD
103 def test_x86_64_pc(self):
104 """
105 :avocado: tags=arch:x86_64
106 :avocado: tags=machine:pc
139db3cc 107 :avocado: tags=flaky
904be130
PD
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)
152a41b7 119
1d2ff14b
PD
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
152a41b7
PD
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
d377ba48 181 self.run_rr(kernel_path, kernel_command_line, console_pattern)
2f2d83ad
PD
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/'
e384db41
NL
206 'linux-5.10.16-sunxi/linux-image-current-sunxi_21.02.2_armhf.deb')
207 deb_hash = '9fa84beda245cabf0b4fa84cf6eaa7738ead1da0'
2f2d83ad
PD
208 deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
209 kernel_path = self.extract_from_deb(deb_path,
e384db41
NL
210 '/boot/vmlinuz-5.10.16-sunxi')
211 dtb_path = '/usr/lib/linux-image-current-sunxi/sun4i-a10-cubieboard.dtb'
2f2d83ad
PD
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'))
2e1206b9 230
f7ade779
PD
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
7f7c382a
PD
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
2e1206b9
PD
263 def test_ppc64_pseries(self):
264 """
265 :avocado: tags=arch:ppc64
266 :avocado: tags=machine:pseries
89b65e30 267 :avocado: tags=accel:tcg
2e1206b9
PD
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'
d08c825c 276 console_pattern = 'VFS: Cannot open root device'
2e1206b9 277 self.run_rr(kernel_path, kernel_command_line, console_pattern)
20b1bf2e 278
d2b4e297
NP
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
20b1bf2e
PD
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)
b52d7e21
PD
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'
72cf57b0
TH
333 tar_url = ('https://qemu-advcal.gitlab.io'
334 '/qac-best-of-multiarch/download/day16.tar.xz')
b52d7e21
PD
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'
72cf57b0
TH
346 tar_url = ('https://qemu-advcal.gitlab.io'
347 '/qac-best-of-multiarch/download/day07.tar.xz')
b52d7e21
PD
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'
72cf57b0
TH
357 tar_url = ('https://qemu-advcal.gitlab.io'
358 '/qac-best-of-multiarch/download/day17.tar.xz')
b52d7e21
PD
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'
72cf57b0
TH
369 tar_url = ('https://qemu-advcal.gitlab.io'
370 '/qac-best-of-multiarch/download/day19.tar.xz')
b52d7e21 371 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
d377ba48 372 self.do_test_advcal_2018(file_path, 'uImage')
b52d7e21 373
27f55113
PD
374 def test_or1k_sim(self):
375 """
376 :avocado: tags=arch:or1k
377 :avocado: tags=machine:or1k-sim
378 """
379 tar_hash = '20334cdaf386108c530ff0badaecc955693027dd'
72cf57b0
TH
380 tar_url = ('https://qemu-advcal.gitlab.io'
381 '/qac-best-of-multiarch/download/day20.tar.xz')
27f55113
PD
382 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
383 self.do_test_advcal_2018(file_path, 'vmlinux')
384
ce9771f5
PD
385 def test_nios2_10m50(self):
386 """
387 :avocado: tags=arch:nios2
388 :avocado: tags=machine:10m50-ghrd
389 """
390 tar_hash = 'e4251141726c412ac0407c5a6bceefbbff018918'
72cf57b0
TH
391 tar_url = ('https://qemu-advcal.gitlab.io'
392 '/qac-best-of-multiarch/download/day14.tar.xz')
ce9771f5
PD
393 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
394 self.do_test_advcal_2018(file_path, 'vmlinux.elf')
395
b52d7e21
PD
396 def test_ppc_g3beige(self):
397 """
398 :avocado: tags=arch:ppc
399 :avocado: tags=machine:g3beige
400 """
401 tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc'
72cf57b0
TH
402 tar_url = ('https://qemu-advcal.gitlab.io'
403 '/qac-best-of-multiarch/download/day15.tar.xz')
b52d7e21
PD
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'
72cf57b0
TH
414 tar_url = ('https://qemu-advcal.gitlab.io'
415 '/qac-best-of-multiarch/download/day15.tar.xz')
b52d7e21
PD
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'
72cf57b0
TH
426 tar_url = ('https://qemu-advcal.gitlab.io'
427 '/qac-best-of-multiarch/download/day11.tar.xz')
b52d7e21
PD
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'
72cf57b0
TH
438 tar_url = ('https://qemu-advcal.gitlab.io'
439 '/qac-best-of-multiarch/download/day02.tar.xz')
b52d7e21 440 file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
d377ba48 441 self.do_test_advcal_2018(file_path, 'santas-sleigh-ride.elf')
1d2ff14b
PD
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
2d149759 486 :avocado: tags=cpu:5KEc
1d2ff14b
PD
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,
2d149759 507 args=('-initrd', initrd_path))
1d2ff14b
PD
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
2d149759 519 self.run_rr(kernel_path, kernel_command_line, console_pattern, shift=5)
1d2ff14b
PD
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
2d149759 526 :avocado: tags=cpu:I7200
1d2ff14b 527 """
a79e32a9 528 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/'
1d2ff14b
PD
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
2d149759 540 :avocado: tags=cpu:I7200
1d2ff14b 541 """
a79e32a9 542 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/'
1d2ff14b
PD
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
2d149759 554 :avocado: tags=cpu:I7200
1d2ff14b 555 """
a79e32a9 556 kernel_url = ('http://mipsdistros.mips.com/LinuxDistro/nanomips/'
1d2ff14b
PD
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)