Hi Dave,
On Tue, Jun 14, 2022 at 04:11:20PM +0100, Dave Stevenson wrote:
On Fri, 10 Jun 2022 at 10:30, Maxime Ripard maxime@cerno.tech wrote:
Whenever the device and driver are unbound, the main device and all the subdevices will be removed by calling their unbind() method.
However, the DRM device itself will only be freed when the last user will have closed it.
It means that there is a time window where the device and its resources aren't there anymore, but the userspace can still call into our driver.
Fortunately, the DRM framework provides the drm_dev_enter() and drm_dev_exit() functions to make sure our underlying device is still there for the section protected by those calls. Let's add them to the HVS driver.
The framework appears to rely on the remove function calling drm_dev_unplug instead of drm_dev_unregister, but I haven't seen a patch that makes that change in the vc4 driver. Have I missed it, or is there some other route to set the unplugged flag that drm_dev_enter/exit are relying on?
You're right, we should have called drm_dev_unplug. I fixed it up (and the fallouts)
Thanks! Maxime