• Linus Torvalds's avatar
    Merge tag 'x86-irq-2024-05-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9776dd36
    Linus Torvalds authored
    Pull x86 interrupt handling updates from Thomas Gleixner:
     "Add support for posted interrupts on bare metal.
    
      Posted interrupts is a virtualization feature which allows to inject
      interrupts directly into a guest without host interaction. The VT-d
      interrupt remapping hardware sets the bit which corresponds to the
      interrupt vector in a vector bitmap which is either used to inject the
      interrupt directly into the guest via a virtualized APIC or in case
      that the guest is scheduled out provides a host side notification
      interrupt which informs the host that an interrupt has been marked
      pending in the bitmap.
    
      This can be utilized on bare metal for scenarios where multiple
      devices, e.g. NVME storage, raise interrupts with a high frequency. In
      the default mode these interrupts are handles independently and
      therefore require a full roundtrip of interrupt entry/exit.
    
      Utilizing posted interrupts this roundtrip overhead can be avoided by
      coalescing these interrupt entries to a single entry for the posted
      interrupt notification. The notification interrupt then demultiplexes
      the pending bits in a memory based bitmap and invokes the
      corresponding device specific handlers.
    
      Depending on the usage scenario and device utilization throughput
      improvements between 10% and 130% have been measured.
    
      As this is only relevant for high end servers with multiple device
      queues per CPU attached and counterproductive for situations where
      interrupts are arriving at distinct times, the functionality is opt-in
      via a kernel command line parameter"
    
    * tag 'x86-irq-2024-05-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
      x86/irq: Use existing helper for pending vector check
      iommu/vt-d: Enable posted mode for device MSIs
      iommu/vt-d: Make posted MSI an opt-in command line option
      x86/irq: Extend checks for pending vectors to posted interrupts
      x86/irq: Factor out common code for checking pending interrupts
      x86/irq: Install posted MSI notification handler
      x86/irq: Factor out handler invocation from common_interrupt()
      x86/irq: Set up per host CPU posted interrupt descriptors
      x86/irq: Reserve a per CPU IDT vector for posted MSIs
      x86/irq: Add a Kconfig option for posted MSI
      x86/irq: Remove bitfields in posted interrupt descriptor
      x86/irq: Unionize PID.PIR for 64bit access w/o casting
      KVM: VMX: Move posted interrupt descriptor out of VMX code
    9776dd36
apic.h 14.9 KB