Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Before Posting...
Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging

The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.

Check out The OSR Learning Library at:

PCI driver and Link State Power Management

A_KA_K Member - All Emails Posts: 21

Hi everyone,

I have an issue in my PCIe device driver if PCI Express Link State Power Management is set to Maximum power saving.
In that mode, a device reports an error because it gets an error during DMA transactions. Those errors happen from time to time but with hight rate, at least once in a minute.

I mean the following:
1. if Link State Power Management is off, everything works well.
2. if Link State Power Management is "Maximum power saving" the PCIe device starts reporting different kinds of issues, one of them is the DMA transaction error, another one is internal HW error which looks like the device doesn't have enough power or something like that.

I tried to use WdfDeviceStopIdle it did not help.

I'm looking for any way to disable Link State Power Management in the driver sources while the driver is working with the DMA.
is there any WDF API for that?

how could I configure power policies in my driver to avoid such behavior?

Thank you in advance


  • Peter_Viscarola_(OSR)Peter_Viscarola_(OSR) Administrator Posts: 7,807

    I'm pretty sure there's nothing in your driver that you can use to affect this. Your device is required to support ASPM.

    But you don't have to support every level of power savings. Can't you change the OS behavior by setting your Endpoint Link Capabilities Register appropriately? Does, for example, only supporting L0s (and not L1) allow your device to work properly?


    Peter Viscarola

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Kernel Debugging 30 Mar 2020 OSR Seminar Space
Developing Minifilters 15 Jun 2020 LIVE ONLINE
Writing WDF Drivers 22 June 2020 LIVE ONLINE
Internals & Software Drivers 28 Sept 2020 Dulles, VA