]> err.no Git - linux-2.6/blobdiff - drivers/pci/hotplug/pciehp_core.c
pciehp: evaluate _OSC/OSHP before controller init
[linux-2.6] / drivers / pci / hotplug / pciehp_core.c
index 54553b187b19086ae992b25e3012fd91c4aecc49..49414e9100de1adde8b9ad11975b15ca49cf48c2 100644 (file)
@@ -444,7 +444,13 @@ static int pciehp_probe(struct pcie_device *dev, const struct pcie_port_service_
        struct controller *ctrl;
        struct slot *t_slot;
        u8 value;
-       struct pci_dev *pdev;
+       struct pci_dev *pdev = dev->port;
+
+       if (pciehp_force)
+               dbg("Bypassing BIOS check for pciehp use on %s\n",
+                   pci_name(pdev));
+       else if (pciehp_get_hp_hw_control_from_firmware(pdev))
+               goto err_out_none;
 
        ctrl = kzalloc(sizeof(*ctrl), GFP_KERNEL);
        if (!ctrl) {
@@ -453,8 +459,6 @@ static int pciehp_probe(struct pcie_device *dev, const struct pcie_port_service_
        }
        INIT_LIST_HEAD(&ctrl->slot_list);
 
-       pdev = dev->port;
-
        rc = pcie_init(ctrl, dev);
        if (rc) {
                dbg("%s: controller initialization failed\n", PCIE_MODULE_NAME);