lkml.org 
[lkml]   [2015]   [Jan]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[Patch Part2 v4 27/33] x86/irq: Refine the way to calculate NR_IRQS
    Date
    Now we have made MSI independent of IOAPIC, so we need to refine the
    way to calculate NR_IRQS to support configuration with MSI enabled but
    IOAPIC disabled.

    Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Jan Beulich <JBeulich@suse.com>
    Link: http://lkml.kernel.org/r/1416901802-24211-36-git-send-email-jiang.liu@linux.intel.com
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Tested-by: Joerg Roedel <jroedel@suse.de>
    ---
    arch/x86/include/asm/irq_vectors.h | 18 +++++++++++-------
    1 file changed, 11 insertions(+), 7 deletions(-)

    diff --git a/arch/x86/include/asm/irq_vectors.h b/arch/x86/include/asm/irq_vectors.h
    index 666c89ec4bd7..b26cb124a4f1 100644
    --- a/arch/x86/include/asm/irq_vectors.h
    +++ b/arch/x86/include/asm/irq_vectors.h
    @@ -155,18 +155,22 @@ static inline int invalid_vm86_irq(int irq)
    * static arrays.
    */

    -#define NR_IRQS_LEGACY 16
    +#define NR_IRQS_LEGACY 16

    -#define IO_APIC_VECTOR_LIMIT ( 32 * MAX_IO_APICS )
    +#define CPU_VECTOR_LIMIT (64 * NR_CPUS)
    +#define IO_APIC_VECTOR_LIMIT (32 * MAX_IO_APICS)

    -#ifdef CONFIG_X86_IO_APIC
    -# define CPU_VECTOR_LIMIT (64 * NR_CPUS)
    -# define NR_IRQS \
    +#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_PCI_MSI)
    +#define NR_IRQS \
    (CPU_VECTOR_LIMIT > IO_APIC_VECTOR_LIMIT ? \
    (NR_VECTORS + CPU_VECTOR_LIMIT) : \
    (NR_VECTORS + IO_APIC_VECTOR_LIMIT))
    -#else /* !CONFIG_X86_IO_APIC: */
    -# define NR_IRQS NR_IRQS_LEGACY
    +#elif defined(CONFIG_X86_IO_APIC)
    +#define NR_IRQS (NR_VECTORS + IO_APIC_VECTOR_LIMIT)
    +#elif defined(CONFIG_PCI_MSI)
    +#define NR_IRQS (NR_VECTORS + CPU_VECTOR_LIMIT)
    +#else
    +#define NR_IRQS NR_IRQS_LEGACY
    #endif

    #endif /* _ASM_X86_IRQ_VECTORS_H */
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2015-01-20 07:01    [W:2.635 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site