Patchwork PCI / hotplug / ACPI: Get rid of check_sub_bridges()

login
register
mail settings
Submitter Mika Westerberg
Date July 13, 2013, 5:09 p.m.
Message ID <1373735399-28055-1-git-send-email-mika.westerberg@linux.intel.com>
Download mbox | patch
Permalink /patch/258835/
State Not Applicable
Headers show

Comments

Mika Westerberg - July 13, 2013, 5:09 p.m.
Now that acpiphp_check_bridge() always enumerates devices behind the
bridge, there is no need to do that for each sub-bridge anymore like it is
done in the current ACPI-based PCI hotplug code. Given this we don't need
check_sub_bridges() anymore and can drop the function completely.

This also simplifies the ACPIPHP code a bit.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
---
This applies on top of v3.10 with Rafael's ACPIPHP + Thunderbolt series
applied:

	http://www.spinics.net/lists/linux-acpi/msg44480.html


 drivers/pci/hotplug/acpiphp_glue.c | 25 -------------------------
 1 file changed, 25 deletions(-)
Rafael J. Wysocki - July 13, 2013, 9:47 p.m.
On Saturday, July 13, 2013 08:09:59 PM Mika Westerberg wrote:
> Now that acpiphp_check_bridge() always enumerates devices behind the
> bridge, there is no need to do that for each sub-bridge anymore like it is
> done in the current ACPI-based PCI hotplug code. Given this we don't need
> check_sub_bridges() anymore and can drop the function completely.
> 
> This also simplifies the ACPIPHP code a bit.
> 
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> ---
> This applies on top of v3.10 with Rafael's ACPIPHP + Thunderbolt series
> applied:
>

OK, I added it to my bleeding-edge branch along with this series:

> 	http://www.spinics.net/lists/linux-acpi/msg44480.html

rebased on top of some previous ACPI cleanup commits.  I needed to make some
changes in the process (and fixed up some breakage reported by the auto build
testing), hopefully I didn't break anything.  If you're in an adventurous mood,
testing would be welcome. ;-)  [That already includes the majority of 3.11
material from Linus, though, so unexpected breakage elsewhere may happen.]

Thanks,
Rafael


>  drivers/pci/hotplug/acpiphp_glue.c | 25 -------------------------
>  1 file changed, 25 deletions(-)
> 
> diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
> index 62e09af..741504a 100644
> --- a/drivers/pci/hotplug/acpiphp_glue.c
> +++ b/drivers/pci/hotplug/acpiphp_glue.c
> @@ -760,25 +760,6 @@ static void acpiphp_sanitize_bus(struct pci_bus *bus)
>   * ACPI event handlers
>   */
>  
> -static acpi_status
> -check_sub_bridges(acpi_handle handle, u32 lvl, void *context, void **rv)
> -{
> -	struct acpiphp_bridge *bridge;
> -	char objname[64];
> -	struct acpi_buffer buffer = { .length = sizeof(objname),
> -				      .pointer = objname };
> -
> -	bridge = acpiphp_handle_to_bridge(handle);
> -	if (bridge) {
> -		acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
> -		dbg("%s: re-enumerating slots under %s\n",
> -			__func__, objname);
> -		acpiphp_check_bridge(bridge);
> -		put_bridge(bridge);
> -	}
> -	return AE_OK ;
> -}
> -
>  void acpiphp_check_host_bridge(acpi_handle handle)
>  {
>  	struct acpiphp_bridge *bridge;
> @@ -788,9 +769,6 @@ void acpiphp_check_host_bridge(acpi_handle handle)
>  		acpiphp_check_bridge(bridge);
>  		put_bridge(bridge);
>  	}
> -
> -	acpi_walk_namespace(ACPI_TYPE_DEVICE, handle,
> -		ACPI_UINT32_MAX, check_sub_bridges, NULL, NULL, NULL);
>  }
>  
>  static void hotplug_event(acpi_handle handle, u32 type, void *data)
> @@ -818,9 +796,6 @@ static void hotplug_event(acpi_handle handle, u32 type, void *data)
>  		dbg("%s: re-enumerating slots under %s\n", __func__, objname);
>  		if (bridge) {
>  			acpiphp_check_bridge(bridge);
> -			acpi_walk_namespace(ACPI_TYPE_DEVICE, handle,
> -					    ACPI_UINT32_MAX, check_sub_bridges,
> -					    NULL, NULL, NULL);
>  		} else {
>  			struct acpiphp_slot *slot = func->slot;
>  
>
Mika Westerberg - July 14, 2013, 7:08 a.m.
On Sat, Jul 13, 2013 at 11:47:26PM +0200, Rafael J. Wysocki wrote:
> On Saturday, July 13, 2013 08:09:59 PM Mika Westerberg wrote:
> > Now that acpiphp_check_bridge() always enumerates devices behind the
> > bridge, there is no need to do that for each sub-bridge anymore like it is
> > done in the current ACPI-based PCI hotplug code. Given this we don't need
> > check_sub_bridges() anymore and can drop the function completely.
> > 
> > This also simplifies the ACPIPHP code a bit.
> > 
> > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> > ---
> > This applies on top of v3.10 with Rafael's ACPIPHP + Thunderbolt series
> > applied:
> >
> 
> OK, I added it to my bleeding-edge branch along with this series:
> 
> > 	http://www.spinics.net/lists/linux-acpi/msg44480.html
> 
> rebased on top of some previous ACPI cleanup commits.  I needed to make some
> changes in the process (and fixed up some breakage reported by the auto build
> testing), hopefully I didn't break anything.  If you're in an adventurous mood,
> testing would be welcome. ;-)  [That already includes the majority of 3.11
> material from Linus, though, so unexpected breakage elsewhere may happen.]

Tried the bleeding-edge branch on both of our test machines and Thunderbolt
still works fine.
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Rafael J. Wysocki - July 14, 2013, 3:12 p.m.
On Sunday, July 14, 2013 10:08:28 AM Mika Westerberg wrote:
> On Sat, Jul 13, 2013 at 11:47:26PM +0200, Rafael J. Wysocki wrote:
> > On Saturday, July 13, 2013 08:09:59 PM Mika Westerberg wrote:
> > > Now that acpiphp_check_bridge() always enumerates devices behind the
> > > bridge, there is no need to do that for each sub-bridge anymore like it is
> > > done in the current ACPI-based PCI hotplug code. Given this we don't need
> > > check_sub_bridges() anymore and can drop the function completely.
> > > 
> > > This also simplifies the ACPIPHP code a bit.
> > > 
> > > Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> > > ---
> > > This applies on top of v3.10 with Rafael's ACPIPHP + Thunderbolt series
> > > applied:
> > >
> > 
> > OK, I added it to my bleeding-edge branch along with this series:
> > 
> > > 	http://www.spinics.net/lists/linux-acpi/msg44480.html
> > 
> > rebased on top of some previous ACPI cleanup commits.  I needed to make some
> > changes in the process (and fixed up some breakage reported by the auto build
> > testing), hopefully I didn't break anything.  If you're in an adventurous mood,
> > testing would be welcome. ;-)  [That already includes the majority of 3.11
> > material from Linus, though, so unexpected breakage elsewhere may happen.]
> 
> Tried the bleeding-edge branch on both of our test machines and Thunderbolt
> still works fine.

Awesome! :-)

Thanks a lot for testing.  If Bjorn doesn't hate it, I'll put the series into
linux-next after 3.11-rc1 is released.

Patch

diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index 62e09af..741504a 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -760,25 +760,6 @@  static void acpiphp_sanitize_bus(struct pci_bus *bus)
  * ACPI event handlers
  */
 
-static acpi_status
-check_sub_bridges(acpi_handle handle, u32 lvl, void *context, void **rv)
-{
-	struct acpiphp_bridge *bridge;
-	char objname[64];
-	struct acpi_buffer buffer = { .length = sizeof(objname),
-				      .pointer = objname };
-
-	bridge = acpiphp_handle_to_bridge(handle);
-	if (bridge) {
-		acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
-		dbg("%s: re-enumerating slots under %s\n",
-			__func__, objname);
-		acpiphp_check_bridge(bridge);
-		put_bridge(bridge);
-	}
-	return AE_OK ;
-}
-
 void acpiphp_check_host_bridge(acpi_handle handle)
 {
 	struct acpiphp_bridge *bridge;
@@ -788,9 +769,6 @@  void acpiphp_check_host_bridge(acpi_handle handle)
 		acpiphp_check_bridge(bridge);
 		put_bridge(bridge);
 	}
-
-	acpi_walk_namespace(ACPI_TYPE_DEVICE, handle,
-		ACPI_UINT32_MAX, check_sub_bridges, NULL, NULL, NULL);
 }
 
 static void hotplug_event(acpi_handle handle, u32 type, void *data)
@@ -818,9 +796,6 @@  static void hotplug_event(acpi_handle handle, u32 type, void *data)
 		dbg("%s: re-enumerating slots under %s\n", __func__, objname);
 		if (bridge) {
 			acpiphp_check_bridge(bridge);
-			acpi_walk_namespace(ACPI_TYPE_DEVICE, handle,
-					    ACPI_UINT32_MAX, check_sub_bridges,
-					    NULL, NULL, NULL);
 		} else {
 			struct acpiphp_slot *slot = func->slot;