WdfDeviceAssignS0IdleSettings fails with STATUS_POWER_STATE_INVALID

Hi
I have a PCI device that I would like to it to support wake in S0
so I’m calling
WdfDeviceAssignS0IdleSettings() with idle cap == IdleCanWakeFromS0

the problem is that I’m getting STATUS_POWER_STATE_INVALID.
in WDF Log I’m seeing

15: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x78B56600 !devobj 0x89DC04C8 entering Power State WdfDevStatePowerD0StartingConnectInterrupt from WdfDevStatePowerD0Starting
16: FxPkgPnp::PowerPolicyGetDeviceDeepestDeviceWakeState - SystemWake PowerSystemUnspecified and DeviceWake PowerDeviceD0 power state reported in device capabilities do not support wake. Both the SystemWake and DeviceWake members should be nonzero to support wake-up on this system.
17: FxPkgPnp::PowerPolicySetS0IdleSettings - DeviceWake power state reported in device capabilities PowerDeviceD0 indicates that device can not signal a wake event, 0xc00002d3(STATUS_POWER_STATE_INVALID)

Any Pointers to understand the issue?
how can I debug this?
is there a way to get PCI.sys traces?

The firmware in your machine doesn’t support delivering wake signals while the machine is in S0. You’re not giving us any details about your device or the machine, so it’s difficult to give you much more in response.

If I were you, I’d code my driver to deal with this failure gracefully, as many machines don’t support delivering wake signals while the machine is running.

If you’re just wondering what you can do to get machine into a state where you could test your driver, and if your device is a PCI Express device, then I’d suggest rooting around in the BIOS of the machine to get it to give control of PCI Express to Windows. When PCIe control is granted to Windows, runtime wake signals will work, as long as the device is below a root port, and not embedded in the chipset.

  • Jake Oshins
    Windows Kernel Team

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@gmail.com
Sent: Sunday, February 3, 2013 7:27 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] WdfDeviceAssignS0IdleSettings fails with STATUS_POWER_STATE_INVALID

Hi
I have a PCI device that I would like to it to support wake in S0 so I’m calling
WdfDeviceAssignS0IdleSettings() with idle cap == IdleCanWakeFromS0

the problem is that I’m getting STATUS_POWER_STATE_INVALID.
in WDF Log I’m seeing

15: FxPkgPnp::PowerEnterNewState - WDFDEVICE 0x78B56600 !devobj 0x89DC04C8 entering Power State WdfDevStatePowerD0StartingConnectInterrupt from WdfDevStatePowerD0Starting
16: FxPkgPnp::PowerPolicyGetDeviceDeepestDeviceWakeState - SystemWake PowerSystemUnspecified and DeviceWake PowerDeviceD0 power state reported in device capabilities do not support wake. Both the SystemWake and DeviceWake members should be nonzero to support wake-up on this system.
17: FxPkgPnp::PowerPolicySetS0IdleSettings - DeviceWake power state reported in device capabilities PowerDeviceD0 indicates that device can not signal a wake event, 0xc00002d3(STATUS_POWER_STATE_INVALID)

Any Pointers to understand the issue?
how can I debug this?
is there a way to get PCI.sys traces?


NTDEV is sponsored by OSR

OSR is HIRING!! See http://www.osr.com/careers

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer