Re: [PATCH 8/9] PCI / ACPI / PM: Platform support for PCI PME wake-up (rev. 7)

From: Rafael J. Wysocki
Date: Fri Feb 12 2010 - 19:20:04 EST


On Friday 12 February 2010, Rafael J. Wysocki wrote:
> On Friday 12 February 2010, Gary Hade wrote:
...
> > There seems to be a problem.
> >
> > The first time I booted I was able to successfully hot-remove
> > a PCIe card and then successfully hot-add it to a different slot.
> > When I tried to hot-remove a PCI-X card that was also present
> > during boot I saw that lingering blinking amber LED issue.
> >
> > After rebooting I tried the same thing but this time I did
> > not see the lingering blinking amber LED after removing the
> > PCI-X card but I did see it when removing the PCIe card.
> > I then tried to hot-add the PCIe card to a different slot
> > and noticed the below messages.
> >
> > I don't think I will be able to try to characterize this
> > better or test any more patches until Monday.
>
> OK, thanks for testing.
>
> It seems we have a deadlock on pci_acpi_notify_mtx, but I'm yet to understand
> the exact mechanism of it.

In fact there are two problems in there. First, the bridge event notification
calls handle_bridge_insertion() which attempts to install a PM notifier for
the bridge and that deadlocks, because it tries to acquire the mutex
recursively. Second, apparently, init_bridge_misc() may be called in the
notification code path and it attempts to unregister the notifier and register
it again, which can't be done with pci_acpi_notify_mtx held.

I guess there are similar problems on the hot remove notification path.

Anyway, I have a new version of the patch and I'm going to test it a bit
over the weekend. Unfortunately, I don't have hardware with PCI hotplug
capability, so I'll send you the new patch for testing on Monday, if you don't
mind.

Rafael
--
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/