Skip to content
  • Jiang Liu's avatar
    PCI: Remove PCI ioapic driver · 5db66334
    Jiang Liu authored
    
    
    To support IOAPIC hotplug on x86 and IA64 platforms, OS needs to figure
    out global interrupt source number(GSI) and IOAPIC enumeration ID
    through ACPI interfaces. So BIOS must implement an ACPI IOAPIC device
    with _GSB/_UID or _MAT method to support IOAPIC hotplug. OS also needs
    to figure out base physical address to access IOAPIC registers. OS may
    get the base physical address through PCI BARs if IOAPIC device is
    visible in PCI domain, otherwise OS may get the address by ACPI _CRS
    method if IOAPIC device is hidden from PCI domain by BIOS.
    
    When adding a PCI subtree, we need to add IOAPIC devices before enabling
    all other PCI devices because other PCI devices may use the IOAPIC to
    allocate PCI interrupts.
    
    So we plan to reimplement IOAPIC driver as an ACPI instead of PCI driver
    due to:
    1) hot-pluggable IOAPIC devices are always visible in ACPI domain,
       but may or may not be visible in PCI domain.
    2) we could explicitly control the order between IOAPIC and other PCI
       devices.
    
    We also have another choice to use a PCI driver to manage IOAPIC device
    if it's visible in PCI domain and use an ACPI driver if it's only
    visible in ACPI domain. But this solution is a little complex.
    
    It shouldn't cause serious backward compatibility issues because:
    1) IOAPIC hotplug is never supported on x86 yet because it hasn't
       implemented the required acpi_register_ioapic() and
       acpi_unregister_ioapic().
    2) Currently only ACPI based IOAPIC hotplug is possible on x86 and
       IA64, we don't know other specifications and interfaces to support
       IOAPIC hotplug yet.
    3) We will reimplement an ACPI IOAPIC driver to support IOAPIC hotplug.
    
    This change also helps to get rid of the false alarm on all current
    Linux distributions:
    [    6.952497] ioapic: probe of 0000:00:05.4 failed with error -22
    [    6.959542] ioapic: probe of 0000:80:05.4 failed with error -22
    
    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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.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: Borislav Petkov <bp@alien8.de>
    Link: http://lkml.kernel.org/r/1414387308-27148-9-git-send-email-jiang.liu@linux.intel.com
    
    
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    5db66334