• Thomas Gleixner's avatar
    x86/vector: Handle managed interrupts proper · 2db1f959
    Thomas Gleixner authored
    Managed interrupts need to reserve interrupt vectors permanently, but as
    long as the interrupt is deactivated, the vector should not be active.
    
    Reserve a new system vector, which can be used to initially initialize
    MSI/DMAR/IOAPIC entries. In that situation the interrupts are disabled in
    the corresponding MSI/DMAR/IOAPIC devices. So the vector should never be
    sent to any CPU.
    
    When the managed interrupt is started up, a real vector is assigned from
    the managed vector space and configured in MSI/DMAR/IOAPIC.
    
    This allows a clear separation of inactive and active modes and simplifies
    the final decisions whether the global vector space is sufficient for CPU
    offline operations.
    
    The vector space can be reserved even on offline CPUs and will survive CPU
    offline/online operations.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Tested-by: default avatarJuergen Gross <jgross@suse.com>
    Tested-by: default avatarYu Chen <yu.c.chen@intel.com>
    Acked-by: default avatarJuergen Gross <jgross@suse.com>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Alok Kataria <akataria@vmware.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Rui Zhang <rui.zhang@intel.com>
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Len Brown <lenb@kernel.org>
    Link: https://lkml.kernel.org/r/20170913213156.104616625@linutronix.de
    2db1f959
vector.c 28.4 KB