summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2016-03-07 14:01:18 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2016-03-07 14:18:43 +0000
commitec1ac2e2e952778c204374a6d186ec40951bc256 (patch)
tree72d518aafba9f91c7730c42b66adb9fae8de7b9e
parent174a06b129d63a09486dd9ee8d6368cbf46a64c1 (diff)
igt/pm_rpm: Wait for PCI D3
The transition to PCI device state D3 is not instantaneous and only started when runtime suspended. Allow the driver/hardware a little bit of time to complete the transition before declaring a test failure. References: https://bugs.freedesktop.org/show_bug.cgi?id=93123 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r--tests/pm_rpm.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c
index e84a9d3b..03ef2eba 100644
--- a/tests/pm_rpm.c
+++ b/tests/pm_rpm.c
@@ -1337,15 +1337,13 @@ static void reg_read_ioctl_subtest(void)
static bool device_in_pci_d3(void)
{
- struct pci_device *pci_dev;
- int rc;
uint16_t val;
+ int rc;
- pci_dev = intel_get_pci_device();
-
- rc = pci_device_cfg_read_u16(pci_dev, &val, 0xd4);
+ rc = pci_device_cfg_read_u16(intel_get_pci_device(), &val, 0xd4);
igt_assert_eq(rc, 0);
+ igt_debug("%s: PCI D3 state=%d\n", __func__, val & 0x3);
return (val & 0x3) == 0x3;
}
@@ -1354,11 +1352,9 @@ static void pci_d3_state_subtest(void)
igt_require(has_runtime_pm);
disable_all_screens_and_wait(&ms_data);
-
- igt_assert(device_in_pci_d3());
+ igt_assert(igt_wait(device_in_pci_d3(), 2000, 100));
enable_one_screen_and_wait(&ms_data);
-
igt_assert(!device_in_pci_d3());
}