summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-09-14 17:06:30 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-09-14 17:06:30 -0400
commit4cea8776571b18db7485930cb422faa739580c8c (patch)
tree6db396d3322f32c856ff9137edee4b039181c00e
parent77e5bdf9f7b2d20939c8d807f3e68778d6e1557a (diff)
parent035ee288ae7ade4152f1c3cf23a587b04fdc526c (diff)
Merge tag 'pci-v4.8-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI fixes from Bjorn Helgaas: "Here are two changes for v4.8. The first fixes a "[Firmware Bug]: reg 0x10: invalid BAR (can't size)" warning on Haswell, and the second fixes a problem in some new runtime suspend functionality we merged for v4.8. Summary: Enumeration: Mark Haswell Power Control Unit as having non-compliant BARs (Bjorn Helgaas) Power management: Fix bridge_d3 update on device removal (Lukas Wunner)" * tag 'pci-v4.8-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: PCI: Fix bridge_d3 update on device removal PCI: Mark Haswell Power Control Unit as having non-compliant BARs
-rw-r--r--arch/x86/pci/fixup.c20
-rw-r--r--drivers/pci/remove.c3
2 files changed, 14 insertions, 9 deletions
diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c
index 837ea36a837d..6d52b94f4bb9 100644
--- a/arch/x86/pci/fixup.c
+++ b/arch/x86/pci/fixup.c
@@ -553,15 +553,21 @@ static void twinhead_reserve_killing_zone(struct pci_dev *dev)
553DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27B9, twinhead_reserve_killing_zone); 553DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x27B9, twinhead_reserve_killing_zone);
554 554
555/* 555/*
556 * Broadwell EP Home Agent BARs erroneously return non-zero values when read. 556 * Device [8086:2fc0]
557 * Erratum HSE43
558 * CONFIG_TDP_NOMINAL CSR Implemented at Incorrect Offset
559 * http://www.intel.com/content/www/us/en/processors/xeon/xeon-e5-v3-spec-update.html
557 * 560 *
558 * See http://www.intel.com/content/www/us/en/processors/xeon/xeon-e5-v4-spec-update.html 561 * Devices [8086:6f60,6fa0,6fc0]
559 * entry BDF2. 562 * Erratum BDF2
563 * PCI BARs in the Home Agent Will Return Non-Zero Values During Enumeration
564 * http://www.intel.com/content/www/us/en/processors/xeon/xeon-e5-v4-spec-update.html
560 */ 565 */
561static void pci_bdwep_bar(struct pci_dev *dev) 566static void pci_invalid_bar(struct pci_dev *dev)
562{ 567{
563 dev->non_compliant_bars = 1; 568 dev->non_compliant_bars = 1;
564} 569}
565DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6f60, pci_bdwep_bar); 570DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2fc0, pci_invalid_bar);
566DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fa0, pci_bdwep_bar); 571DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6f60, pci_invalid_bar);
567DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fc0, pci_bdwep_bar); 572DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fa0, pci_invalid_bar);
573DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x6fc0, pci_invalid_bar);
diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c
index d1ef7acf6930..f9357e09e9b3 100644
--- a/drivers/pci/remove.c
+++ b/drivers/pci/remove.c
@@ -40,6 +40,7 @@ static void pci_destroy_dev(struct pci_dev *dev)
40 list_del(&dev->bus_list); 40 list_del(&dev->bus_list);
41 up_write(&pci_bus_sem); 41 up_write(&pci_bus_sem);
42 42
43 pci_bridge_d3_device_removed(dev);
43 pci_free_resources(dev); 44 pci_free_resources(dev);
44 put_device(&dev->dev); 45 put_device(&dev->dev);
45} 46}
@@ -96,8 +97,6 @@ static void pci_remove_bus_device(struct pci_dev *dev)
96 dev->subordinate = NULL; 97 dev->subordinate = NULL;
97 } 98 }
98 99
99 pci_bridge_d3_device_removed(dev);
100
101 pci_destroy_dev(dev); 100 pci_destroy_dev(dev);
102} 101}
103 102