[igt-dev] [RFC PATCH i-g-t v2 7/8] tests/core_hotunplug: Add 'PRIME handle' variant
Janusz Krzysztofik
janusz.krzysztofik at linux.intel.com
Fri Jun 26 10:56:48 UTC 2020
Hi Michał,
On Thu, 2020-06-25 at 21:57 +0200, Michał Winiarski wrote:
> Quoting Janusz Krzysztofik (2020-06-22 18:44:14)
> > Even if all device file descriptors are closed on device hotunplug,
> > PRIME exported objects may still exists, referenced by still open
> > dma-buf file handles. Add a subtest that keeps such handle open on
> > device hotunplug.
> >
> > v2: rebase on upstream
>
> Would be interesting to see what happens when someone actually imports an
> object from unplugged device (or the device is unplugged after it was imported).
> But perhaps that's something for the future.
Yes, let's keep it relatively simple for now. There seems to be quite
a few possible scenarios to cover. However, I'm going to add a very
basic use-after-hotunplug check, similar to what we have (hopefully)
agreed for context and address space variants.
>
> Also - the naming should probably be kept distinct from the other "lateclose"
> tests, since here we're closing the device FD before the unplug.
> Maybe just "prime-hotunplug"?
Since we are still interested in exercising the driver behaviour on
late closing the prime handle (now this case also explodes inside
intel-iommu), let's keep that namig even if we close the device and
only keep the prime file open.
Thanks,
Janusz
> But that's up to you - either way:
>
> Reviewed-by: Michał Winiarski <michal.winiarski at intel.com>
>
> -Michał
>
> > Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
> > ---
> > tests/core_hotunplug.c | 36 ++++++++++++++++++++++++++++++++++++
> > 1 file changed, 36 insertions(+)
> >
> > diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c
> > index c30d98a69..7cb699cc2 100644
> > --- a/tests/core_hotunplug.c
> > +++ b/tests/core_hotunplug.c
> > @@ -379,6 +379,35 @@ static void gem_hotunplug_lateclose(void)
> > healthcheck();
> > }
> >
> > +static void prime_hotunplug_lateclose(void)
> > +{
> > + struct hotunplug priv;
> > + uint32_t handle;
> > + int dmabuf;
> > +
> > + prepare_for_rescan(&priv);
> > +
> > + igt_require_gem(priv.fd.drm);
> > +
> > + local_debug("creating and PRIME-exporting a GEM object");
> > + handle = gem_create(priv.fd.drm, 4096);
> > + dmabuf = prime_handle_to_fd(priv.fd.drm, handle);
> > +
> > + local_debug("closing the device");
> > + close(priv.fd.drm);
> > +
> > + local_debug("hot unplugging the device");
> > + device_unplug(priv.fd.sysfs_dev);
> > +
> > + local_debug("late closing the PRIME file handle");
> > + close(dmabuf);
> > +
> > + local_debug("recovering the device");
> > + bus_rescan(priv.fd.sysfs_bus);
> > +
> > + healthcheck();
> > +}
> > +
> > /* Main */
> >
> > igt_main
> > @@ -465,4 +494,11 @@ igt_main
> >
> > igt_fixture
> > igt_abort_on_f(failure, "%s\n", failure);
> > +
> > + igt_describe("Check if a device with a still open PRIME-exported object can be cleanly unplugged, then released and recovered");
> > + igt_subtest("prime-hotunplug-lateclose")
> > + prime_hotunplug_lateclose();
> > +
> > + igt_fixture
> > + igt_abort_on_f(failure, "%s\n", failure);
> > }
> > --
> > 2.21.1
> >
> > _______________________________________________
> > igt-dev mailing list
> > igt-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/igt-dev
More information about the igt-dev
mailing list