[U-Boot] [PATCH 0/3] Ethernet support for QEMU sifive_u machine

Anup Patel anup at brainfault.org
Wed Dec 19 06:32:09 UTC 2018


On Wed, Dec 19, 2018 at 11:02 AM Bin Meng <bmeng.cn at gmail.com> wrote:
>
> Hi Anup,
>
> On Wed, Dec 19, 2018 at 12:41 PM Anup Patel <anup at brainfault.org> wrote:
> >
> > On Tue, Dec 18, 2018 at 4:06 PM Bin Meng <bmeng.cn at gmail.com> wrote:
> > >
> > > Hi Anup,
> > >
> > > On Tue, Dec 18, 2018 at 6:33 PM Anup Patel <anup at brainfault.org> wrote:
> > > >
> > > > On Tue, Dec 18, 2018 at 3:21 PM Bin Meng <bmeng.cn at gmail.com> wrote:
> > > > >
> > > > > Hi Anup,
> > > > >
> > > > > On Mon, Dec 17, 2018 at 7:51 PM Anup Patel <anup at brainfault.org> wrote:
> > > > > >
> > > > > > This patchset enables Cadance MACB ethernet driver for
> > > > > > QEMU sifive_u machine. The Cadance MACB ethernet driver
> > > > > > works fine for QEMU sifive_u machince in both M-mode and
> > > > > > S-mode with some minor fixes.
> > > > > >
> > > > > > The patches are based upon latest RISC-V U-Boot tree
> > > > > > (git://git.denx.de/u-boot-riscv.git) at commit id
> > > > > > 9deb8d2fcd13d4a40a4e63c396fe4376af46efac
> > > > > >
> > > > > > To try on QEMU, please ensure following patches are
> > > > > > applied to QEMU sources:
> > > > > > https://patchwork.kernel.org/patch/10729579/
> > > > > > https://patchwork.kernel.org/patch/10729581/
> > > > > >
> > > > >
> > > > > What "-device " parameter should I tell QEMU to instantiate the MACB?
> > > > > "-device ?" does not give me anything that looks like MACB. Without a
> > > > > proper "-device " parameter, I can boot U-Boot on QEMU sifive_u and
> > > > > see U-Boot driver is probed, but a simple 'ping' test does not work.
> > > >
> > > > Try the following:
> > > > # setenv ipaddr 10.0.2.1
> > > > # ping 10.0.2.2
> > > >
> > >
> > > Yes, I have set up all the required network parameters.
> > >
> > > > The above works for me on QEMU.
> > >
> > > My understanding is that we need enable QEMU network via "-netdev "
> > > (either usr, or tap), with a corresponding "-device". I don't know how
> > > to set it up. What's your command line to test this?
> > >
> >
> > "-netdev" or "-device" parameters are not mandatory. By default, virtual
> > NICs are in NAT mode. The QEMU NAT gateway is at IP address
> > 10.0.2.2. We can always ping the NAT gateway when virtual NIC is in
> > NAT mode.
> >
> > Here's how I compile for M-mode:
> > # ARCH=riscv
> > # CROSS_COMPILE=riscv64-unknown-linux-gnu-
> > # make qemu-riscv64_defconfig
> > # make
> >
> > My U-boot log is as follows:
> >
> > anup at anup-ubuntu64:~/Work/riscv-test/u-boot$ qemu-system-riscv64 -M
> > sifive_u -m 256M -display none -serial stdio -kernel ./u-boot
> >
> >
> > U-Boot 2019.01-rc1-00948-ge6b3cdafd0 (Dec 19 2018 - 10:05:50 +0530)
> >
> > CPU:   rv64imafdcsu
> > Model: ucbbar,spike-bare,qemu
> > DRAM:  256 MiB
> > In:    uart at 10013000
> > Out:   uart at 10013000
> > Err:   uart at 10013000
> > Net:
> > Warning: ethernet at 100900fc (eth0) using random MAC address - f6:1f:8c:13:83:c0
> > eth0: ethernet at 100900fc
> > Hit any key to stop autoboot:  0
> >
> > Device 0: unknown device
> > ethernet at 100900fc: PHY present at 0
> > ethernet at 100900fc: link up, 100Mbps full-duplex (lpa: 0xcde1)
> > BOOTP broadcast 1
> > DHCP client bound to address 10.0.2.15 (2 ms)
> > Using ethernet at 100900fc device
> > TFTP from server 10.0.2.2; our IP address is 10.0.2.15
> > Filename 'boot.scr.uimg'.
> > Load address: 0x82100000
> > Loading: *
> > TFTP error: 'Access violation' (2)
> > Not retrying...
> > ethernet at 100900fc: PHY present at 0
> > ethernet at 100900fc: link up, 100Mbps full-duplex (lpa: 0xcde1)
> > BOOTP broadcast 1
> > DHCP client bound to address 10.0.2.15 (1 ms)
> > Using ethernet at 100900fc device
> > TFTP from server 10.0.2.2; our IP address is 10.0.2.15
> > Filename 'boot.scr.uimg'.
> > Load address: 0x81000000
> > Loading: *
> > TFTP error: 'Access violation' (2)
> > Not retrying...
> > => ping 10.0.2.2
> > ethernet at 100900fc: PHY present at 0
> > ethernet at 100900fc: link up, 100Mbps full-duplex (lpa: 0xcde1)
> > Using ethernet at 100900fc device
> > host 10.0.2.2 is alive
> > =>
> > ethernet at 100900fc: PHY present at 0
> > ethernet at 100900fc: link up, 100Mbps full-duplex (lpa: 0xcde1)
> > Using ethernet at 100900fc device
> > host 10.0.2.2 is alive
> > => qemu-system-riscv64: terminating on signal 2
> >
>
> I have always been using "qemu-system-riscv64 -nographic -M sifive_u
> -kernel u-boot" to test U-Boot on qemu risc-v.
> With above command, I can "ping 10.0.2.2" and get the exact the same
> result as yours.
>
> However I wanted to connect the tap interface to the emulated network
> controller for testing, that's why I wanted to use "-device" and
> "-netdev", but I don't know which device string I need to tell QEMU.
> After a bit googleing I got the following page:
> https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Zynq-QEMU-Network-Issues/td-p/797050
>
> From the page it looks that the device should be "-device
> cadence_gem", but when I pass it to QEMU I got:
>
> qemu-system-riscv64: -device cadence_gem,netdev=net0: Parameter
> 'driver' expects pluggable device type
>
> It looks cadence_gem is not a pluggable device. Any ideas?

I have mostly tried TAP devices with VirtIO-Net. I believe this could be
some bug in Cadence GEM emulation of QEMU.

Regards,
Anup


More information about the U-Boot mailing list