On Thursday, December 06, 2012 03:17:14 PM Huang Ying wrote: > On Wed, 2012-12-05 at 16:33 -0800, Sarah Sharp wrote: > > On Wed, Nov 28, 2012 at 02:54:06PM -0800, Sarah Sharp wrote: > > > On Mon, Nov 26, 2012 at 10:48:03PM +0100, Bjørn Mork wrote: > > > > Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> writes: > > > > > > > > > It looks like both Ulrich and Andrew have the same issue. I also have a > > > > > Lenovo x220, and I confirmed that when I turn on PCI runtime suspend, > > > > > the NEC host controller does not report port status changes when a new > > > > > USB device is plugged in. > > > > > > > > > > I'm running 3.6.7, and I'm pretty sure that runtime suspend worked for > > > > > the NEC host on some older kernel. I don't think the NEC host went into > > > > > D3cold on that kernel, though. Is there a way to disable D3cold and > > > > > just use D3hot instead? > > > > > > > > Yes, you have /sys/bus/pci/devices/.../d3cold_allowed > > > > See Documentation/ABI/testing/sysfs-bus-pci > > > > > > > > If this really is a problem with the D3cold support that went into 3.6 > > > > then I guess you should include Huang Ying in the discussions as well > > > > (CCed). > > > > > > Turning off D3 cold didn't help. Once the PCI device is suspended, > > > connect events do not generate an interrupt. > > > > > > I'll go see if I can figure out which kernel this worked on and bisect. > > > > Wakeup from D3 works fine on the 3.5.0 kernel, but fails on 3.6.2. I > > haven't fully bisected yet. > > > > In debugging, I found that if you only enable runtime suspend for the > > NEC host controller, the host successfully comes out of D3 when you plug > > in a USB device. However, if you enable runtime PM for the parent PCIe root > > port, it stops working. Disabling D3cold for both devices did not help. > > > > It looks like a PCI issue, so what sort of debugging info do you need > > from me? > > I do some debug with my NEC uPD720200, the patch is attached. I found > that NEC uPD720200 can not generate PME interrupt, so it can be remote > waken up only via polling. But if the PCIe bridge connected to NEC > uPD720200 goes into suspended, we can not poll it. Maybe we need a way > to disable PCIe bridge suspended if the underlying device can only be > waken up via polling. I think we need to be more intelligent about that. It looks like we can only suspend a port (or bridge in general) if all devices below it have the pme_poll flag unset. 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-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html