On Sun, 25 Sep 2011, Rafael J. Wysocki wrote: > Hi, > > On Thursday, September 22, 2011, Alan Stern wrote: > > Rafael: > > > > I just tried testing the wakeup functionality of my OHCI USB > > controller, something I haven't done in a long time. It's an add-on > > PCI card, and it uses regular PCI PM: > > > > # lspci -vv -s 1:01.1 > > 01:01.1 USB Controller: NEC Corporation USB (rev 43) (prog-if 10 [OHCI]) > > Subsystem: NEC Corporation Hama USB 2.0 CardBus > > Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- > > Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- > > Latency: 32 (250ns min, 10500ns max), Cache Line Size: 32 bytes > > Interrupt: pin B routed to IRQ 23 > > Region 0: Memory at fe5de000 (32-bit, non-prefetchable) [size=4K] > > Capabilities: [40] Power Management version 2 > > Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-) > > Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- > > Kernel driver in use: ohci_hcd > > > > The tests were under 3.1-rc4. The device wakes up perfectly well from > > runtime suspend, but it doesn't wake the computer from system suspend. > > Perhaps something goes wrong when the PME# signal has to be routed > > between PCI buses while the system is asleep, perhaps not -- I don't > > know how to tell. > > > > Do you have any ideas for fixing this problem? > > To start with, I would add debug printk's to acpi_pci_sleep_wake() and > acpi_pci_propagate_wakeup_enable() to see if the wakeup settings > propagate to the bridge and possibly up. The test results are as follows. During late suspend: acpi_pci_sleep_wake() is called for the 0000:01:01.1 device with enable set to 1. acpi_pci_can_wakeup() returns 0. acpi_pci_propagate_wakeup_enable() is called for the 0000:01 bus device, also known as 0000:00:1e.0. acpi_pm_device_sleep_wake() is called for 0000:00:1e.0; it prints out "pci 0000:00:1e.0: wake-up capability enabled by ACPI" and returns 0. This causes acpi_pci_propagate_wakeup_enable() to return from within the "while (bus->parent)" loop. There also are log messages stating "ohci_hcd 0000:01:01.1: PME# enabled" and "ohci_hcd 0000:01:01.1: --> PCI D3hot". Nevertheless, it doesn't wake up the system. Alan Stern -- 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