• J
    x86, irq: Introduce mechanisms to support dynamically allocate IRQ for IOAPIC · d7f3d478
    Jiang Liu 提交于
    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: NJiang 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: NThomas Gleixner <tglx@linutronix.de>
    d7f3d478
Kconfig 77.2 KB