[PATCH v2 3/6] configs: xilinx_versal_virt: disable USB_DWC3

Michal Simek michal.simek at amd.com
Tue Nov 26 12:19:27 CET 2024



On 11/26/24 09:34, Heinrich Schuchardt wrote:
> On 11/26/24 08:57, Michal Simek wrote:
>>
>>
>> On 11/25/24 19:48, Tom Rini wrote:
>>> On Mon, Nov 25, 2024 at 07:44:15PM +0100, Michal Simek wrote:
>>>>
>>>>
>>>> On 11/25/24 19:08, Tom Rini wrote:
>>>>> On Mon, Nov 25, 2024 at 07:03:41PM +0100, Michal Simek wrote:
>>>>>>
>>>>>>
>>>>>> On 11/25/24 11:35, Heinrich Schuchardt wrote:
>>>>>>> On 25.11.24 11:02, Michal Simek wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On 11/25/24 10:21, Heinrich Schuchardt wrote:
>>>>>>>>> On 11/25/24 09:32, Michal Simek wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 11/23/24 22:45, Heinrich Schuchardt wrote:
>>>>>>>>>>> The CI uses the following command to launch 
>>>>>>>>>>> xilinx_versal_virt_defconfig:
>>>>>>>>>>>
>>>>>>>>>>>        qemu-system-aarch64 -M xlnx-versal-virt \
>>>>>>>>>>>        -display none -m 4G -serial mon:stdio \
>>>>>>>>>>>        -device loader,file=u-boot,cpu-num=0
>>>>>>>>>>>
>>>>>>>>>>> 'usb start' or invoking eth_bootdev_hunt leads to a crash when function
>>>>>>>>>>> dwc3_core_init() tries to access a register at offset 0xc704 (DWC3_DCTL)
>>>>>>>>>>> relative to the register start address 0xfe20c100.
>>>>>>>>>>>
>>>>>>>>>>> Disable CONFIG_USB_DWC3 until the driver problem is fixed.
>>>>>>>>>>>
>>>>>>>>>>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>>>>>>>>>>> ---
>>>>>>>>>>> v2:
>>>>>>>>>>>       new patch
>>>>>>>>>>> ---
>>>>>>>>>>>     configs/xilinx_versal_virt_defconfig | 2 --
>>>>>>>>>>>     1 file changed, 2 deletions(-)
>>>>>>>>>>>
>>>>>>>>>>> diff --git a/configs/xilinx_versal_virt_defconfig
>>>>>>>>>>> b/configs/ xilinx_versal_virt_defconfig
>>>>>>>>>>> index c8f166c1221..06a240173ba 100644
>>>>>>>>>>> --- a/configs/xilinx_versal_virt_defconfig
>>>>>>>>>>> +++ b/configs/xilinx_versal_virt_defconfig
>>>>>>>>>>> @@ -153,8 +153,6 @@ CONFIG_USB=y
>>>>>>>>>>>     CONFIG_DM_USB_GADGET=y
>>>>>>>>>>>     CONFIG_USB_XHCI_HCD=y
>>>>>>>>>>>     CONFIG_USB_XHCI_DWC3=y
>>>>>>>>>>> -CONFIG_USB_DWC3=y
>>>>>>>>>>> -CONFIG_USB_DWC3_GENERIC=y
>>>>>>>>>>>     CONFIG_USB_ULPI_VIEWPORT=y
>>>>>>>>>>>     CONFIG_USB_ULPI=y
>>>>>>>>>>>     CONFIG_USB_GADGET=y
>>>>>>>>>>
>>>>>>>>>> NACK. That's not the way to go. If one test is failing in CI
>>>>>>>>>> disable that test not really support which is for HW too.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Michal
>>>>>>>>>
>>>>>>>>> Hello Michal,
>>>>>>>>>
>>>>>>>>> It is not that a single test fails. USB is completely unusable
>>>>>>>>> on the board. 'usb start' leads to an immediate crash.
>>>>>>>>
>>>>>>>> I am not applying any patches on SOM with HEAD and usb is partially 
>>>>>>>> working.
>>>>>>>
>>>>>>> Don't you see a crash when executing 'usb start'?
>>>>>>> What QEMU are you using?
>>>>>>>
>>>>>>>> I can agree that it is not super stable with upstream only patches
>>>>>>>> but that's different story.
>>>>>>>>
>>>>>>>>>
>>>>>>>>> The problem already existed in v2021.01.
>>>>>>>>
>>>>>>>> Any log?
>>>>>>>
>>>>>>> $ git reset --hard origin/master
>>>>>>> $ make xilinx_versal_virt_defconfig
>>>>>>> $ CROSS_COMPILE=aarch64-linux-gnu- make -j$(nproc)
>>>>>>> $ qemu-system-riscv64 --version
>>>>>>> QEMU emulator version 9.0.2 (Debian 1:9.0.2+ds-4ubuntu7)
>>>>>>> $ qemu-system-aarch64 -M xlnx-versal-virt \
>>>>>>>    > -display none -m 4G -serial mon:stdio \
>>>>>>>    > -device loader,file=u-boot,cpu-num=0
>>>>>>>
>>>>>>>
>>>>>>> U-Boot 2025.01-rc2-00172-g880fcc49eb40 (Nov 25 2024 - 11:18:35 +0100)
>>>>>>>
>>>>>>> CPU:   UNKNOWN
>>>>>>> Model: Xilinx Versal Virtual development board
>>>>>>> DRAM:  2 GiB (effective 4 GiB)
>>>>>>> EL Level:       EL3
>>>>>>> Core:  32 devices, 13 uclasses, devicetree: board
>>>>>>> Warning: Device tree includes old 'u-boot,dm-' tags: please fix by 2023.07!
>>>>>>> MMC:   sdhci at f1040000: 0, sdhci at f1050000: 1
>>>>>>> Loading Environment from nowhere... OK
>>>>>>> In:    uart at ff000000
>>>>>>> Out:   uart at ff000000
>>>>>>> Err:   uart at ff000000
>>>>>>> Bootmode: JTAG_MODE
>>>>>>> Net:
>>>>>>> ZYNQ GEM: ff0c0000, mdio bus ff0c0000, phyaddr 0, interface rgmii-id
>>>>>>>
>>>>>>> Warning: ethernet at ff0c0000 (eth0) using random MAC address - 
>>>>>>> 5e:f6:37:a3:68:24
>>>>>>> eth0: ethernet at ff0c0000
>>>>>>> ZYNQ GEM: ff0d0000, mdio bus ff0d0000, phyaddr 0, interface rgmii-id
>>>>>>>
>>>>>>> Warning: ethernet at ff0d0000 (eth1) using random MAC address - 
>>>>>>> 5e:8a:ec:a9:d7:e8
>>>>>>> , eth1: ethernet at ff0d0000
>>>>>>> MMC: no card present
>>>>>>> MMC: no card present
>>>>>>> Cannot persist EFI variables without system partition
>>>>>>> Missing TPMv2 device for EFI_TCG_PROTOCOL
>>>>>>> Missing RNG device for EFI_RNG_PROTOCOL
>>>>>>> Hit any key to stop autoboot:  0
>>>>>>> Versal> usb start
>>>>>>> starting USB...
>>>>>>> Bus dwc3 at fe200000: "Synchronous Abort" handler, esr 0x96000050
>>>>>>> elr: 0000000008068fd8 lr : 0000000008069940 (reloc)
>>>>>>> elr: 000000007ff17fd8 lr : 000000007ff18940
>>>>>>> x0 : 00000000fe20c100 x1 : 0000000040000000
>>>>>>> x2 : 0000000033310000 x3 : 000000000000003f
>>>>>>> x4 : 000000007ffa74b0 x5 : 000000007c112880
>>>>>>> x6 : 000000007ffa74c0 x7 : 000000007c300000
>>>>>>> x8 : 0000000000000684 x9 : 000000007bda668c
>>>>>>> x10: 0000000000000003 x11: 0000000000000188
>>>>>>> x12: 0000000000000000 x13: 000000007bda6be0
>>>>>>> x14: 0000000000000000 x15: 000000007bda6224
>>>>>>> x16: 000000007fee9244 x17: 0000000000000000
>>>>>>> x18: 000000007bea6be0 x19: 000000007c111b48
>>>>>>> x20: 000000007c111240 x21: 0000000047822004
>>>>>>> x22: 000000007ff998b2 x23: 000000007ff998e8
>>>>>>> x24: 000000007ffd4514 x25: 0000000000000000
>>>>>>> x26: 0000000000000000 x27: 000000007c111130
>>>>>>> x28: 000000007c1110d0 x29: 000000007bda67b0
>>>>>>>
>>>>>>> Code: b9030660 f9416e60 d5033fbf 52a80001 (b9060401)
>>>>>>> Resetting CPU ...
>>>>>>>
>>>>>>> resetting ...
>>>>>>>
>>>>>>> $ cat u-boot.map
>>>>>>>     .text.dwc3_core_init
>>>>>>>                    0x0000000008068f24      0x6a0 drivers/usb/dwc3/ core.o
>>>>>>>     .text.dwc3_of_parse
>>>>>>>                    0x00000000080695c4      0x310 drivers/usb/dwc3/ core.o
>>>>>>>                    0x00000000080695c4                dwc3_of_parse
>>>>>>>
>>>>>>>>
>>>>>>>>> Do you know of any QEMU/U-Boot combination where USB ever worked on the 
>>>>>>>>> board?
>>>>>>>>
>>>>>>>> Why was this visible in CI in past and why this pops up now?
>>>>>>>> What has changed? I don't think there was any change in QEMu
>>>>>>>> regarding USB but I can double check.
>>>>>>>
>>>>>>> We never started USB in the CI.
>>>>>>> With patch 6/6 of the series usb_bootdev_hunter() is invoked which starts 
>>>>>>> USB.
>>>>>>
>>>>>> Did you push this to gitlab CI? Which test/py is failing there?
>>>>>
>>>>> Er, we don't do "usb start" in CI yet, is why it doesn't fail there. Or
>>>>> are you suggesting this is a QEMU problem ?
>>>>
>>>> This is where it is failing from dwc3_core_init().
>>>> dwc3_writel(dwc->regs, DWC3_DCTL, DWC3_DCTL_CSFTRST);
>>>>
>>>> It means it is likely qemu model limitation.
>>>
>>> And since this is for the virt platform, doesn't it make sense to
>>> disable it until the model is fixed?
>>
>> If we are talking about CI it is about pytests. It means we can simply just 
>> disable that particular test which wants to call it.
>>
>> And I can't see any issue in CI when this series is applied on the top of rc3.
>> https://source.denx.de/u-boot/custodians/u-boot-microblaze/-/ pipelines/23565
>>
>>  From my perspective make no sense to remove usb from defconfig because it is 
>> used on real HW (we are using this defconfig for real HW).
>> If there is any issue with USB then we can just disable USB in CI only.
> 
> Hello Michal,
> 
> Thank you for the suggestion.
> 
> Overriding defconfigs in the CI is possible. I am currently testing with this patch
> 
> https://source.denx.de/u-boot/custodians/u-boot-efi/-/commit/ 
> f1980dd387b77200a987c50c4856c3b52df664c6
> 
> diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml
> index 4ecf76eaa0b..bac577ec008 100644
> --- a/.azure-pipelines.yml
> +++ b/.azure-pipelines.yml
> @@ -511,6 +511,7 @@ stages:
>             TEST_PY_BD: "xilinx_versal_virt"
>             TEST_PY_ID: "--id qemu"
>             TEST_PY_TEST_SPEC: "not sleep"
> +          OVERRIDE: "-a ~CONFIG_USB_DWC3"
>           xtfpga:
>             TEST_PY_BD: "xtfpga"
>             TEST_PY_ID: "--id qemu"
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> index 2164ad79a72..714284a56df 100644
> --- a/.gitlab-ci.yml
> +++ b/.gitlab-ci.yml
> @@ -508,6 +508,7 @@ xilinx_versal_virt test.py:
>       TEST_PY_BD: "xilinx_versal_virt"
>       TEST_PY_TEST_SPEC: "not sleep"
>       TEST_PY_ID: "--id qemu"
> +    OVERRIDE: "-a ~CONFIG_USB_DWC3"
>     <<: *buildman_and_testpy_dfn
> 
>   xtfpga test.py:

I more think to do it via u-boot pytest hooks like we are doing here for 
skipping tpm tests.

https://source.denx.de/u-boot/u-boot-test-hooks/-/blob/master/py/travis-ci/u_boot_boardenv_xilinx_versal_virt_qemu.py?ref_type=heads#L1

It means if this is any EFI test there should be an option to disable the whole 
test.

Thanks,
Michal



More information about the U-Boot mailing list