X86 interrupt handling update:

  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.