Re: [PATCH v8 2/2] PCI/ACPI: Use device constraints instead of dates to opt devices into D3

From: Mario Limonciello
Date: Thu Aug 03 2023 - 22:32:49 EST


On 8/3/23 06:38, Mario Limonciello wrote:
On 8/3/23 00:01, Mika Westerberg wrote:
Hi,

On Wed, Aug 02, 2023 at 03:10:13PM -0500, Mario Limonciello wrote:
@@ -3036,11 +3044,8 @@ bool pci_bridge_d3_possible(struct pci_dev *bridge)
          if (dmi_check_system(bridge_d3_blacklist))
              return false;
-        /*
-         * It should be safe to put PCIe ports from 2015 or newer
-         * to D3.
-         */
-        if (dmi_get_bios_year() >= 2015)
+        /* the platform indicates in a device constraint that D3 is needed */
+        if (platform_constraint_d3(bridge))

This for sure causes some sort of power regression on the Intel
platforms made after 2015. Why not check for the constraint and:

Are you sure?  I saw it as an explanation of how Windows could put the systems into D3 when there is no other PM related ACPI objects.

- If present and enabled, use the desired D-state
- If present and disabled, leave the device in D0
- If not present use the existing cutoff date

?

Thanks! That sounds very reasonable to me.  I'll double check it in my case.

I've played with this a bit, and I found that I can make it work by moving the constraints check into pci_target_state() in the non-ACPI power manageable case.

To me this works pretty well to reflect spec policy ambiguity but should avoid regressions dropping the 2015 check. I'll send out a v9 with this approach.