On Sun, May 2, 2021 at 7:21 AM Guenter Roeck <[email protected]> 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 <[email protected]> wrote: > >>>> > >>>> Hi, > >>>> > >>>> On Wed, Jan 06, 2021 at 02:35:03PM +0800, Bin Meng wrote: > >>>>> From: Bin Meng <[email protected]> > >>>>> > >>>>> 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 Regards, Bin
