[CI 5/6] tests/intel/xe_pm: Convert mmap tests to use existing d3 helpers
Rodrigo Vivi
rodrigo.vivi at intel.com
Wed May 22 14:33:29 UTC 2024
Standardize d3 setup and ensure that it tests with D3cold and
D3hot.
v2: rebased
v3: rebase and fix description arguments (Francois)
Cc: Badal Nilawar <badal.nilawar at intel.com>
Cc: Anshuman Gupta <anshuman.gupta at intel.com>
Reviewed-by: Francois Dugast <francois.dugast at intel.com>
Reviewed-by: Badal Nilawar <badal.nilawar at intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
tests/intel/xe_pm.c | 82 ++++++++++++++++++++++++---------------------
1 file changed, 43 insertions(+), 39 deletions(-)
diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c
index 683f25969..438c6fe30 100644
--- a/tests/intel/xe_pm.c
+++ b/tests/intel/xe_pm.c
@@ -517,19 +517,25 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd)
}
/**
- * SUBTEST: d3-mmap-%s
+ * SUBTEST: %s-mmap-%s
* Description:
- * Validate mmap memory mapping with d3 state, for %arg[1] region,
+ * Validate mmap memory mapping with %arg[1] state, for %arg[2] region,
* if supported by device.
+ *
* arg[1]:
*
+ * @d3hot: d3hot
+ * @d3cold: d3cold
+ *
+ * arg[2]:
+ *
* @vram: vram region
* @system: system region
*
* Functionality: pm-d3
*/
static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
- enum mem_op first_op)
+ enum mem_op first_op, enum igt_acpi_d_state d_state)
{
size_t bo_size = 8192;
uint32_t *map = NULL;
@@ -539,7 +545,7 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
igt_require_f(placement, "Device doesn't support such memory region\n");
- igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ igt_assert(in_d3(device, d_state));
active_time = igt_pm_get_runtime_active_time(device.pci_xe);
bo_size = ALIGN(bo_size, xe_get_default_alignment(device.fd_xe));
@@ -565,7 +571,7 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
close(fw_handle);
sleep(1);
- igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ igt_assert(in_d3(device, d_state));
active_time = igt_pm_get_runtime_active_time(device.pci_xe);
for (i = 0; i < bo_size / sizeof(*map); i++) {
@@ -580,7 +586,7 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
igt_assert(igt_pm_get_runtime_active_time(device.pci_xe) >
active_time);
- igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ igt_assert(in_d3(device, d_state));
active_time = igt_pm_get_runtime_active_time(device.pci_xe);
for (i = 0; i < bo_size / sizeof(*map); i++) {
@@ -590,7 +596,7 @@ static void test_mmap(device_t device, uint32_t placement, uint32_t flags,
igt_assert(map[i] == MAGIC_2);
}
- igt_assert(igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED));
+ igt_assert(in_d3(device, d_state));
/* Runtime resume and check the pattern */
fw_handle = igt_debugfs_open(device.fd_xe, "forcewake_all", O_RDONLY);
@@ -785,6 +791,36 @@ igt_main
NO_SUSPEND, d->state, 0);
cleanup_d3(device);
}
+
+ igt_describe_f("Validate mmap memory mappings with system region,"
+ "when device along with parent bridge in %s", d->name);
+ igt_subtest_f("%s-mmap-system", d->name) {
+ igt_assert(setup_d3(device, d->state));
+ test_mmap(device, system_memory(device.fd_xe), 0,
+ READ, d->state);
+ test_mmap(device, system_memory(device.fd_xe), 0,
+ WRITE, d->state);
+ cleanup_d3(device);
+ }
+
+ igt_describe_f("Validate mmap memory mappings with vram region,"
+ "when device along with parent bridge in %s", d->name);
+ igt_subtest_f("%s-mmap-vram", d->name) {
+ int delay_ms = igt_pm_get_autosuspend_delay(device.pci_xe);
+
+ /* Give some auto suspend delay to validate rpm active during page fault */
+ igt_pm_set_autosuspend_delay(device.pci_xe, 1000);
+ igt_assert(setup_d3(device, d->state));
+ test_mmap(device, vram_memory(device.fd_xe, 0),
+ DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
+ READ, d->state);
+ test_mmap(device, vram_memory(device.fd_xe, 0),
+ DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM,
+ WRITE, d->state);
+ cleanup_d3(device);
+
+ igt_pm_set_autosuspend_delay(device.pci_xe, delay_ms);
+ }
}
igt_subtest_group {
@@ -800,38 +836,6 @@ igt_main
test_vram_d3cold_threshold(device, sysfs_fd);
}
- igt_describe("Validate mmap memory mappings with system region,"
- "when device along with parent bridge in d3");
- igt_subtest("d3-mmap-system") {
- dpms_on_off(device, DRM_MODE_DPMS_OFF);
- test_mmap(device, system_memory(device.fd_xe), 0, READ);
- test_mmap(device, system_memory(device.fd_xe), 0, WRITE);
- dpms_on_off(device, DRM_MODE_DPMS_ON);
- }
-
- igt_describe("Validate mmap memory mappings with vram region,"
- "when device along with parent bridge in d3");
- igt_subtest("d3-mmap-vram") {
- int delay_ms;
-
- if (device.pci_root != device.pci_xe) {
- igt_pm_enable_pci_card_runtime_pm(device.pci_root, NULL);
- igt_pm_set_d3cold_allowed(device.pci_slot_name, 1);
- }
-
- delay_ms = igt_pm_get_autosuspend_delay(device.pci_xe);
-
- /* Give some auto suspend delay to validate rpm active during page fault */
- igt_pm_set_autosuspend_delay(device.pci_xe, 1000);
- dpms_on_off(device, DRM_MODE_DPMS_OFF);
- test_mmap(device, vram_memory(device.fd_xe, 0),
- DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM, READ);
- test_mmap(device, vram_memory(device.fd_xe, 0),
- DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM, WRITE);
- dpms_on_off(device, DRM_MODE_DPMS_ON);
- igt_pm_set_autosuspend_delay(device.pci_xe, delay_ms);
- }
-
igt_subtest("mocs-rpm") {
dpms_on_off(device, DRM_MODE_DPMS_OFF);
test_mocs_suspend_resume(device, NO_SUSPEND);
--
2.44.0
More information about the igt-dev
mailing list