support APIC shorthand for self-IPI
Per the architectural definition of the APIC, several shorthand notations are support for specifying IPI destination:
Destination Shorthand — A quick method of specifying all processors, all excluding self, or self as the destination.
While the all and all-but-self modes seem of dubious value for current kernel consumers, the self-ipi shorthand could be useful for VMM workloads which use them to incur guest exits after event injection. Indeed there may be some performance benefits:
The destination shorthand field of the ICR allows the delivery mode to be by-passed in favor of broadcasting the IPI to all the processors on the system bus and/or back to itself (see Section 10.6.1, “Interrupt Command Register (ICR)”). Three destination shorthands are supported: self, all excluding self, and all including self. The destination mode is ignored when a destination shorthand is used.
Using the tables provided in the SDM, such self-ipi shorthand must be constrained to only edge triggered interrupts in the fixed delivery mode.