aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/hotplug/acpiphp_glue.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/hotplug/acpiphp_glue.c')
-rw-r--r--drivers/pci/hotplug/acpiphp_glue.c31
1 files changed, 1 insertions, 30 deletions
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index a46b585fae31..5ed2dcaa8e27 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -222,35 +222,6 @@ static void acpiphp_post_dock_fixup(struct acpi_device *adev)
222 acpiphp_let_context_go(context); 222 acpiphp_let_context_go(context);
223} 223}
224 224
225/* Check whether the PCI device is managed by native PCIe hotplug driver */
226static bool device_is_managed_by_native_pciehp(struct pci_dev *pdev)
227{
228 u32 reg32;
229 acpi_handle tmp;
230 struct acpi_pci_root *root;
231
232 /* Check whether the PCIe port supports native PCIe hotplug */
233 if (pcie_capability_read_dword(pdev, PCI_EXP_SLTCAP, &reg32))
234 return false;
235 if (!(reg32 & PCI_EXP_SLTCAP_HPC))
236 return false;
237
238 /*
239 * Check whether native PCIe hotplug has been enabled for
240 * this PCIe hierarchy.
241 */
242 tmp = acpi_find_root_bridge_handle(pdev);
243 if (!tmp)
244 return false;
245 root = acpi_pci_find_root(tmp);
246 if (!root)
247 return false;
248 if (!(root->osc_control_set & OSC_PCI_EXPRESS_NATIVE_HP_CONTROL))
249 return false;
250
251 return true;
252}
253
254/** 225/**
255 * acpiphp_add_context - Add ACPIPHP context to an ACPI device object. 226 * acpiphp_add_context - Add ACPIPHP context to an ACPI device object.
256 * @handle: ACPI handle of the object to add a context to. 227 * @handle: ACPI handle of the object to add a context to.
@@ -334,7 +305,7 @@ static acpi_status acpiphp_add_context(acpi_handle handle, u32 lvl, void *data,
334 * expose slots to user space in those cases. 305 * expose slots to user space in those cases.
335 */ 306 */
336 if ((acpi_pci_check_ejectable(pbus, handle) || is_dock_device(adev)) 307 if ((acpi_pci_check_ejectable(pbus, handle) || is_dock_device(adev))
337 && !(pdev && device_is_managed_by_native_pciehp(pdev))) { 308 && !(pdev && pdev->is_hotplug_bridge && pciehp_is_native(pdev))) {
338 unsigned long long sun; 309 unsigned long long sun;
339 int retval; 310 int retval;
340 311