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


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to