[i-g-t, v3] tests/intel/xe_pm: Enhance vram-d3cold-threshold test to verify VRAM self-refresh

Poosa, Karthik karthik.poosa at intel.com
Mon Jun 30 14:41:44 UTC 2025


On 30-06-2025 10:41, Sk Anirban wrote:
> Update the vram-d3cold-threshold test to include validation of VRAM
> self-refresh (VRSR) functionality, by including checks for VRSR capability
> and ModS residency. The test now differentiates between D3Cold and D3Hot
> states based on VRAM self-refresh capability.
>
> v2: Buffer size reduced from 4K to 256 and 8 bytes (Karthik)
> v3: Update error message (Karthik)
>
> Signed-off-by: Sk Anirban <sk.anirban at intel.com>
> ---
>   tests/intel/xe_pm.c | 49 ++++++++++++++++++++++++++++++++++++++++++++-
>   1 file changed, 48 insertions(+), 1 deletion(-)
>
> diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c
> index 7e9324eec..c9582d337 100644
> --- a/tests/intel/xe_pm.c
> +++ b/tests/intel/xe_pm.c
> @@ -144,6 +144,27 @@ static void vram_d3cold_threshold_restore(int sig)
>   	close(fd);
>   }
>   
> +static uint64_t read_mods(device_t device)
> +{
> +	uint64_t mods_value;
> +	char buf[256];
> +	int dir, ret;
> +	char *mods_ptr;
> +
> +	dir = igt_debugfs_dir(device.fd_xe);
> +	igt_assert(dir >= 0);
> +	ret = igt_debugfs_simple_read(dir, "gtidle/dgfx_pkg_residencies", buf, sizeof(buf));
> +	igt_assert_f(ret >= 0, "Debugfs dgfx_pkg_residencies is not present.\n");
> +
> +	close(dir);
> +
> +	mods_ptr = strstr(buf, "Package ModS: ");
> +	if (mods_ptr)
> +		sscanf(mods_ptr, "Package ModS: %"PRIu64"\n", &mods_value);
> +
> +	return mods_value;
> +}
> +
>   static bool setup_d3(device_t device, enum igt_acpi_d_state state)
>   {
>   	igt_require_f(igt_has_pci_pm_capability(device.pci_xe),
> @@ -561,10 +582,25 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd)
>   	};
>   	uint64_t vram_used_mb = 0, vram_total_mb = 0, threshold;
>   	uint32_t bo, placement;
> +	int vrsr_capability = 0;
> +	uint64_t mods_value = 0;
> +	char buf[8];
> +	int dir, ret;
>   	bool active;
>   	void *map;
>   	int i;
>   
> +	dir = igt_debugfs_dir(device.fd_xe);
> +	igt_assert(dir >= 0);
> +
> +	ret = igt_debugfs_simple_read(dir, "vrsr_capable",
> +				      buf, sizeof(buf));
> +	igt_assert_f(ret >= 0, "Debugfs vrsr_capable is not present.\n");
> +	close(dir);
> +
> +	if (strstr(buf, "true"))
> +		vrsr_capability = 1;
> +
>   	igt_require(xe_has_vram(device.fd_xe));
>   
>   	placement = vram_memory(device.fd_xe, 0);
> @@ -595,10 +631,21 @@ static void test_vram_d3cold_threshold(device_t device, int sysfs_fd)
>   	munmap(map, SIZE);
>   	set_vram_d3cold_threshold(sysfs_fd, threshold);
>   
> +	if (vrsr_capability)
> +		mods_value = read_mods(device);
> +
>   	/* Setup D3Cold but card should be in D3hot */
>   	igt_assert(setup_d3(device, IGT_ACPI_D3Cold));
>   	sleep(1);
> -	igt_assert(in_d3(device, IGT_ACPI_D3Hot));
> +	if (vrsr_capability) {
> +		igt_assert(in_d3(device, IGT_ACPI_D3Cold));
> +		mods_value = read_mods(device) - mods_value;
> +		igt_assert_f(mods_value > 0,
> +			     "GPU couldn't enter ModS!");
> +	} else {
> +		igt_assert(in_d3(device, IGT_ACPI_D3Hot));
> +	}
> +
>   	igt_assert(igt_pm_get_acpi_real_d_state(device.pci_root) == IGT_ACPI_D0);
>   	gem_close(device.fd_xe, bo);
>   

LGTM.

Reviewed-by: Karthik Poosa <karthik.poosa at intel.com>




More information about the igt-dev mailing list