From 4a9a7b88786d48bb2ea5937d4281bf71a27b5de6 Mon Sep 17 00:00:00 2001 From: Kenji Kaneshige Date: Wed, 25 Nov 2009 21:04:30 +0900 Subject: [PATCH] --- yaml --- r: 174831 b: refs/heads/master c: 1ce5e83063bf388a2c9fa1e3d4d3122146ad305d h: refs/heads/master i: 174829: c85c779e6a1eaaa0415984ad9113b9c49f8d3ed1 174827: bc786832afe5c9a89c4c4e27b9fbd23c1ce7a09d 174823: c88da197b0cef203060ea2d43afe0fbf2d4a042d 174815: b4c75814974b1ff7127469ed7e4a115645e2c8af v: v3 --- [refs] | 2 +- trunk/drivers/pci/pcie/portdrv_core.c | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 096557c488fb..2f3533e7094b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: dc5351784eb36f1fec4efa88e01581be72c0b711 +refs/heads/master: 1ce5e83063bf388a2c9fa1e3d4d3122146ad305d diff --git a/trunk/drivers/pci/pcie/portdrv_core.c b/trunk/drivers/pci/pcie/portdrv_core.c index d208dc2d62fd..a2ac618a95be 100644 --- a/trunk/drivers/pci/pcie/portdrv_core.c +++ b/trunk/drivers/pci/pcie/portdrv_core.c @@ -302,6 +302,12 @@ int pcie_port_device_register(struct pci_dev *dev) port_data->port_type = dev->pcie_type; pci_set_drvdata(dev, port_data); + /* Enable PCI Express port device */ + status = pci_enable_device(dev); + if (status) + goto error_kfree; + pci_set_master(dev); + /* * Initialize service irqs. Don't use service devices that * require interrupts if there is no way to generate them. @@ -310,14 +316,9 @@ int pcie_port_device_register(struct pci_dev *dev) if (status) { capabilities &= PCIE_PORT_SERVICE_VC; if (!capabilities) - goto Error; + goto error_disable; } - status = pci_enable_device(dev); - if (status) - goto Error; - pci_set_master(dev); - /* Allocate child services if any */ for (i = 0, nr_serv = 0; i < PCIE_PORT_DEVICE_MAXSERVICES; i++) { int service = 1 << i; @@ -330,14 +331,14 @@ int pcie_port_device_register(struct pci_dev *dev) nr_serv++; } if (!nr_serv) { - pci_disable_device(dev); status = -ENODEV; - goto Error; + goto error_disable; } - return 0; - Error: +error_disable: + pci_disable_device(dev); +error_kfree: kfree(port_data); return status; }