Re: PCI PME# routing problem?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux