PCI: shpchp: Fix AMD POGO identification
authorBjorn Helgaas <bhelgaas@google.com>
Wed, 30 May 2018 19:06:42 +0000 (14:06 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 4 Jun 2018 17:07:31 +0000 (12:07 -0500)
The fix for an AMD POGO erratum related to SHPC incorrectly identified the
device.  The workaround should be applied only for AMD POGO devices, but it
was instead applied to:

  - all AMD bridges, and
  - all devices from any vendor with device ID 0x7458

Fixes: 53044f357448 ("[PATCH] PCI Hotplug: shpchp: AMD POGO errata fix")
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/pci/hotplug/shpchp_ctrl.c

index bedda5b..1047b56 100644 (file)
@@ -585,13 +585,13 @@ static int shpchp_enable_slot (struct slot *p_slot)
        ctrl_dbg(ctrl, "%s: p_slot->pwr_save %x\n", __func__, p_slot->pwr_save);
        p_slot->hpc_ops->get_latch_status(p_slot, &getstatus);
 
-       if (((p_slot->ctrl->pci_dev->vendor == PCI_VENDOR_ID_AMD) ||
-           (p_slot->ctrl->pci_dev->device == PCI_DEVICE_ID_AMD_POGO_7458))
+       if ((p_slot->ctrl->pci_dev->vendor == PCI_VENDOR_ID_AMD &&
+            p_slot->ctrl->pci_dev->device == PCI_DEVICE_ID_AMD_POGO_7458)
             && p_slot->ctrl->num_slots == 1) {
-               /* handle amd pogo errata; this must be done before enable  */
+               /* handle AMD POGO errata; this must be done before enable  */
                amd_pogo_errata_save_misc_reg(p_slot);
                retval = board_added(p_slot);
-               /* handle amd pogo errata; this must be done after enable  */
+               /* handle AMD POGO errata; this must be done after enable  */
                amd_pogo_errata_restore_misc_reg(p_slot);
        } else
                retval = board_added(p_slot);