qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Huth <thuth@redhat.com>
To: qianfan <qianfanguijin@163.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	qemu-devel@nongnu.org
Cc: "Niek Linnenbank" <nieklinnenbank@gmail.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: Re: [PULL 18/42] tests: avocado: boot_linux_console: Add test case for bpim2u
Date: Fri, 30 Jun 2023 09:27:24 +0200	[thread overview]
Message-ID: <4f749512-a395-40e4-c20e-ed4928c2cb87@redhat.com> (raw)
In-Reply-To: <b954eaad-508c-2341-eaeb-8ec4111de664@163.com>

On 30/06/2023 08.15, qianfan wrote:
> 
> 
> 在 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
...
> 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.

Oh, that's ugly, I think the problem is likely that the numbering
of device names that are directly in /dev/ is never guaranteed by
the Linux kernel.

Could you please try whether this work more reliably for you
instead:

diff a/tests/avocado/boot_linux_console.py b/tests/avocado/boot_linux_console.py
--- a/tests/avocado/boot_linux_console.py
+++ b/tests/avocado/boot_linux_console.py
@@ -869,7 +869,7 @@ def test_arm_bpim2u_gmac(self):
          self.vm.set_console()
          kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
                                 'console=ttyS0,115200 '
-                               'root=/dev/mmcblk0 rootwait rw '
+                               'root=b300 rootwait rw '
                                 'panic=-1 noreboot')
          self.vm.add_args('-kernel', kernel_path,
                           '-dtb', dtb_path,

?

  Thomas



  parent reply	other threads:[~2023-06-30  7:28 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-06  9:47 [PULL 00/42] target-arm queue Peter Maydell
2023-06-06  9:47 ` [PULL 01/42] arm: move KVM breakpoints helpers Peter Maydell
2023-06-06  9:47 ` [PULL 02/42] hvf: handle access for more registers Peter Maydell
2023-06-06  9:47 ` [PULL 03/42] hvf: add breakpoint handlers Peter Maydell
2023-06-06  9:47 ` [PULL 04/42] hvf: add guest debugging handlers for Apple Silicon hosts Peter Maydell
2023-06-06  9:47 ` [PULL 05/42] hw/net/can: Introduce Xilinx Versal CANFD controller Peter Maydell
2023-06-06  9:47 ` [PULL 06/42] xlnx-versal: Connect Xilinx VERSAL CANFD controllers Peter Maydell
2023-06-06  9:47 ` [PULL 07/42] MAINTAINERS: Include canfd tests under Xilinx CAN Peter Maydell
2023-06-06  9:47 ` [PULL 08/42] tests/qtest: Introduce tests for Xilinx VERSAL CANFD controller Peter Maydell
2023-06-06  9:47 ` [PULL 09/42] hw: arm: Add bananapi M2-Ultra and allwinner-r40 support Peter Maydell
2023-06-06  9:47 ` [PULL 10/42] hw/arm/allwinner-r40: add Clock Control Unit Peter Maydell
2023-06-06  9:47 ` [PULL 11/42] hw: allwinner-r40: Complete uart devices Peter Maydell
2023-06-06  9:47 ` [PULL 12/42] hw: arm: allwinner-r40: Add i2c0 device Peter Maydell
2023-06-06  9:47 ` [PULL 13/42] hw/misc: Rename axp209 to axp22x and add support AXP221 PMU Peter Maydell
2023-06-06  9:47 ` [PULL 14/42] hw/arm/allwinner-r40: add SDRAM controller device Peter Maydell
2023-06-06  9:47 ` [PULL 15/42] hw: sd: allwinner-sdhost: Add sun50i-a64 SoC support Peter Maydell
2023-06-06  9:47 ` [PULL 16/42] hw: arm: allwinner-r40: Add emac and gmac support Peter Maydell
2023-06-06  9:47 ` [PULL 17/42] hw: arm: allwinner-sramc: Add SRAM Controller support for R40 Peter Maydell
2023-06-06  9:47 ` [PULL 18/42] tests: avocado: boot_linux_console: Add test case for bpim2u Peter Maydell
2023-06-29 11:35   ` Thomas Huth
2023-06-30  6:15     ` qianfan
2023-06-30  6:22       ` qianfan
2023-06-30  7:27       ` Thomas Huth [this message]
2023-06-30  8:45         ` qianfan
2023-06-30  8:53           ` Thomas Huth
2023-06-30  9:04             ` qianfan
2023-06-30 15:45               ` Thomas Huth
2023-07-03 11:14                 ` Peter Maydell
2023-06-06  9:47 ` [PULL 19/42] docs: system: arm: Introduce bananapi_m2u Peter Maydell
2023-06-06  9:47 ` [PULL 20/42] target/arm: Add commentary for CPUARMState.exclusive_high Peter Maydell
2023-06-06  9:47 ` [PULL 21/42] target/arm: Add feature test for FEAT_LSE2 Peter Maydell
2023-06-06  9:47 ` [PULL 22/42] target/arm: Introduce finalize_memop_{atom,pair} Peter Maydell
2023-06-06  9:47 ` [PULL 23/42] target/arm: Use tcg_gen_qemu_ld_i128 for LDXP Peter Maydell
2023-06-06  9:47 ` [PULL 24/42] target/arm: Use tcg_gen_qemu_{st, ld}_i128 for do_fp_{st, ld} Peter Maydell
2023-06-06  9:47 ` [PULL 25/42] target/arm: Use tcg_gen_qemu_st_i128 for STZG, STZ2G Peter Maydell
2023-06-06  9:47 ` [PULL 26/42] target/arm: Use tcg_gen_qemu_{ld, st}_i128 in gen_sve_{ld, st}r Peter Maydell
2023-06-12 15:20   ` Jonathan Cameron via
2023-06-12 18:40     ` Mark Cave-Ayland
2023-06-13  9:26       ` Jonathan Cameron via
2023-06-06  9:47 ` [PULL 27/42] target/arm: Sink gen_mte_check1 into load/store_exclusive Peter Maydell
2023-06-06  9:48 ` [PULL 28/42] target/arm: Load/store integer pair with one tcg operation Peter Maydell
2023-06-06  9:48 ` [PULL 29/42] target/arm: Hoist finalize_memop out of do_gpr_{ld, st} Peter Maydell
2023-06-06  9:48 ` [PULL 30/42] target/arm: Hoist finalize_memop out of do_fp_{ld, st} Peter Maydell
2023-06-06  9:48 ` [PULL 31/42] target/arm: Pass memop to gen_mte_check1* Peter Maydell
2023-06-06  9:48 ` [PULL 32/42] target/arm: Pass single_memop to gen_mte_checkN Peter Maydell
2023-06-06  9:48 ` [PULL 33/42] target/arm: Check alignment in helper_mte_check Peter Maydell
2023-06-06  9:48 ` [PULL 34/42] target/arm: Add SCTLR.nAA to TBFLAG_A64 Peter Maydell
2023-06-06  9:48 ` [PULL 35/42] target/arm: Relax ordered/atomic alignment checks for LSE2 Peter Maydell
2023-06-06  9:48 ` [PULL 36/42] target/arm: Move mte check for store-exclusive Peter Maydell
2023-06-06  9:48 ` [PULL 37/42] tests/tcg/aarch64: Use stz2g in mte-7.c Peter Maydell
2023-06-06  9:48 ` [PULL 38/42] tests/tcg/multiarch: Adjust sigbus.c Peter Maydell
2023-06-06  9:48 ` [PULL 39/42] target/arm: Enable FEAT_LSE2 for -cpu max Peter Maydell
2023-06-06  9:48 ` [PULL 40/42] target/arm: allow DC CVA[D]P in user mode emulation Peter Maydell
2023-06-06  9:48 ` [PULL 41/42] tests/tcg/aarch64: add DC CVA[D]P tests Peter Maydell
2023-06-06  9:48 ` [PULL 42/42] target/arm: trap DCC access in user mode emulation Peter Maydell
2023-06-06 21:36 ` [PULL 00/42] target-arm queue Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4f749512-a395-40e4-c20e-ed4928c2cb87@redhat.com \
    --to=thuth@redhat.com \
    --cc=nieklinnenbank@gmail.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qianfanguijin@163.com \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).