On 5/1/21 5:24 PM, Bin Meng wrote: > On Sun, May 2, 2021 at 7:21 AM Guenter Roeck <li...@roeck-us.net> wrote: >> >> On 5/1/21 2:40 PM, Philippe Mathieu-Daudé wrote: >>> On 5/1/21 10:12 PM, Guenter Roeck wrote: >>>> On 4/30/21 9:28 PM, Bin Meng wrote: >>>>> On Fri, Apr 30, 2021 at 10:41 PM Guenter Roeck <li...@roeck-us.net> wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> On Wed, Jan 06, 2021 at 02:35:03PM +0800, Bin Meng wrote: >>>>>>> From: Bin Meng <bin.m...@windriver.com> >>>>>>> >>>>>>> At present, when booting U-Boot on QEMU sabrelite, we see: >>>>>>> >>>>>>> Net: Board Net Initialization Failed >>>>>>> No ethernet found. >>>>>>> >>>>>>> U-Boot scans PHY at address 4/5/6/7 (see board_eth_init() in the >>>>>>> U-Boot source: board/boundary/nitrogen6x/nitrogen6x.c). On the real >>>>>>> board, the Ethernet PHY is at address 6. Adjust this by updating the >>>>>>> "fec-phy-num" property of the fsl_imx6 SoC object. >>>>>>> >>>>>>> With this change, U-Boot sees the PHY but complains MAC address: >>>>>>> >>>>>>> Net: using phy at 6 >>>>>>> FEC [PRIME] >>>>>>> Error: FEC address not set. >>>>>>> >>>>>>> This is due to U-Boot tries to read the MAC address from the fuse, >>>>>>> which QEMU does not have any valid content filled in. However this >>>>>>> does not prevent the Ethernet from working in QEMU. We just need to >>>>>>> set up the MAC address later in the U-Boot command shell, by: >>>>>>> >>>>>>> => setenv ethaddr 00:11:22:33:44:55 >>>>>>> >>>>>> >>>>>> With this patch in place, the standard Ethernet interface no longer >>>>>> works when >>>>>> booting sabrelite Linux images directly (without u-boot) using the >>>>>> following >>>>>> qemu command. >>>>>> qemu-system-arm -M sabrelite -kernel arch/arm/boot/zImage >>>>>> ... >>>>>> >>>>>> The Ethernet interface still instantiates, but packet transfer to the >>>>>> host >>>>>> no longer works. Reverting this patch fixes the problem for me. >>>>>> >>>>>> Is there a qemu command line parameter that is now necessary to >>>>>> instantiate >>>>>> the Ethernet interface when booting Linux ? >>>>> >>>>> Enabling "guest_errors" shows that Linux kernel fec driver is trying >>>>> to read PHY at address 0, which is not what we want. >>>>> >>>>> [imx.fec.phy]imx_phy_read: Bad phy num 0 >>>>> >>>>> The device tree blob of the sabrelite does not contain a node for the >>>>> ethernet phy specifying phy address, so I suspect Linux kernel driver >>>>> is using default phy address 0 instead. >>>>> >>>>> Could you please test on a real hardware to see what happens? >>>>> >>>> >>>> The problem is that qemu returns 0 when the OS tries to read from a >>>> non-existing PHY. Linux expects it to return 0xffff, and believes that >>>> a PHY is there if 0 is returned. >>> >>> Correct. >>> >> >> I'll send a patch. Next question is why the Ethernet interfaces on >> mcimx6ul-evk >> and mcimx7d-sabre don't work. I either get no connectivity at all (similar to >> the above) or something like >> >> fec 2188000.ethernet eth1: Unable to connect to phy >> ifconfig: SIOCSIFFLAGS: No such device >> >> Any idea ? > > I don't see these 2 are supported targets of QEMU: > https://wiki.qemu.org/Documentation/Platforms/ARM >
Reality says otherwise. $ qemu-system-arm --version QEMU emulator version 6.0.0 (v6.0.0-25-geac5bb0cc1-dirty) Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers $ qemu-system-arm -M ? | grep mcim mcimx6ul-evk Freescale i.MX6UL Evaluation Kit (Cortex A7) mcimx7d-sabre Freescale i.MX7 DUAL SABRE (Cortex A7) Guenter