lkml.org 
[lkml]   [2015]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 13/31] PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge()
    Date
    Move pcibios_root_bridge_prepare() to pci_create_host_bridge().

    Signed-off-by: Yijing Wang <wangyijing@huawei.com>
    ---
    drivers/pci/host-bridge.c | 16 +++++++++++++---
    drivers/pci/probe.c | 3 ---
    2 files changed, 13 insertions(+), 6 deletions(-)

    diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c
    index b0ed8da..87c4fc5 100644
    --- a/drivers/pci/host-bridge.c
    +++ b/drivers/pci/host-bridge.c
    @@ -92,9 +92,7 @@ struct pci_host_bridge *pci_create_host_bridge(
    pr_warn("pci host bridge pci%04x:%02x exist\n",
    host->domain, bus);
    mutex_unlock(&pci_host_mutex);
    - pci_free_resource_list(&host->windows);
    - kfree(host);
    - return NULL;
    + goto free_res;
    }
    }
    list_add_tail(&host->list, &pci_host_bridge_list);
    @@ -105,6 +103,10 @@ struct pci_host_bridge *pci_create_host_bridge(
    dev_set_name(&host->dev, "pci%04x:%02x",
    host->domain, bus);

    + error = pcibios_root_bridge_prepare(host);
    + if (error)
    + goto list_del;
    +
    error = device_register(&host->dev);
    if (error) {
    put_device(&host->dev);
    @@ -112,6 +114,14 @@ struct pci_host_bridge *pci_create_host_bridge(
    }

    return host;
    +list_del:
    + mutex_lock(&pci_host_mutex);
    + list_del(&host->list);
    + mutex_unlock(&pci_host_mutex);
    +free_res:
    + pci_free_resource_list(&host->windows);
    + kfree(host);
    + return NULL;
    }

    void pci_free_host_bridge(struct pci_host_bridge *host)
    diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
    index 418a426..ee17d9a 100644
    --- a/drivers/pci/probe.c
    +++ b/drivers/pci/probe.c
    @@ -1893,9 +1893,6 @@ static struct pci_bus *__pci_create_root_bus(

    bridge->bus = b;
    b->bridge = get_device(&bridge->dev);
    - error = pcibios_root_bridge_prepare(bridge);
    - if (error)
    - goto put_dev;

    pcibios_set_root_bus_speed(bridge);
    device_enable_async_suspend(b->bridge);
    --
    1.7.1


    \
     
     \ /
      Last update: 2015-03-23 14:01    [W:4.157 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site