PCI driver and Link State Power Management

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

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