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: [PATCH 00/16] DRM VMA Access Management
Newsgroups: gmane.comp.video.dri.devel
Date: Tuesday 13th August 2013 19:38:21 UTC (over 4 years ago)
Hi

This is the second part of the unified VMA manager. It implements proper
access
management so applications can map only buffers that they own handles for.

Patches of interest probably are:
 #1: Implement VMA access management helpers
 #9: Make TTM deny unprivileged mmap() calls
 #10: Do the same for GEM
The remaining patches just hook it up in all drivers.

The implementation is pretty easy. On gem_open_object() drivers add the
"struct
file*" pointer to the list of allowed open-files of a bo. On
gem_close_object()
drivers remove it again. For TTM, drivers do this manually as there is no
access
to TTM bo's from generic GEM code. For GEM, drivers can set DRIVER_GEM_MMAP
(copied from airlied's proposal) and GEM core will take care of this.

If we want this to be more uniform, I can add gem_open_object() and
gem_close_object() callbacks to all the GEM drivers and call
drm_vma_node_allow() and drm_vma_node_revoke() respectively. Just let me
know
what you think is cleaner.

Cheers
David

David Herrmann (16):
  drm/vma: add access management helpers
  drm/ast: implement mmap access managament
  drm/cirrus: implement mmap access managament
  drm/mgag200: implement mmap access managament
  drm/nouveau: implement mmap access managament
  drm/radeon: implement mmap access managament
  drm/qxl: implement mmap access managament
  drm/vmwgfx: implement mmap access managament
  drm/ttm: prevent mmap access to unauthorized users
  drm/gem: implement mmap access management
  drm/i915: enable GEM mmap access management
  drm/exynos: enable GEM mmap access management
  drm/gma500: enable GEM mmap access management
  drm/omap: enable GEM mmap access management
  drm/udl: enable GEM mmap access management
  drm/host1x: enable GEM mmap access management

 Documentation/DocBook/drm.tmpl           |  13 +++
 drivers/gpu/drm/ast/ast_drv.c            |   2 +
 drivers/gpu/drm/ast/ast_drv.h            |   4 +
 drivers/gpu/drm/ast/ast_main.c           |  15 +++
 drivers/gpu/drm/cirrus/cirrus_drv.h      |   4 +
 drivers/gpu/drm/cirrus/cirrus_main.c     |  15 +++
 drivers/gpu/drm/drm_gem.c                |  37 +++++++-
 drivers/gpu/drm/drm_vma_manager.c        | 155
+++++++++++++++++++++++++++++++
 drivers/gpu/drm/exynos/exynos_drm_drv.c  |   3 +-
 drivers/gpu/drm/gma500/psb_drv.c         |   3 +-
 drivers/gpu/drm/i915/i915_drv.c          |   3 +-
 drivers/gpu/drm/mgag200/mgag200_drv.c    |   2 +
 drivers/gpu/drm/mgag200/mgag200_drv.h    |   4 +
 drivers/gpu/drm/mgag200/mgag200_main.c   |  15 +++
 drivers/gpu/drm/nouveau/nouveau_gem.c    |  19 +++-
 drivers/gpu/drm/omapdrm/omap_drv.c       |   3 +-
 drivers/gpu/drm/qxl/qxl_gem.c            |   7 +-
 drivers/gpu/drm/radeon/radeon_gem.c      |   7 ++
 drivers/gpu/drm/ttm/ttm_bo_vm.c          |   9 +-
 drivers/gpu/drm/udl/udl_drv.c            |   3 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_resource.c |  29 +++---
 drivers/gpu/host1x/drm/drm.c             |   2 +-
 include/drm/drmP.h                       |   1 +
 include/drm/drm_vma_manager.h            |  21 ++++-
 24 files changed, 342 insertions(+), 34 deletions(-)

-- 
1.8.3.4
 
CD: 4ms