• Thomas Gleixner's avatar
    x86/apic: Get rid of multi CPU affinity · fdba46ff
    Thomas Gleixner authored
    Setting the interrupt affinity of a single interrupt to multiple CPUs has a
    dubious value.
    
     1) This only works on machines where the APIC uses logical destination
        mode. If the APIC uses physical destination mode then it is already
        restricted to a single CPU
    
     2) Experiments have shown, that the benefit of multi CPU affinity is close
        to zero and in some test even worse than setting the affinity to a
        single CPU.
    
        The reason for this is that the delivery targets the APIC with the
        lowest ID first and only if that APIC is busy (servicing an interrupt,
        i.e. ISR is not empty) it hands it over to the next APIC. In the
        conducted tests the vast majority of interrupts ends up on the APIC
        with the lowest ID anyway, so there is no natural spreading of the
        interrupts possible.
    
    Supporting multi CPU affinities adds a lot of complexity to the code, which
    can turn the allocation search into a worst case of
    
        nr_vectors * nr_online_cpus * nr_bits_in_target_mask
    
    As a first step disable it by restricting the vector search to a single
    CPU.
    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/20170913213154.228824430@linutronix.de
    fdba46ff
vector.c 25.6 KB