[igt-dev] [PATCH i-g-t] tests/xe: Add a test that validates GT C0 on exec
Gupta, Anshuman
anshuman.gupta at intel.com
Fri Jul 21 09:22:52 UTC 2023
> -----Original Message-----
> From: Tauro, Riana <riana.tauro at intel.com>
> Sent: Thursday, July 20, 2023 10:00 AM
> To: igt-dev at lists.freedesktop.org
> Cc: Tauro, Riana <riana.tauro at intel.com>; Gupta, Anshuman
> <anshuman.gupta at intel.com>; Dixit, Ashutosh <ashutosh.dixit at intel.com>;
> Belgaumkar, Vinay <vinay.belgaumkar at intel.com>; Nilawar, Badal
> <badal.nilawar at intel.com>; kamil.konieczny at linux.intel.com
> Subject: [PATCH i-g-t] tests/xe: Add a test that validates GT C0 on exec
>
> Add a test that validates if GT is in C0 while running a spinner on an engine of
> the gt
We should have a test as well to test opportunistic RC6 during workload execution ?
This is a negative test, not sure if this is going to fail.
Br,
Anshuman.
>
> Signed-off-by: Riana Tauro <riana.tauro at intel.com>
> ---
> tests/xe/xe_pm_residency.c | 39
> ++++++++++++++++++++++++++++++++++++++
> 1 file changed, 39 insertions(+)
>
> diff --git a/tests/xe/xe_pm_residency.c b/tests/xe/xe_pm_residency.c
> index a20c4449c..7614af761 100644
> --- a/tests/xe/xe_pm_residency.c
> +++ b/tests/xe/xe_pm_residency.c
> @@ -14,6 +14,7 @@
> #include "igt.h"
> #include "igt_sysfs.h"
>
> +#include "xe/xe_ioctl.h"
> #include "xe/xe_query.h"
>
> #define SLEEP_DURATION 3000 /* in milliseconds */ @@ -76,6 +77,38 @@
> static unsigned long read_idle_residency(int fd, int gt)
> return residency;
> }
>
> +/**
> + * SUBTEST: gt-c0-on-exec
> + * Description: Validate if GT is in C0 while running a spinner
> + * on an engine of that GT
> + * Run type: FULL
> + */
> +static void test_c0_exec(int fd, struct drm_xe_engine_class_instance
> +*hwe) {
> + uint64_t ahnd;
> + unsigned int engine;
> + uint32_t vm;
> + igt_spin_t *spin;
> +
> + /* Start with GT in C6 */
> + igt_assert_f(igt_wait(is_gt_in_c6(fd, hwe->gt_id), 1000, 1), "GT is
> +not in C6\n");
> +
> + igt_debug("Run on engine: %s:%d\n",
> + xe_engine_class_string(hwe->engine_class), hwe-
> >engine_instance);
> + vm = xe_vm_create(fd, 0, 0);
> + engine = xe_engine_create(fd, vm, hwe, 0);
> + ahnd = intel_allocator_open(fd, 0, INTEL_ALLOCATOR_RELOC);
> + spin = igt_spin_new(fd, .ahnd = ahnd, .engine = engine, .vm = vm);
> +
> + /* GT should be in C0 when busy */
> + igt_assert_f(!is_gt_in_c6(fd, hwe->gt_id), "GT in C6\n");
> +
> + igt_spin_free(fd, spin);
> + put_ahnd(ahnd);
> + xe_engine_destroy(fd, engine);
> + xe_vm_destroy(fd, vm);
> +}
> +
> /**
> * SUBTEST: idle-residency
> * Description: basic residency test to validate idle residency @@ -101,12
> +134,18 @@ static void test_idle_residency(int fd, int gt) igt_main {
> int fd, gt;
> + struct drm_xe_engine_class_instance *hwe;
>
> igt_fixture {
> fd = drm_open_driver(DRIVER_XE);
> igt_require(!IS_PONTEVECCHIO(xe_dev_id(fd)));
> }
>
> + igt_describe("Validate GT C0 on exec");
> + igt_subtest("gt-c0-on-exec")
> + xe_for_each_hw_engine(fd, hwe)
> + test_c0_exec(fd, hwe);
> +
> igt_describe("Validate GT C6 on idle");
> igt_subtest("gt-c6-on-idle")
> xe_for_each_gt(fd, gt)
> --
> 2.40.0
More information about the igt-dev
mailing list