Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: David Herrmann <dh.herrmann <at> gmail.com>
Subject: [RFC v2 0/6] DRM revoke support
Newsgroups: gmane.comp.video.dri.devel
Date: Monday 21st October 2013 22:33:22 UTC (over 4 years ago)
Hi

This is the 2nd revision of reliable unplug support for DRM. As revoke
support
for the generic VFS layer is still not even close to being merged, this
fixes
the generic DRM layer to handle unplugged devices gracefully.

This series fixes the DRM core to track any running f_ops. During device
unplugging (which is the same as revoke()) we mark a device as unplugged so
no
new f_ops are started. Then we wait for running f_ops to finish and then
close
all open files (and leave just dummies behind). Now we can unregister the
device
without waiting for userspace to call close() on all fds.

Any comments are welcome. Drivers which provide their own f_ops need to be
fixed, other than that this is already working. Tested with udl locally.
Running
applications get poll(HUP) or SIGBUS for mmaps depending on what they're
doing
if they access the device after unplugging.

Thanks
David

David Herrmann (6):
  percpu_rw_semaphore: export symbols for modules
  percpu_rw_semaphore: add percpu_down_read_trylock()
  drm: split drm_release()
  drm: make dev->unplugged reliable
  drm: make drm_dev_unregister() immediate
  drm: zap mmaps for dead devices

 drivers/gpu/drm/Kconfig             |   1 +
 drivers/gpu/drm/drm_drv.c           |   5 +-
 drivers/gpu/drm/drm_fops.c          | 111 ++++++++++++++-------
 drivers/gpu/drm/drm_gem.c           |  10 +-
 drivers/gpu/drm/drm_stub.c          | 192
++++++++++++++++++++++++++++++------
 drivers/gpu/drm/drm_vm.c            |   3 +-
 drivers/gpu/drm/udl/udl_connector.c |   2 +-
 drivers/gpu/drm/udl/udl_drv.c       |   2 +-
 drivers/gpu/drm/udl/udl_fb.c        |   4 +-
 include/drm/drmP.h                  |  27 +++--
 include/linux/percpu-rwsem.h        |   1 +
 lib/Makefile                        |   2 +-
 lib/percpu-rwsem.c                  |  27 +++++
 13 files changed, 296 insertions(+), 91 deletions(-)

-- 
1.8.4.1
 
CD: 4ms