Hi Ede,
I can reproduce the problem with my old VL800 USB 3.0 pcie card, which I
replaced years ago with a renesas card.
It seems the problem is a memory layout problem in seabios. The seabios
config variable BUILD_MAX_HIGHTABLE is too small for this card.
If you don't want to boot your VM from your USB card and your keyboard
isn't connected to this card, a workaround would be to use the 128k
seabios rom. This version doesn't initialize XHCI interfaces. Just use
-bios bios.bin on the qemu command line.
Another option is to build your own seabios version with a larger
BUILD_MAX_HIGHTABLE value.
Here is a part of the seabios debug log if you want to file a bug report:
Machine UUID 8c0d584b-8330-4a8c-bae0-c83f8029d52f
init usb
phys_alloc zone=0x7ffbfe84, free=131072
phys_alloc zone=0x7ffbfe84 size=72 align=10 ret=7ffdffb0 (detail=0x7ffa9ce0)
XHCI init on dev 00:06.0: regs @ 0xfc053000, 5 ports, 16 slots, 32 byte
contexts
XHCI extcap 0x1 @ 0xfc0530a0
XHCI protocol USB 2.00, 1 ports (offset 1), def 6
XHCI protocol USB 3.00, 4 ports (offset 2), def 0
phys_alloc zone=0x7ffbfe78, free=2146049248
phys_alloc zone=0x7ffbfe78 size=4096 align=1000 ret=7ffa7000
(detail=0x7ffa9cb0)
/7ffa7000\ Start thread
|7ffa7000| phys_alloc zone=0x7ffbfe84, free=130992
|7ffa7000| phys_alloc zone=0x7ffbfe84 size=136 align=40 ret=7ffdff00
(detail=0x7ffa9c80)
|7ffa7000| phys_alloc zone=0x7ffbfe84, free=130816
|7ffa7000| phys_alloc zone=0x7ffbfe84 size=16 align=40 ret=7ffdfec0
(detail=0x7ffa9c50)
|7ffa7000| phys_alloc zone=0x7ffbfe84, free=130752
|7ffa7000| phys_alloc zone=0x7ffbfe84 size=288 align=100 ret=7ffdfd00
(detail=0x7ffa9c20)
|7ffa7000| phys_alloc zone=0x7ffbfe84, free=130304
|7ffa7000| phys_alloc zone=0x7ffbfe84 size=288 align=100 ret=7ffdfb00
(detail=0x7ffa9bf0)
|7ffa7000| configure_xhci: resetting
...
|7ffa7000| configure_xhci: setup 31 scratch pad buffers
|7ffa7000| phys_alloc zone=0x7ffbfe84, free=129792
|7ffa7000| phys_alloc zone=0x7ffbfe84 size=248 align=40 ret=7ffdfa00
(detail=0x7ffa9b50)
|7ffa7000| phys_alloc zone=0x7ffbfe84, free=129536
|7ffa7000| phys_alloc zone=0x7ffbfe84 size=126976 align=1000
ret=7ffc0000 (detail=0x7ffa9b20)
The 31 scratch pad buffers for the VL800 USB card need 126976 bytes of
262144 (BUILD_MAX_HIGHTABLE) bytes. My renesas card only uses 4 scratch
pad buffers.
init virtio-blk
phys_alloc zone=0x7ffbfe78, free=2146049248
phys_alloc zone=0x7ffbfe78 size=4096 align=1000 ret=7ffa4000
(detail=0x7ffa99b0)
/7ffa4000\ Start thread
|7ffa4000| found virtio-blk at 00:04.0
|7ffa4000| phys_alloc zone=0x7ffbfe88, free=62640
|7ffa4000| phys_alloc zone=0x7ffbfe88 size=95 align=10 ret=e8c60
(detail=0x7ffa9980)
|7ffa4000| pci dev 00:04.0 virtio cap at 0x84 type 5 [pci cfg access]
|7ffa4000| pci dev 00:04.0 virtio cap at 0x70 type 2 bar 4 at 0xfebfc000
off +0x3000 [mmio]
|7ffa4000| pci dev 00:04.0 virtio cap at 0x60 type 4 bar 4 at 0xfebfc000
off +0x2000 [mmio]
|7ffa4000| pci dev 00:04.0 virtio cap at 0x50 type 3 bar 4 at 0xfebfc000
off +0x1000 [mmio]
|7ffa4000| pci dev 00:04.0 virtio cap at 0x40 type 1 bar 4 at 0xfebfc000
off +0x0000 [mmio]
|7ffa4000| pci dev 00:04.0 using modern (1.0) virtio mode
|7ffa4000| phys_alloc zone=0x7ffbfe84, free=2560
|7ffa4000| WARNING - Unable to allocate resource at vp_find_vq:301!
|7ffa4000| fail to find vq for virtio-blk 00:04.0
|7ffa4000| phys_free e8c60 (detail=0x7ffa9980)
\7ffa4000/ End thread
Seabios ran out of memory here.
With best regards,
Volker
_______________________________________________
vfio-users mailing list
vfio-users@redhat.com
https://www.redhat.com/mailman/listinfo/vfio-users