[PATCH 0/3] ACPI / dock / PCI: Fix problems with dock and PCI hotplug

From: Rafael J. Wysocki
Date: Sat Jun 22 2013 - 17:17:10 EST

Hi All,

Unfortunately, the Alexander's docking station for Sony VAIO VPCZ23A4R is
basically unusable with v3.10-rc6 and, as it turns out, there are multiple
problems with it.

First, the acpiphp initialization ordering has changed recently,
acpiphp_enumerate_slots() is now always run for the first time during the
initial ACPI namespace scan in acpi_scan_init() which has broken support
for PCI devices on ACPI-based docking stations, because the ACPI dock
subsystem has to be initialized *before* acpiphp_enumerate_slots() is first

Fix that, and it turns out that undocking actually doesn't work correctly
because of some synchronization problems between the dock driver, acpiphp
and the PCI core. [That part was actually the most difficult to fix.]

Fix that, and you'll find that PCI resources are not allocated correctly
after undocking and re-docking (when initially docked).

The three patches in this series make the Alexander's docking station kind
of usable, so if no one has objections, I'd like to put them on a fast track
to Linus.

[1/3] Initialize ACPI dock subsystem before enumerating the PCI hierarchy
(that also makes the dock driver non-modular).

[2/3] Make acpiphp use the same rules for allocating PCI resources that are
used at boot time.

[3/3] Make acpiphp handle dock events synchronously (instead of spawning
separate work items to handle them). [The changelog of this patch
is likely one of the longest I've ever written and it sort of looks
like a crime story.]

This series is mostly based on the work of Jiang Liu (thanks Gerry!) and
the Alexander's testing that we wouldn't have done much progress without
(thanks Alexander!).

Alexander, I've modified patch [3/3] a bit since you have tested it.
The modifications shouldn't affect the behavior, but if you could re-test it,
that would be great.


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/