qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PULL 18/42] tests: avocado: boot_linux_console: Add test case for b


From: qianfan
Subject: Re: [PULL 18/42] tests: avocado: boot_linux_console: Add test case for bpim2u
Date: Fri, 30 Jun 2023 14:15:10 +0800
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0



在 2023/6/29 19:35, Thomas Huth 写道:
On 06/06/2023 11.47, Peter Maydell wrote:
From: qianfan Zhao <qianfanguijin@163.com>

Add test case for booting from initrd and sd card.

Signed-off-by: qianfan Zhao <qianfanguijin@163.com>
Reviewed-by: Niek Linnenbank <nieklinnenbank@gmail.com>
Tested-by: Niek Linnenbank <nieklinnenbank@gmail.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
  tests/avocado/boot_linux_console.py | 176 ++++++++++++++++++++++++++++
  1 file changed, 176 insertions(+)
...
+    def test_arm_bpim2u_gmac(self):
+        """
+        :avocado: tags=arch:arm
+        :avocado: tags=accel:tcg
+        :avocado: tags=machine:bpim2u
+        :avocado: tags=device:sd
+        """
+        self.require_netdev('user')
+
+        deb_url = ('https://apt.armbian.com/pool/main/l/linux-5.10.16-sunxi/'
+ 'linux-image-current-sunxi_21.02.2_armhf.deb')
+        deb_hash = '9fa84beda245cabf0b4fa84cf6eaa7738ead1da0'
+        deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
+        kernel_path = self.extract_from_deb(deb_path,
+ '/boot/vmlinuz-5.10.16-sunxi')
+        dtb_path = ('/usr/lib/linux-image-current-sunxi/'
+                    'sun8i-r40-bananapi-m2-ultra.dtb')
+        dtb_path = self.extract_from_deb(deb_path, dtb_path)
+        rootfs_url = ('http://storage.kernelci.org/images/rootfs/buildroot/'
+ 'buildroot-baseline/20221116.0/armel/rootfs.ext2.xz')
+        rootfs_hash = 'fae32f337c7b87547b10f42599acf109da8b6d9a'
+        rootfs_path_xz = self.fetch_asset(rootfs_url, asset_hash=rootfs_hash)
+        rootfs_path = os.path.join(self.workdir, 'rootfs.cpio')
+        archive.lzma_uncompress(rootfs_path_xz, rootfs_path)
+        image_pow2ceil_expand(rootfs_path)
+
+        self.vm.set_console()
+        kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
+                               'console=ttyS0,115200 '
+                               'root=/dev/mmcblk0 rootwait rw '
+                               'panic=-1 noreboot')
+        self.vm.add_args('-kernel', kernel_path,
+                         '-dtb', dtb_path,
+                         '-drive', 'file=' + rootfs_path + ',if=sd,format=raw',
+                         '-net', 'nic,model=gmac,netdev=host_gmac',
+                         '-netdev', 'user,id=host_gmac',
+                         '-append', kernel_command_line,
+                         '-no-reboot')
+        self.vm.launch()
+        shell_ready = "/bin/sh: can't access tty; job control turned off"
+        self.wait_for_console_pattern(shell_ready)
+
+        exec_command_and_wait_for_pattern(self, 'cat /proc/cpuinfo',
+                                                'Allwinner sun8i Family')
+        exec_command_and_wait_for_pattern(self, 'cat /proc/partitions',
+                                                'mmcblk0')
+        exec_command_and_wait_for_pattern(self, 'ifconfig eth0 up',
+                                                 'eth0: Link is Up')
+        exec_command_and_wait_for_pattern(self, 'udhcpc eth0',
+            'udhcpc: lease of 10.0.2.15 obtained')
+        exec_command_and_wait_for_pattern(self, 'ping -c 3 10.0.2.2',
+            '3 packets transmitted, 3 packets received, 0% packet loss')
+        exec_command_and_wait_for_pattern(self, 'reboot',
+                                                'reboot: Restarting system')
+        # Wait for VM to shut down gracefully
+        self.vm.wait()

FYI, the test_arm_bpim2u_gmac test just failed during one of my CI runs:

https://gitlab.com/thuth/qemu/-/jobs/4565108610#L300

Looking at the debug.log in the artifacts, it looks like the kernel was hanging during boot:

10:53:56 DEBUG| of_cfs_init
10:53:56 DEBUG| of_cfs_init: OK
10:53:56 DEBUG| ALSA device list:
10:53:56 DEBUG| No soundcards found.
10:53:56 DEBUG| Waiting for root device /dev/mmcblk0...
10:54:26 DEBUG| dcdc4: disabling
10:54:26 DEBUG| dc5ldo: disabling
10:54:26 DEBUG| vcc5v0: disabling
10:55:15 ERROR|
...
10:55:15 ERROR| RuntimeError: Test interrupted by SIGTERM

I can reproduce the problem locally on my laptop when running the test repeatedly, e.g. with:

 make check-venv
 for ((x=0;x<10;x++)); do \
  ./tests/venv/bin/avocado run \
    tests/avocado/boot_linux_console.py:test_arm_bpim2u_gmac ; \
 done

1 out of 10 runs were failing.

Any ideas what could be wrong in those failing cases?
Hi:

I can reproduce this issue based on master code(v8.0.0-rc1-2442-g4d541f63e9) with your's
test scripts, and I have tested 50 times only failed once.

Copy liunx boot logs and make a diff:

$ diff ~/a/qemu_bpi_good.txt ~/a/qemu_bpi_bad.txt
3c3
< Linux version 5.10.16-sunxi (root@beast) (arm-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 8.3.0, GNU ld (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 2.32.0.20190321) #21.02.2 SMP Sun Feb 14 21:12:17 CET 2021
---
> Linux version 5.10.16-sunxi (root@beast) (arm-linux-gnueabihf-gcc (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-
28c28
< Memory: 890856K/1048576K available (9216K kernel code, 1457K rwdata, 3216K rodata, 1024K init, 331K bss, 26648K reserved, 131072K cma-reserved, 131072K highmem)
---
> Memory: 890856K/1048576K available (9216K kernel code, 1457K rwdata, 3216K rodata, 1024K init, 331K bss, 26648K reserved, 131072K
74c74
< audit: type=2000 audit(0.156:1): state=initialized audit_enabled=0 res=1
---
> audit: type=2000 audit(0.152:1): state=initialized audit_enabled=0 res=1
83,93c83,93
< raid6: neonx8   gen()  1684 MB/s
< raid6: neonx8   xor()   630 MB/s
< raid6: neonx4   gen()  1103 MB/s
< raid6: neonx4   xor()   939 MB/s
< raid6: neonx2   gen()  1966 MB/s
< raid6: neonx2   xor()   928 MB/s
< raid6: neonx1   gen()  1471 MB/s
< raid6: neonx1   xor()   403 MB/s
< raid6: int32x8  gen()   464 MB/s
< raid6: int32x8  xor()   273 MB/s
< raid6: int32x4  gen()   449 MB/s
---
> raid6: neonx8   gen()  1677 MB/s
> raid6: neonx8   xor()   646 MB/s
> raid6: neonx4   gen()  1111 MB/s
> raid6: neonx4   xor()   924 MB/s
> raid6: neonx2   gen()  1973 MB/s
> raid6: neonx2   xor()   929 MB/s
> raid6: neonx1   gen()  1505 MB/s
> raid6: neonx1   xor()   407 MB/s
> raid6: int32x8  gen()   457 MB/s
> raid6: int32x8  xor()   275 MB/s
> raid6: int32x4  gen()   444 MB/s
95,100c95,100
< raid6: int32x2  gen()  1029 MB/s
< raid6: int32x2  xor()   557 MB/s
< raid6: int32x1  gen()   840 MB/s
< raid6: int32x1  xor()   452 MB/s
< raid6: using algorithm neonx2 gen() 1966 MB/s
< raid6: .... xor() 928 MB/s, rmw enabled
---
> raid6: int32x2  gen()  1018 MB/s
> raid6: int32x2  xor()   553 MB/s
> raid6: int32x1  gen()   837 MB/s
> raid6: int32x1  xor()   446 MB/s
> raid6: using algorithm neonx2 gen() 1973 MB/s
> raid6: .... xor() 929 MB/s, rmw enabled
138,142c138,142
< arm4regs        :  1530 MB/sec
< 8regs           :  1764 MB/sec
< 32regs          :  1508 MB/sec
< neon            :  1761 MB/sec
< xor: using function: 8regs (1764 MB/sec)
---
> arm4regs        :  1526 MB/sec
> 8regs           :  1765 MB/sec
> 32regs          :  1587 MB/sec
> neon            :  1768 MB/sec
> xor: using function: neon (1768 MB/sec)
194c194
< bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
---
> bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need th
288a289,291
> mmc1: host does not support reading read-only switch, assuming write-enable
> mmc1: new high speed SD card at address 4567
> mmcblk1: mmc1:4567 QEMU! 64.0 MiB
296,298d298
< mmc0: host does not support reading read-only switch, assuming write-enable
< mmc0: new high speed SD card at address 4567
< mmcblk0: mmc0:4567 QEMU! 64.0 MiB
322,331c322,325
< EXT4-fs (mmcblk0): mounting ext2 file system using the ext4 subsystem
< EXT4-fs (mmcblk0): mounted filesystem without journal. Opts: (null)
< VFS: Mounted root (ext2 filesystem) on device 179:0.
< devtmpfs: mounted
< Freeing unused kernel memory: 1024K
< Run /sbin/init as init process
< EXT4-fs (mmcblk0): re-mounted. Opts: (null)
< Starting syslogd: OK
< Starting klogd: OK
< Running sysctl: OK
\ No newline at end of file
---
> Waiting for root device /dev/mmcblk0...
> dcdc4: disabling
> dc5ldo: disabling
> vcc5v0: disabling
\ No newline at end of file

The first mmc device should be mmc0, but the linux kernel named it as mmcblk1.
So it always 'Waiting for root device /dev/mmcblk0...', that make the rootfs
can not mounted.

I'm not make sure where the problem came from.

 Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]