aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2009-12-02 13:15:25 -0500
committerDave Airlie <airlied@redhat.com>2009-12-03 17:55:46 -0500
commit862302ffe422378a5213f558fc5cdf62c37050a9 (patch)
tree13557874eb479023e5a64f12990416045ea60818 /include/drm
parent9340d8cfeacd16cef1cbe94527f7baaed7640669 (diff)
drm: Add support for drm master_[set|drop] callbacks.
The vmwgfx driver has a per master rw lock around TTM, to guarantee mutual exclusion when needed. This is typically when all evictable buffers are evicted due to 1) vt switch 2) master switch 3) suspend / resume. In the multi-master case, on master switch the new master takes the previously active master lock in write mode, and then evicts all buffers. Any clients to previous masters will then block on that lock when trying to validate a buffer. fbdev also acts as a virtual master wrt this. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by: Jakob Bornecrantz <jakob@vmware.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include/drm')
-rw-r--r--include/drm/drmP.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 1b72a526ba64..770772c014aa 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -774,6 +774,15 @@ struct drm_driver {
774 /* Master routines */ 774 /* Master routines */
775 int (*master_create)(struct drm_device *dev, struct drm_master *master); 775 int (*master_create)(struct drm_device *dev, struct drm_master *master);
776 void (*master_destroy)(struct drm_device *dev, struct drm_master *master); 776 void (*master_destroy)(struct drm_device *dev, struct drm_master *master);
777 /**
778 * master_set is called whenever the minor master is set.
779 * master_drop is called whenever the minor master is dropped.
780 */
781
782 int (*master_set)(struct drm_device *dev, struct drm_file *file_priv,
783 bool from_open);
784 void (*master_drop)(struct drm_device *dev, struct drm_file *file_priv,
785 bool from_release);
777 786
778 int (*proc_init)(struct drm_minor *minor); 787 int (*proc_init)(struct drm_minor *minor);
779 void (*proc_cleanup)(struct drm_minor *minor); 788 void (*proc_cleanup)(struct drm_minor *minor);