@@ -793,6 +793,13 @@ int drm_mode_createblob_ioctl(struct drm_device *dev,
if (!drm_core_check_feature(dev, DRIVER_MODESET))
return -EOPNOTSUPP;
+ if (dev->driver->createblob_check) {
+ ret = dev->driver->createblob_check(
+ dev, out_resp->length, file_priv);
+ if (ret)
+ return ret;
+ }
+
blob = drm_property_create_blob(dev, out_resp->length, NULL);
if (IS_ERR(blob))
return PTR_ERR(blob);
@@ -776,6 +776,15 @@ struct drm_driver {
int (*dma_quiescent) (struct drm_device *);
int (*context_dtor) (struct drm_device *dev, int context);
int dev_priv_size;
+
+ /**
+ * @createblob_check: driver check for creating blob properties
+ *
+ * Hook for checking blob limitations imposed by drivers
+ */
+ int (*createblob_check) (struct drm_device *dev,
+ size_t length,
+ struct drm_file *file_priv);
};
extern unsigned int drm_debug;
Allow drivers with blob limitations to run checks before blobs are created. This can be used to limit how much memory can be allocated based on driver requirements. Signed-off-by: Steve Cohen <cohens@codeaurora.org> --- drivers/gpu/drm/drm_property.c | 7 +++++++ include/drm/drm_drv.h | 9 +++++++++ 2 files changed, 16 insertions(+)