[PATCH i-g-t 5/5] tests/intel/xe_pm: Convert mmap tests to use existing d3 helpers
Nilawar, Badal
badal.nilawar at intel.com
Wed May 22 07:58:26 UTC 2024
On 21-05-2024 00:05, Rodrigo Vivi wrote:
> 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>
> 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 ced983d6c..90050207f 100644
> --- a/tests/intel/xe_pm.c
> +++ b/tests/intel/xe_pm.c
> @@ -516,19 +516,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;
> @@ -537,7 +543,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));
> @@ -563,7 +569,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++) {
> @@ -578,7 +584,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++) {
> @@ -588,7 +594,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);
> @@ -783,6 +789,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);
> + }
> }
LGTM
Reviewed-by: Badal Nilawar <badal.nilawar at intel.com>
>
> igt_subtest_group {
> @@ -798,38 +834,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);
More information about the igt-dev
mailing list