• David Woodhouse's avatar
    x86/ioapic: Handle Extended Destination ID field in RTE · 51130d21
    David Woodhouse authored
    Bits 63-48 of the I/OAPIC Redirection Table Entry map directly to bits 19-4
    of the address used in the resulting MSI cycle.
    
    Historically, the x86 MSI format only used the top 8 of those 16 bits as
    the destination APIC ID, and the "Extended Destination ID" in the lower 8
    bits was unused.
    
    With interrupt remapping, the lowest bit of the Extended Destination ID
    (bit 48 of RTE, bit 4 of MSI address) is now used to indicate a remappable
    format MSI.
    
    A hypervisor can use the other 7 bits of the Extended Destination ID to
    permit guests to address up to 15 bits of APIC IDs, thus allowing 32768
    vCPUs before having to expose a vIOMMU and interrupt remapping to the
    guest.
    
    No behavioural change in this patch, since nothing yet permits APIC IDs
    above 255 to be used with the non-IR I/OAPIC domain.
    
    [ tglx: Converted it to the cleaned up entry/msi_msg format and added
      	commentry ]
    Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20201024213535.443185-32-dwmw2@infradead.org
    51130d21
io_apic.h 5.08 KB