Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755424AbbDULjY (ORCPT ); Tue, 21 Apr 2015 07:39:24 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:15502 "EHLO szxga02-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754742AbbDULiU (ORCPT ); Tue, 21 Apr 2015 07:38:20 -0400 From: Yijing Wang To: Bjorn Helgaas CC: Jiang Liu , , Yinghai Lu , , Marc Zyngier , , Russell King , , , Thomas Gleixner , Benjamin Herrenschmidt , Rusty Russell , Tony Luck , , "David S. Miller" , "Guan Xuetao" , , , Liviu Dudau , "Arnd Bergmann" , Geert Uytterhoeven , "Yijing Wang" Subject: [PATCH v10 13/29] PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge() Date: Tue, 21 Apr 2015 19:34:32 +0800 Message-ID: <1429616088-10249-14-git-send-email-wangyijing@huawei.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1429616088-10249-1-git-send-email-wangyijing@huawei.com> References: <1429616088-10249-1-git-send-email-wangyijing@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.175.100.166] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2082 Lines: 71 Move pcibios_root_bridge_prepare() to pci_create_host_bridge(). Signed-off-by: Yijing Wang --- 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 b1cc6ef..6309970 100644 --- a/drivers/pci/host-bridge.c +++ b/drivers/pci/host-bridge.c @@ -109,9 +109,7 @@ struct pci_host_bridge *pci_create_host_bridge( if (tmp->domain == host->domain && pci_host_busn_res_check(host, tmp)) { 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); @@ -122,6 +120,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); @@ -129,6 +131,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 3c53fe7..e75b27c 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -1902,9 +1902,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_bridge; pcibios_set_root_bus_speed(bridge); device_enable_async_suspend(b->bridge); -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/