[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