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@xxxxxxxxx> > > -Michał > > > Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@xxxxxxxxxxxxxxx> > > --- > > 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@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/igt-dev _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx