[igt-dev] [PATCH i-g-t v2 2/2] test/i915_pm_rpm: Verify bridge binds with pcieport driver

Anshuman Gupta anshuman.gupta at intel.com
Wed Nov 2 11:58:51 UTC 2022


It has been observed that on some Intel x86 host,
PCI core does not bind the Intel dgfx pci card's pci bridge
devices(virtual switch ports) to the pcieport driver.
This leaves pci bridge devices to D0 state and burns power on
dgfx card. It will block the card d3cold as well.
Therefore skip the basic-pci-d3-state subtest in case of
bridge pci devices do not bind with pcieport driver.

v2:
- Commit log modification. [Rodrigo]
- Kept a separate patch for unrelated changes. [Rodrigo]

Signed-off-by: Anshuman Gupta <anshuman.gupta at intel.com>
---
 tests/i915/i915_pm_rpm.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c
index 017c05fde..366a3050c 100644
--- a/tests/i915/i915_pm_rpm.c
+++ b/tests/i915/i915_pm_rpm.c
@@ -1559,15 +1559,20 @@ static bool device_in_pci_d3(struct pci_device *pci_dev)
 
 static void pci_d3_state_subtest(void)
 {
-	struct pci_device *pci_dev;
+	struct pci_device *pci_dev, *bridge_pci_dev;
 
 	igt_require(has_runtime_pm);
 
 	pci_dev = igt_device_get_pci_device(drm_fd);
+	bridge_pci_dev = pci_device_get_parent_bridge(pci_dev);
 
 	disable_all_screens_and_wait(&ms_data);
 	igt_assert(igt_wait(device_in_pci_d3(pci_dev), 2000, 100));
 
+	if (gem_has_lmem(drm_fd))
+		igt_require_f(pci_device_has_kernel_driver(bridge_pci_dev),
+			      "pci bridge device does not bind with pcieport driver\n");
+
 	enable_one_screen_or_forcewake_get_and_wait(&ms_data);
 	igt_assert(!device_in_pci_d3(pci_dev));
 	forcewake_put(&ms_data);
-- 
2.25.1



More information about the igt-dev mailing list