Re: USB Passthrough 1.1 performance problem...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12.12.2010, at 23:31, Erik Brakkee wrote:

> Jan Kiszka wrote:
>> 
>>>> Are there some tuning parameters I can use or perhaps even kernel
>>>> configuration paramters on the host to solve this?
>>>> 
>>>> Cheers
>>>>   Erik
>>>> 
>>>> Host:    Motherboard Supermicro X8DTi-F, Intel Xeon L5630, 12MB
>>>>              OS: Opensuse 11.3 64 bit
>>>> 
>>>> Guest:   OS: Opensuse 11.3 64 bit
>>>>       
>>> I can say now that I am giving up on getting this to work. One
>>> alternative was to use PCI passthrough the USB hardware,  but that
>>> didn't work for the USB that was on the motherboard. So I bought a USB
>>> PCI card and tried to use PCI passthrough for that. Unfortunately other
>>> problems occured there.
>>> 
>>> For one, the problem with 4K alignment. But I could fix that by using
>>> the pci=resource_alignment=... kernel parameter. In my grub/menu.lst it
>>> says:
>>> 
>>>    kernel /vmlinuz-2.6.34.7-0.5-default root=/dev/hsystem/root quiet
>>>    showopts intel_iommu=on
>>>    pci=resource_alignment=01:04.0;01:04.1;01:04.2 noirqdebug vga=0x31a
>>> 
>>> 
>>> The noirqdebug flas was needed to avoid the host from disabling the IRQ
>>> (it was a shared IRQ).
>>> 
>>> Using this, I could configure PCI passthrough and start the VM. Also the
>>> USB device showed up there. Only it did not work at all.
>>> 
>>> Here is a summary of my journey up until know:
>>> 
>>> The original approach I wanted to use was to pass my old PCI card (WinTV
>>> PVR-500) to a VM. This card is a well supported card and has been doing
>>> fine for me. Because of the PCI passthrough problems with the wintv
>>> card, I decided to try a USB card instead. This gave me a 'ctrl buffer
>>> too small' issue that I could solve by taking the source RPM for kvm and
>>> applying a known patch from red hat (increasing buffer size from 2048 to
>>> 8192). But then I got jerky video, probably due to USB 1.1 issues. To
>>> bypass these I could use PCI passthrough for USB. But with the PCI
>>> passthrough of this card I am again running into issues probably related
>>> to Shared IRQs. So, after all this I am back to square one.
>>> 
>>> I have now modified my approach so instead of running a separate minimal
>>> host with my old server as a guest, I am now running the old server
>>> (same install) on the new hardware, using it as a host. I would
>>> definitely be interested in trying this out further in the future. I
>>> even tried Xen for a brief moment, only to realize that my host and
>>> guest felt slower (slower startup and execution) and much more difficult
>>> to handle.
>>> 
>>> From the experience of the last two days fulltime trying to get things
>>> working I can only conclude that the following two features would be
>>> really important to have:
>>> 
>>>    * Extended PCI passthrough support
>>>          o shared IRQ support
>>>     
>> Addressed by the series I sent out today.
>>   
> Does this mean I have a chance now that PCI passthrough of my WinTV PVR-500 might work now?
> What version is this and where can I get this for opensuse?
> 
> I still have the setup I used for testing with the host OS still installed but not running so it would be really easy to try out new releases of KVM (it is not a serious production server after all but mainly used to run some websites and mailing lists).
> 
>>   
>>>          o supporting cases where memory is not aligned on a 4K boundary
>>>     
>> Hmm, I'm seeing warnings here when passing through one of my EHCIs, but
>> no fatal errors.
>>   
> In my case, the domain just didn't start.
> Btw. I was using 0.12.5 on opensuse 11.3 but could only find the sources for 0.12.3 on download.opensuse.org (perhaps I looked wrong) and I patched those for th 4K issue. PCI passthrough also did not work with my wintv pci card with KVM 0.12.5.

The source rpm for the 11.3 update channel is here:

  http://download.opensuse.org/update/11.3/rpm/src/kvm-0.12.5-1.2.1.src.rpm

>>   
>>>    * USB passthrough
>>>          o support USB 2.0
>>>          o support USB 3.0 (but taking one step at a time, 2.0 would
>>>            also be great).
>>>     
>> Note that this will not solve any real-time issue (if that is part of
>> your problem). E.g.: While my EHCIs work nicely in PCI-passthrough
>> scenarios, I'm unable to use certain webcams that sooner or later run
>> out of sync.
>> 
>> Jan
>> 
>>   
> Is your point in this case that USB in a VM based on PCI passthrough will always have problems when it comes to more real-time issues or does this only apply to USB passthrough? I can imagine that PCI passthrough is better since it uses hardware support. By the way, I have seen issues in the past whereby the tv card stopped working because of high load on the server running natively so real-time issues also exist apart from virtualization.

IIRC the reason that PCI passthrough with EHCI performs as badly as it does is that BARs < 4k get passed through using the slow path (trap to qemu, issue MMIO in user space). Unfortunately, EHCI seems to have a 256 byte BAR region usually that is used for some handshaking:

00:12.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller (prog-if 20 [EHCI])
        Subsystem: ATI Technologies Inc SB700/SB800 USB EHCI Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 64, Cache Line Size: 64 bytes
        Interrupt: pin B routed to IRQ 17
        Region 0: Memory at c8014400 (32-bit, non-prefetchable) [size=256]


> Apart from this, I am definitely interested in getting updates for KVM on opensuse. Is there a channel for that?

The most current development version for the user space part is in the openSUSE build service on the Virtualization repo:

  http://download.opensuse.org/repositories/Virtualization/openSUSE_11.3/

Please be aware that that version is less tested than the one delivered with the distribution :).


Alex

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux