[PATCH i-g-t] tests/xe_compute: Don't require ccs_mode on every GT

Gustavo Sousa gustavo.sousa at intel.com
Thu Mar 28 02:02:47 UTC 2024


Quoting Matt Roper (2024-03-27 20:47:47-03:00)
>On Wed, Mar 27, 2024 at 11:14:27AM -0300, Gustavo Sousa wrote:
>> Quoting Matt Roper (2024-03-22 19:19:08-03:00)
>> >On platforms with standalone media, we expect some GTs to have CCS
>> >engines (meaning ccs_mode can be tested if there's more than one CCS),
>> >but the media GT will never have any CCS engines and will never expose
>> >ccs_mode.  Move the igt_require() out of the loop so that we don't
>> >declare the whole test a skip upon encountering the media GT when the
>> >test already executed successfully on the primary GT.
>> >
>> >Cc: Niranjana Vishwanathapura <niranjana.vishwanathapura at intel.com>
>> >Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
>> >---
>> > tests/intel/xe_compute.c | 8 ++++++--
>> > 1 file changed, 6 insertions(+), 2 deletions(-)
>> >
>> >diff --git a/tests/intel/xe_compute.c b/tests/intel/xe_compute.c
>> >index 42f42ca0c..fffcfa08e 100644
>> >--- a/tests/intel/xe_compute.c
>> >+++ b/tests/intel/xe_compute.c
>> >@@ -51,13 +51,15 @@ test_ccs_mode(int num_gt)
>> 
>> Looks like we also need to fix test_compute_kernel_with_ccs_mode()?
>> 
>> > {
>> >         struct drm_xe_engine_class_instance *hwe;
>> >         u32 gt, m, ccs_mode, vm, q, num_slices;
>> >-        int fd, gt_fd;
>> >+        int fd, gt_fd, num_gt_with_ccs_mode = 0;
>> > 
>> >         for (gt = 0; gt < num_gt; gt++) {
>> >-                igt_require(get_num_cslices(gt, &num_slices));
>> >+                if (get_num_cslices(gt, &num_slices) == 0)
>> 
>> This next comment is not really related to this specific patch, but I
>> wonder if `igt_require(get_num_cslices(gt, &num_slices))` should have
>> been `igt_require(get_num_cslices(gt, &num_slices) > 0)`, since ccs_mode
>> is only exposed in that case.
>
>get_num_cslices() actually returns a boolean success/fail for whether it
>was able to read a value at all rather than the number of cslices it
>discovered (the number of cslices is instead returned via the num_slices
>parameter that gets passed by reference).  So I think the check should
>be correct (fail means we couldn't read the sysfs, usually because it
>didn't exist on this GT).  In v2 I'll clarify by checking for
>!get_num_cslices() rather than "get_num_cslices() == 0" since that's
>more appropriate for testing a bool value anyway.

Yep. Thanks for clarifying! :-)

My bad on not reading the code carefully.

>
>The two sysfs nodes this test uses (num_cslices and ccs_mode) only get
>created if the GT has two or more cslices.  Arguably we could improve
>the test a bit by adding some assertions that we never read a value of 0
>or 1 from the num_cslices sysfs (since the sysfs shouldn't have existed
>in that case), but that's getting a bit away from the goal of this
>specific patch.

Alright. Makes sense.

--
Gustavo Sousa

>
>
>Matt
>
>> 
>> If so, then maybe add a follow up patch replacing `get_num_cslices(gt,
>> &num_slices) == 0` with `get_num_cslices(gt, &num_slices) <= 1` in the
>> condition above?
>> 
>> --
>> Gustavo Sousa
>> 
>> >+                        continue;
>> > 
>> >                 gt_fd = gt_sysfs_open(gt);
>> >                 igt_assert(igt_sysfs_printf(gt_fd, "ccs_mode", "%u", 0) < 0);
>> >+                num_gt_with_ccs_mode++;
>> >                 for (m = 1; m <= num_slices; m++) {
>> >                         /* compute slices are to be equally distributed among enabled engines */
>> >                         if (num_slices % m) {
>> >@@ -105,6 +107,8 @@ test_ccs_mode(int num_gt)
>> > 
>> >                 close(gt_fd);
>> >         }
>> >+
>> >+        igt_require(num_gt_with_ccs_mode > 0);
>> > }
>> > 
>> > /**
>> >-- 
>> >2.43.0
>> >
>
>-- 
>Matt Roper
>Graphics Software Engineer
>Linux GPU Platform Enablement
>Intel Corporation


More information about the igt-dev mailing list