[PATCH i-g-t v13 5/5] tests/intel/gem_exec_gttfill: simplify multiGPU subtest
Kamil Konieczny
kamil.konieczny at linux.intel.com
Wed Mar 20 14:55:44 UTC 2024
Hi Janusz,
On 2024-03-19 at 10:36:49 +0100, Janusz Krzysztofik wrote:
> Hi Kamil,
>
> The series now looks good to me, however, I still have one doubt.
>
> On Monday, 18 March 2024 14:26:23 CET Kamil Konieczny wrote:
> > Simplify multi-GPU subtest with the help of new multigpu library.
> >
> > v10: remove igt_require_multigpu() as it checks filters but we
> > want to use legacy opens (Kamil), correct Cc name (Zbigniew)
> >
> > Cc: "Zbigniew Kempczyński" <zbigniew.kempczynski at intel.com>
> > Cc: "Dominik Karol Piątkowski" <dominik.karol.piatkowski at intel.com>
> > Cc: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
> > Signed-off-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> > ---
> > tests/intel/gem_exec_gttfill.c | 13 +++----------
> > 1 file changed, 3 insertions(+), 10 deletions(-)
> >
> > diff --git a/tests/intel/gem_exec_gttfill.c b/tests/intel/gem_exec_gttfill.c
> > index b1063437b..1eb7325bb 100644
> > --- a/tests/intel/gem_exec_gttfill.c
> > +++ b/tests/intel/gem_exec_gttfill.c
> > @@ -24,8 +24,8 @@
> > #include "i915/gem.h"
> > #include "i915/gem_create.h"
> > #include "igt.h"
> > -#include "igt_device_scan.h"
> > #include "igt_rand.h"
> > +#include "igt_multigpu.h"
> > /**
> > * TEST: gem exec gttfill
> > * Description: Fill the GTT with batches.
> > @@ -251,7 +251,7 @@ igt_main
> > {
> > const struct intel_execution_engine2 *e;
> > const intel_ctx_t *ctx;
> > - int i915 = -1, gpu_count;
> > + int i915 = -1;
> >
> > igt_fixture {
> > i915 = drm_open_driver(DRIVER_INTEL);
> > @@ -285,17 +285,11 @@ igt_main
> > igt_fixture {
> > igt_stop_hang_detector();
> > intel_ctx_destroy(i915, ctx);
> > - // prepare multigpu tests
> > - gpu_count = igt_device_filter_count();
> > }
> >
> > igt_subtest("multigpu-basic") { /* run on two or more discrete cards */
> > - igt_require(gpu_count > 1);
> > - igt_multi_fork(child, gpu_count) {
> > - int g_fd;
> > + igt_multi_fork_foreach_gpu(g_fd, gpu_idx, DRIVER_INTEL) {
> > // prepare
> > - g_fd = __drm_open_driver_another(child, DRIVER_INTEL);
> > - igt_assert(g_fd >= 0);
>
> Since igt_multi_fork_foreach_gpu() now calls multigpu_open_another() which
> introduces igt_require_gem() into the processing path, you are effectively
> changing prerequisites before calling intel_ctx_create_all_physical(). Two
> questions arise:
> 1) Was that missing requirement for GEM on Intel intentional here, or was that
> a bug which you are now fixing while being at it?
Looks like a bug in multigpu subtest, there is igt_require_gem() in fixture
in beginning of igt_main().
> 2) Do we expect all future users of igt_multi_fork_foreach_gpu() to always
> require GEM on Intel? If you think so then can you please explain why?
igt_require_gem() is a way to idle GPU and reset it to defaults on i915.
>
> Wouldn't igt_multi_fork_foreach_gpu() be more versatile if it called
> drm_open_driver_another() instead, without that skip on no GEM? Wouldn't it
> be more clear if tests were explicitly taking care as needed of such scenario
> specific prerequisites?
>
You are right, it will be better, I will drop multigpu_open_another(),
that way igt_require_gem() should be used at places where test would need it.
Regards,
Kamil
> If you still see benefits from using multigpu_open_another() here then could
> we please plan for introducing two variants of igt_multi_fork_foreach_gpu(),
> one that doesn't skip and the other that skips on no GEM, unless you are sure
> we don't need the former? Maybe the latter could be implemented as a wrapper
> around the former, while the opposite seems not doable.
>
> Thanks,
> Janusz
>
> > ctx = intel_ctx_create_all_physical(g_fd);
> > igt_fork_hang_detector(g_fd);
> > // subtest
> > @@ -303,7 +297,6 @@ igt_main
> > // release resources
> > igt_stop_hang_detector();
> > intel_ctx_destroy(g_fd, ctx);
> > - drm_close_driver(g_fd);
> > }
> >
> > igt_waitchildren();
> >
>
>
>
>
More information about the igt-dev
mailing list