From: Stephen Rothwell Date: Wed, 19 Jun 2013 02:00:48 +0000 (+1000) Subject: Merge remote-tracking branch 'pci/next' X-Git-Tag: next-20130619~86 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=70401b0bc3a7d9fdfe166ecb9175f33201a69b9d;p=karo-tx-linux.git Merge remote-tracking branch 'pci/next' Conflicts: drivers/acpi/pci_root.c drivers/pci/probe.c include/linux/aer.h --- 70401b0bc3a7d9fdfe166ecb9175f33201a69b9d diff --cc drivers/acpi/apei/ghes.c index fcd7d91cec34,ab315515908e..ec9b57d428a1 --- a/drivers/acpi/apei/ghes.c +++ b/drivers/acpi/apei/ghes.c @@@ -452,11 -453,18 +453,20 @@@ static void ghes_do_proc(struct ghes *g devfn = PCI_DEVFN(pcie_err->device_id.device, pcie_err->device_id.function); aer_severity = cper_severity_to_aer(sev); + + /* + * If firmware reset the component to contain + * the error, we must reinitialize it before + * use, so treat it as a fatal AER error. + */ + if (gdata->flags & CPER_SEC_RESET) + aer_severity = AER_FATAL; + aer_recover_queue(pcie_err->device_id.segment, pcie_err->device_id.bus, - devfn, aer_severity); + devfn, aer_severity, + (struct aer_capability_regs *) + pcie_err->aer_info); } } diff --cc drivers/acpi/pci_root.c index e427dc516c76,122b4dc7b0fa..5917839321b8 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c @@@ -639,11 -620,9 +620,11 @@@ static void _handle_hotplug_event_root( switch (type) { case ACPI_NOTIFY_BUS_CHECK: /* bus enumerate */ - printk(KERN_DEBUG "%s: Bus check notify on %s\n", __func__, - (char *)buffer.pointer); + acpi_handle_printk(KERN_DEBUG, handle, + "Bus check notify on %s\n", __func__); - if (!root) + if (root) + acpiphp_check_host_bridge(handle); + else handle_root_bridge_insertion(handle); break; diff --cc include/linux/aer.h index 737f90ab4b62,55bb3dc4b2db..a673e490a1e8 --- a/include/linux/aer.h +++ b/include/linux/aer.h @@@ -49,11 -53,10 +53,10 @@@ static inline int pci_cleanup_aer_uncor } #endif - extern void cper_print_aer(struct pci_dev *dev, - int cper_severity, struct aer_capability_regs *aer); - extern int cper_severity_to_aer(int cper_severity); - extern void aer_recover_queue(int domain, unsigned int bus, unsigned int devfn, - int severity, - struct aer_capability_regs *aer_regs); -void cper_print_aer(const char *prefix, struct pci_dev *dev, int cper_severity, ++void cper_print_aer(struct pci_dev *dev, int cper_severity, + struct aer_capability_regs *aer); + int cper_severity_to_aer(int cper_severity); + void aer_recover_queue(int domain, unsigned int bus, unsigned int devfn, - int severity); ++ int severity, struct aer_capability_regs *aer_regs); #endif //_AER_H_