Am 14.12.2010 um 11:02 schrieb Avi Kivity <[email protected]>: > On 12/13/2010 10:25 AM, Alexander Graf wrote: >> >> >> > 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] >> > > That could certainly be optimized. If the BAR is all along in its page, both > on guest and host (if not, we can migrate it, at least on the host), we can > use the same offset within the page on the host as it appears on the guest, > and assign the entire page. > > We should make sure SeaBIOS uses a minimum alignment of 4k for mmio BARs.
Yep, I agree :). Back when I tried that, it seemed rather hard to change BAR mappings after init from user space. But it's certainly a thing the vfio stuff could easily tackle! Alex -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
