On 2012-12-06 08:59, Michael S. Tsirkin wrote: > I've been looking at handling of msix masking > in qemu. It looks like all of virtio,vfio and > device assignment implemented their own > similar but slightly different thing. > So I am inclined to move this handling to common > code in msix.c, adding irqfd support right there. > > While doing this rework, one of the more painful > bits of code to change is the code that dynamically > allocates msix table entries as we inject msi. > If this actually triggers it's going to be > painfully slow as route changes are rcu > write side in kernel. > Since recent kernels support direct injection, > do we care anymore? I think if you run out of > vectors, it's better to simply disable irqchip > than try to limp along changing routes all the time.
But how would the logic without dynamic allocation look like? Always configure a route in the PCI layer if an MSI/MSI-X entry is enabled? That would also affect emulated devices that don't use irqfd, thus you would waste routing entries. OTOH, if don't set up such routes, you cannot support MSI/-X on older x86 kernels without direct vector injection. Jan
signature.asc
Description: OpenPGP digital signature