Commit c0ecd638 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'pci-v6.11-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci

Pull PCI fixes from Bjorn Helgaas:

 - Fix a pci_intx() regression that caused driver reload to fail with
   "Resources present before probing" (Philipp Stanner)

 - Fix a pciehp regression that clobbered the upper bits of RAID status
   LEDs on NVMe devices behind an Intel VMD (Blazej Kucman)

* tag 'pci-v6.11-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci:
  PCI: pciehp: Retain Power Indicator bits for userspace indicators
  PCI: Fix devres regression in pci_intx()
parents 183d46ff 5560a612
...@@ -485,7 +485,9 @@ int pciehp_set_raw_indicator_status(struct hotplug_slot *hotplug_slot, ...@@ -485,7 +485,9 @@ int pciehp_set_raw_indicator_status(struct hotplug_slot *hotplug_slot,
struct pci_dev *pdev = ctrl_dev(ctrl); struct pci_dev *pdev = ctrl_dev(ctrl);
pci_config_pm_runtime_get(pdev); pci_config_pm_runtime_get(pdev);
pcie_write_cmd_nowait(ctrl, FIELD_PREP(PCI_EXP_SLTCTL_AIC, status),
/* Attention and Power Indicator Control bits are supported */
pcie_write_cmd_nowait(ctrl, FIELD_PREP(PCI_EXP_SLTCTL_AIC | PCI_EXP_SLTCTL_PIC, status),
PCI_EXP_SLTCTL_AIC | PCI_EXP_SLTCTL_PIC); PCI_EXP_SLTCTL_AIC | PCI_EXP_SLTCTL_PIC);
pci_config_pm_runtime_put(pdev); pci_config_pm_runtime_put(pdev);
return 0; return 0;
......
...@@ -4477,12 +4477,6 @@ void pci_intx(struct pci_dev *pdev, int enable) ...@@ -4477,12 +4477,6 @@ void pci_intx(struct pci_dev *pdev, int enable)
{ {
u16 pci_command, new; u16 pci_command, new;
/* Preserve the "hybrid" behavior for backwards compatibility */
if (pci_is_managed(pdev)) {
WARN_ON_ONCE(pcim_intx(pdev, enable) != 0);
return;
}
pci_read_config_word(pdev, PCI_COMMAND, &pci_command); pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
if (enable) if (enable)
...@@ -4490,8 +4484,15 @@ void pci_intx(struct pci_dev *pdev, int enable) ...@@ -4490,8 +4484,15 @@ void pci_intx(struct pci_dev *pdev, int enable)
else else
new = pci_command | PCI_COMMAND_INTX_DISABLE; new = pci_command | PCI_COMMAND_INTX_DISABLE;
if (new != pci_command) if (new != pci_command) {
/* Preserve the "hybrid" behavior for backwards compatibility */
if (pci_is_managed(pdev)) {
WARN_ON_ONCE(pcim_intx(pdev, enable) != 0);
return;
}
pci_write_config_word(pdev, PCI_COMMAND, new); pci_write_config_word(pdev, PCI_COMMAND, new);
}
} }
EXPORT_SYMBOL_GPL(pci_intx); EXPORT_SYMBOL_GPL(pci_intx);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment