diff options
author | David Herrmann <dh.herrmann@gmail.com> | 2014-01-03 08:24:19 -0500 |
---|---|---|
committer | David Herrmann <dh.herrmann@gmail.com> | 2014-03-16 07:23:33 -0400 |
commit | 6796cb16c088905bf3af40548fda68c09e6f6ee5 (patch) | |
tree | d40162f17dad7b54ac63feaf62b7c84493556f5a /include | |
parent | 31bbe16f6d88622d6731fa2cb4ab38d57d844ac1 (diff) |
drm: use anon-inode instead of relying on cdevs
DRM drivers share a common address_space across all character-devices of a
single DRM device. This allows simple buffer eviction and mapping-control.
However, DRM core currently waits for the first ->open() on any char-dev
to mark the underlying inode as backing inode of the device. This delayed
initialization causes ugly conditions all over the place:
if (dev->dev_mapping)
do_sth();
To avoid delayed initialization and to stop reusing the inode of the
char-dev, we allocate an anonymous inode for each DRM device and reset
filp->f_mapping to it on ->open().
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/drm/drmP.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h index 04a7f31301f8..3227b716ffdf 100644 --- a/include/drm/drmP.h +++ b/include/drm/drmP.h | |||
@@ -1183,7 +1183,7 @@ struct drm_device { | |||
1183 | struct drm_sg_mem *sg; /**< Scatter gather memory */ | 1183 | struct drm_sg_mem *sg; /**< Scatter gather memory */ |
1184 | unsigned int num_crtcs; /**< Number of CRTCs on this device */ | 1184 | unsigned int num_crtcs; /**< Number of CRTCs on this device */ |
1185 | void *dev_private; /**< device private data */ | 1185 | void *dev_private; /**< device private data */ |
1186 | struct address_space *dev_mapping; | 1186 | struct inode *anon_inode; |
1187 | struct drm_sigdata sigdata; /**< For block_all_signals */ | 1187 | struct drm_sigdata sigdata; /**< For block_all_signals */ |
1188 | sigset_t sigmask; | 1188 | sigset_t sigmask; |
1189 | 1189 | ||