Subject: [PATCH -v3] PCI, ACPI: Use DEVICE_ACPI_HANDLE for root bus struct pointer

So we could avoid calling acpi_get_pci_rootbridge_handle that could cause deadlock.

non root pci bus is using bridge->dev archdata.acpi_handle.
we shoudl use that same field for for root bus

-v3: do not need to and  should not set that archdata.acpi_handle directly
     acpi_pci_root_add
	==> pci_acpi_scan_root
		==> pci_create_root_bus
			==> device_register(&bridge->dev)
				==> device_add
					==> platform_notify
						==> acpi_bind_one
     will set that for us.
	that mean's we still need to keep acpi_get_pci_rootbridge_handle for
	acpi_pci_find_root_bridge in acpi_pci_bus bus_type.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Len Brown <lenb@kernel.org>
Cc: linux-acpi@vger.kernel.org

---
 include/linux/pci-acpi.h |   15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

Index: linux-2.6/include/linux/pci-acpi.h
===================================================================
--- linux-2.6.orig/include/linux/pci-acpi.h
+++ linux-2.6/include/linux/pci-acpi.h
@@ -22,19 +22,24 @@ extern phys_addr_t acpi_pci_root_get_mcf
 static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev)
 {
 	struct pci_bus *pbus = pdev->bus;
+
 	/* Find a PCI root bus */
 	while (!pci_is_root_bus(pbus))
 		pbus = pbus->parent;
-	return acpi_get_pci_rootbridge_handle(pci_domain_nr(pbus),
-					      pbus->number);
+
+	return DEVICE_ACPI_HANDLE(pbus->bridge);
 }
 
 static inline acpi_handle acpi_pci_get_bridge_handle(struct pci_bus *pbus)
 {
+	struct device *dev;
+
 	if (!pci_is_root_bus(pbus))
-		return DEVICE_ACPI_HANDLE(&(pbus->self->dev));
-	return acpi_get_pci_rootbridge_handle(pci_domain_nr(pbus),
-					      pbus->number);
+		dev = &pbus->self->dev;
+	else
+		dev = pbus->bridge;
+
+	return DEVICE_ACPI_HANDLE(dev);
 }
 #endif
 
