[PATCH i-g-t] tests/intel/xe_pm: Fix runtime_pm tests

Gupta, Anshuman anshuman.gupta at intel.com
Fri Mar 8 05:06:46 UTC 2024



> -----Original Message-----
> From: Vivi, Rodrigo <rodrigo.vivi at intel.com>
> Sent: Friday, March 8, 2024 12:01 AM
> To: igt-dev at lists.freedesktop.org
> Cc: De Marchi, Lucas <lucas.demarchi at intel.com>; Vivi, Rodrigo
> <rodrigo.vivi at intel.com>; Gupta, Anshuman <anshuman.gupta at intel.com>
> Subject: [PATCH i-g-t] tests/intel/xe_pm: Fix runtime_pm tests
> 
> After the introduction of kernel commit
> 23cf006beac3 ("drm/xe: Runtime PM wake on every IOCTL") the many ioctl
> called during dpms_on_off might be forcing rpm to transition back and forth
> active to suspend.
> 
> Then, when setting the d3cold_allowed during a transitional runtime_state,
> we got some situation where the runtime pm might decide to keep the device
> awake for a very long time even with runtime_usage == 0.
> 
> Then our tests would start to break like crazy:
> 
> (xe_pm:29453) igt_pm-WARNING: timeout: pm_status expected:suspended,
> got:active
> (xe_pm:29453) CRITICAL: Test assertion failure function
> __igt_unique____real_main473, file ../tests/intel/xe_pm.c:556:
> (xe_pm:29453) CRITICAL: Failed assertion: in_d3(device, d->state) Stack trace:
>   #0 ../lib/igt_core.c:1989 __igt_fail_assert()
>   #1 ../tests/intel/xe_pm.c:432 __igt_unique____real_main473()
>   #2 ../tests/intel/xe_pm.c:473 main()
>   #3 [__libc_start_call_main+0x7a]
>   #4 [__libc_start_main+0x8b]
>   #5 [_start+0x25]
> Subtest d3hot-basic failed.
> **** DEBUG ****
> (xe_pm:29453) igt_pm-WARNING: timeout: pm_status expected:suspended,
> got:active
> 
> By simply waiting the suspended state before we touch d3cold_allowed, we
> get our tests back to a sane state.
> 
> Cc: Anshuman Gupta <anshuman.gupta at intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
Reviewed-by: Anshuman Gupta <anshuman.gupta at intel.com>
> ---
>  tests/intel/xe_pm.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/tests/intel/xe_pm.c b/tests/intel/xe_pm.c index
> a0045da0b..fcbed6249 100644
> --- a/tests/intel/xe_pm.c
> +++ b/tests/intel/xe_pm.c
> @@ -121,6 +121,16 @@ static bool setup_d3(device_t device, enum
> igt_acpi_d_state state)  {
>  	dpms_on_off(device, DRM_MODE_DPMS_OFF);
> 
> +	/*
> +	 * The drm calls used for dpms status above will result in IOCTLs
> +	 * that might wake up the device. Let's ensure the device is back
> +	 * to a stable suspended state before we can proceed with the
> +	 * configuration below, since some strange failures were seen
> +	 * when d3cold_allowed is toggle while runtime is in a transition
> +	 * state.
> +	 */
> +	igt_wait_for_pm_status(IGT_RUNTIME_PM_STATUS_SUSPENDED);
> +
>  	switch (state) {
>  	case IGT_ACPI_D3Cold:
>  		igt_require(igt_pm_acpi_d3cold_supported(device.pci_root));
> --
> 2.43.2



More information about the igt-dev mailing list