virtio-net issues on aarch64 QEMU/KVM

Andrea Bolognani abologna at redhat.com
Mon Aug 7 08:58:56 UTC 2017


On Fri, 2017-08-04 at 14:29 +0100, Mark Rutland wrote:
> As a (vaguely-related) heads-up, you will find that 11.1 will not work as an
> SMP KVM guest, as it doesn't enable SGIs for the boot CPU in the GIC
> distributor, leading to a lockup later in the boot process. I think Andrew
> Turner is currently looking at fixing that.

Yeah, I noticed that. Glad to hear a fix is in the works.

> I dumped a stacktrace using QEMU's gdbserver; it looks like FreeBSD is polling
> the virtio queue waiting for something:
> 
> #0  0xffff000000170294 in VIRTIO_BUS_POLL (dev=0xfffffd00005ab900) at ./virtio_bus_if.h:159
> #1  virtqueue_poll (vq=0xffff00004083e000, len=0x0) at /usr/src/sys/dev/virtio/virtqueue.c:573
> #2  0xffff00000017707c in vtnet_ctrl_mac_cmd (sc=0xfffffd00004fa000, hwaddr=<optimized out>) at /usr/src/sys/dev/virtio/network/if_vtnet.c:3163
> #3  vtnet_set_hwaddr (sc=0xfffffd00004fa000) at /usr/src/sys/dev/virtio/network/if_vtnet.c:3588
> #4  0xffff000000176568 in vtnet_reinit (sc=0xfffffd00004fa000) at /usr/src/sys/dev/virtio/network/if_vtnet.c:3022
> #5  vtnet_init_locked (sc=0xfffffd00004fa000) at /usr/src/sys/dev/virtio/network/if_vtnet.c:3069
> #6  0xffff000000175ff8 in vtnet_ioctl (ifp=0xfffffd000058f000, cmd=<optimized out>, data=<optimized out>) at /usr/src/sys/dev/virtio/network/if_vtnet.c:1107
> #7  0xffff000000373e60 in ifhwioctl (cmd=<optimized out>, ifp=<optimized out>, td=<optimized out>, data=<optimized out>) at /usr/src/sys/net/if.c:2456
> #8  ifioctl (so=<optimized out>, cmd=2149607696, data=0xffff000054ae1888 "vtnet0", td=<optimized out>) at /usr/src/sys/net/if.c:2836
> #9  0xffff0000002f3b14 in fo_ioctl (fp=<optimized out>, com=2149607696, active_cred=<optimized out>, td=<optimized out>, data=<optimized out>) at
/usr/src/sys/sys/file.h:323
> #10 kern_ioctl (td=0xfffffd0000a7f000, fd=3, com=2149607696, data=0xffff000054ae1888 "vtnet0") at /usr/src/sys/kern/sys_generic.c:836
> #11 0xffff0000002f377c in sys_ioctl (td=0xfffffd0000a7f000, uap=0xffff000054ae1978) at /usr/src/sys/kern/sys_generic.c:745
> #12 0xffff000000555408 in syscallenter (td=<optimized out>, sa=<optimized out>) at /usr/src/sys/arm64/arm64/../../kern/subr_syscall.c:135
> #13 svc_handler (frame=<optimized out>, td=<optimized out>) at /usr/src/sys/arm64/arm64/trap.c:139
> #14 do_el0_sync (td=0xfffffd0000a7f000, frame=<optimized out>) at /usr/src/sys/arm64/arm64/trap.c:366
> 
> ... unfortunately I'm not all that familiar with how virtio works, so I'm not
> sure which end is doing the wrong thing.

Me neither :)

I'll forward the information to my colleagues that work on
QEMU though, hopefully they'll figure out what's wrong.

-- 
Andrea Bolognani / Red Hat / Virtualization


More information about the freebsd-arm mailing list