[vfio-users] USB card prevents qemu finding its harddrive

Ede Wolf listac at nebelschwaden.de
Mon Dec 30 15:59:43 UTC 2019


Hello Volker,

I do not have to say, I am deeply impressed. You've nailed it, thanks 
very much. I've build two bioses, one without USB support at all and one 
where BUID_MAX_HIGHTABLE has been set to 1024 * 1024. And kicked out 
some unused drivers.
Both work, though I do not know the implications a four time increase of 
hightable might have. We'll see. I may reduce to 512 anyway.

Thanks to all for your help and support!

Ede

Am 29.12.19 um 18:47 schrieb Volker Rümelin:
> 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





More information about the vfio-users mailing list