[PATCH 0/30] ACPI / hotplug / PCI: Major rework + Thunderbolt workarounds

From: Rafael J. Wysocki
Date: Wed Jul 17 2013 - 19:27:46 EST


Hi All,

Now the series has been rebased on top of current linux-pm.git/linux-next
and tested on two systems with Thunderbolt. Some changes have been made too. ->

On Friday, July 12, 2013 01:34:20 AM Rafael J. Wysocki wrote:
> Hi,
>
> I've made some progress with my ACPIPHP rework since I posted the series last
> time and here goes an update.
>
> First off, the previous series was somewhat racy, which should be fixed now.
> Apart from this there's quite some new material on top of the patches I posted
> last time (or rather on top of their new versions) and I integrated the
> Thunderbolt series from Mika with that. As a result,
>
> https://patchwork.kernel.org/patch/2817341/
>
> is required to be applied.
>
> Still untested, still based on 3.10 with ACPI+PM 3.11 material merged on top,
> but this time I don't have any plans to add more patches to the series for the
> time being. Also 3.11-rc1 should be out in a couple of days, so I'll be able
> to integrate this work with the previous cleanups series from Gerry and myself
> on top of it.
>
> I did my best not to change too much at a time and some steps add stuff that
> is removed by the subsequent ones, so hopefully it is bisectable.
>
> If anyone finds something questionable or outright bogus in these patches,
> please let me know before it's too late. ;-)
>
> [ 1/30] Make bus registration and unregistration symmetric. [Resend]
> [ 2/30] Consolidate acpiphp_enumerate_slots(). [Resend]
> [ 3/30] Fix error code path in register_slot(). [Resend]
> [ 4/30] Introduce hotplug context objects for ACPI device objects corresponding
> to PCI hotplug devices. [Update]
> [ 5/30] Unified notify handler for hotplug events. [Update]
> [ 6/30] Drop acpiphp_handle_to_bridge() and use context objects instead of it. [Update]
> [ 7/30] Pass entire hotplug context objects (instead of their fields
> individually) to event handling work functions. [Update]
> [ 8/30] Merge hotplug event handling functions. [Update]
> [ 9/30] Drop func field from struct acpiphp_bridge.
> [10/30] Refactor slot allocation code in register_slot().
> [11/30] Make acpiphp_enumerate_slots() to register all devices on the given bus
> and install the notification handler for all of them.
> [12/30] Drop sun field from struct acpiphp_slot.
> [13/30] Use common slot count variable in register_slot().

-> The one above has been dropped, because it might cause regressions to appear
on some systems, but that's not a big deal.

The numbering of the patches below has changed as a result, so the next one is
[13/30] now and so on.

> [14/30] Drop flags field from struct acpiphp_bridge.
> [15/30] Embed function structure into struct acpiphp_context.
> [16/30] Drop handle field from struct acpiphp_func.
> [17/30] Drop handle field from struct acpiphp_bridge.
> [18/30] Store parent bridge pointer in function objects and bus pointer in slot
> objects.
> [19/30] Rework ACPI namespace scanning and trimming routines.
> [20/30] Drop redundant checks from check_hotplug_bridge().
> [21/30] Consolidate slot disabling and ejecting
> [22/30] Do not queue up event handling work items for non-hotplug events.
> [23/30] Do not execute _PS0 and _PS3 directly.

This one was fixed after Mika had reported a problem with it.

> [24/30] Do not check SLOT_ENABLED in enable_device(). [Thunderbolt series]
> [25/30] Allow slots without new devices to be rescanned. [Thunderbolt series]
> [26/30] Check for new devices on enabled slots. [Thunderbolt series, TBD]

This one was reworked to use acpi_bus_trim() on ACPI device objects
corresponding to PCI devices being removed (it also uses _STA to check the
status of those devices if available).

> [27/30] Get rid of unused constands in acpiphp.h. [Thunderbolt series]
> [28/30] Sanitize acpiphp_get_(latch)|(adapter)_status(). [Thunderbolt series]
> [29/30] Redefine enable_device() and disable_device() (rename and change to void).
> [30/30] Clean up the usage of bridge_mutex.

The one above is [29/30] now and we have added one more patch:

[30/30] Drop check_sub_bridges() which isn't necessary any more.

The updated patches follow.

If you don't hate this stuff, I'll put it into linux-next over the weekend for
further testing.

Thanks,
Rafael


--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/