• Michael S. Tsirkin's avatar
    KVM: fast-path msi injection with irqfd · bd2b53b2
    Michael S. Tsirkin authored
    Store irq routing table pointer in the irqfd object,
    and use that to inject MSI directly without bouncing out to
    a kernel thread.
    While we touch this structure, rearrange irqfd fields to make fastpath
    better packed for better cache utilization.
    This also adds some comments about locking rules and rcu usage in code.
    Some notes on the design:
    - Use pointer into the rt instead of copying an entry,
      to make it possible to use rcu, thus side-stepping
      locking complexities.  We also save some memory this way.
    - Old workqueue code is still used for level irqs.
      I don't think we DTRT with level anyway, however,
      it seems easier to keep the code around as
      it has been thought through and debugged, and fix level later than
      rip out and re-instate it later.
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Acked-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
    Acked-by: default avatarGregory Haskins <ghaskins@novell.com>
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
irq_comm.c 12 KB