• Jiang Liu's avatar
    x86, irq: Introduce mechanisms to support dynamically allocate IRQ for IOAPIC · d7f3d478
    Jiang Liu authored
    Currently x86 support identity mapping between GSI(IOAPIC pin) and IRQ
    number, so continous IRQs at low end are statically allocated to IOAPICs
    at boot time. This design causes trouble to support IOAPIC hotplug.
    
    This patch implements basic mechanism to dynamically allocate IRQ on
    demand for IOAPIC pins by using irqdomain framework.
    
    It first adds several fields into struct ioapic to support irqdomain.
    Then it implements an algorithm to dynamically allocate IRQ number
    for IOAPIC pins on demand.
    
    Currently it supports three types of irqdomain:
    1) LEGACY: used to support IOAPIC hosting legacy IRQs and building
       identity mapping for legacy IRQs. A speical case, we dynamically
       allocate IRQ number for IOAPIC pin which has GSI number below
       nr_legacy_irqs() but isn't legacy IRQ. This is for backward
       compatibility and avoid regression.
    2) STRICT: build identity mapping between GSI and IRQ nubmer.
    3) DYNAMIC: dynamically allocate IRQ number for IOAPIC pin on demand.
    
    Legacy(ISA) IRQs is not managed by irqdomain because there may be
    multiple pins sharing the same IRQ number and current irqdomain only
    supports 1:1 mapping between pins and IRQ.
    Signed-off-by: default avatarJiang 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: Paul Gortmaker <paul.gortmaker@windriver.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Grant Likely <grant.likely@linaro.org>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Cc: Yinghai Lu <yinghai@kernel.org>
    Cc: Len Brown <len.brown@intel.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Link: http://lkml.kernel.org/r/1402302011-23642-24-git-send-email-jiang.liu@linux.intel.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    d7f3d478
Kconfig 77.2 KB