On Monday 21 May 2007 11:55:54 am David Brownell wrote: > On Monday 21 May 2007, Bjorn Helgaas wrote: > > We had a bug[1] a while back where e1000 would suspend a device and > > call pci_power_state(), which used ACPI to turn off the slot. The > > only problem was that this was a dual-port card and the other port > > was still active when the lights went out. > > Sounds like an ACPI bug to me: not properly tracking the users > of a given PCI power resource. acpi_bus_set_power() takes a "handle", which refers to the slot. I don't know where the refcounting should occur, and I don't know whether your patch affects this path. Just something to be aware of in this area. > I can't see that bug without > getting a Novell login -- you might want post the report rather > than its URL. Yeah, that's irritating. It likely was protected just by default, but I don't feel empowered to change that. The synopsis is that e1000_suspend() called pci_set_power_state(), which called platform_pci_set_power_state(), which evaluated the SxFy _PS3 method, which turned off the power to slot "x". Unfortunately, slot "x" contained a dual-port NIC, so suspending one port turned off the power to *both* ports. The e1000 driver didn't expect that, so it tried to do something with the other port and blew up. It was non-intuitive to me that a SxFy\_PS3 method would turn off the slot, affecting all functions, not just "Fy", but I guess that's the standard behavior: http://www.microsoft.com/whdc/system/pnppwr/hotadd/hotplugpci.mspx > > [1] https://bugzilla.novell.com/show_bug.cgi?id=162320 - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html