aerdrv: Move cper_print_aer() call out of interrupt context
authorLance Ortiz <lance.ortiz@hp.com>
Thu, 30 May 2013 14:25:12 +0000 (08:25 -0600)
committerTony Luck <tony.luck@intel.com>
Thu, 30 May 2013 17:51:20 +0000 (10:51 -0700)
commit37448adfc7ce0d6d5892b87aa8d57edde4126f49
tree384a776fe506e4dfb1cb6d64cc56ce7ae3c289e9
parente4aa937ec75df0eea0bee03bffa3303ad36c986b
aerdrv: Move cper_print_aer() call out of interrupt context

The following warning was seen on 3.9 when a corrected PCIe error was being
handled by the AER subsystem.

WARNING: at .../drivers/pci/search.c:214 pci_get_dev_by_id+0x8a/0x90()

This occurred because a call to pci_get_domain_bus_and_slot() was added to
cper_print_pcie() to setup for the call to cper_print_aer().  The warning
showed up because cper_print_pcie() is called in an interrupt context and
pci_get* functions are not supposed to be called in that context.

The solution is to move the cper_print_aer() call out of the interrupt
context and into aer_recover_work_func() to avoid any warnings when calling
pci_get* functions.

Signed-off-by: Lance Ortiz <lance.ortiz@hp.com>
Acked-by: Borislav Petkov <bp@suse.de>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
drivers/acpi/apei/cper.c
drivers/acpi/apei/ghes.c
drivers/pci/pcie/aer/aerdrv_core.c
drivers/pci/pcie/aer/aerdrv_errprint.c
include/linux/aer.h