• Rui Wang's avatar
    x86/ioapic: Fix lost IOAPIC resource after hot-removal and hotadd · 162b83bd
    Rui Wang authored
    IOAPIC resource at 0xfecxxxxx gets lost from /proc/iomem after
    hot-removing and then hot-adding the IOAPIC device.
    
    After system boot, in /proc/iomem:
    
     fec00000-fecfffff : PNP0003:00
       fec00000-fec003ff : IOAPIC 0
       fec01000-fec013ff : IOAPIC 1
       fec40000-fec403ff : IOAPIC 2
       fec80000-fec803ff : IOAPIC 3
       fecc0000-fecc03ff : IOAPIC 4
    
    Then hot-remove IOAPIC 2 and hot-add it again:
    
     fec00000-fecfffff : PNP0003:00
       fec00000-fec003ff : IOAPIC 0
       fec01000-fec013ff : IOAPIC 1
       fec80000-fec803ff : IOAPIC 3
       fecc0000-fecc03ff : IOAPIC 4
    
    The range at 0xfec40000 is lost from /proc/iomem - which is a bug.
    
    This bug happens because handle_ioapic_add() requests resources from
    either PCI config BAR or ACPI "_CRS", not both. But Intel platforms
    map the IOxAPIC registers both at the PCI config BAR (called MBAR, dynamic),
    and at the ACPI "_CRS" (called ABAR, static). The 0xfecX_YZ00 to 0xfecX_YZFF
    range appears in "_CRS" of each IOAPIC device.
    
    Both ranges should be claimed from /proc/iomem for exclusive use.
    Signed-off-by: default avatarRui Wang <rui.y.wang@intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: bhelgaas@google.com
    Cc: helgaas@kernel.org
    Cc: linux-acpi@vger.kernel.org
    Cc: linux-pci@vger.kernel.org
    Cc: rjw@rjwysocki.net
    Cc: tony.luck@intel.com
    Link: http://lkml.kernel.org/r/1471420837-31003-5-git-send-email-rui.y.wang@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    162b83bd
ioapic.c 5.57 KB