drivers/gpu/drm : changes for android-rpi
- reduce access limitation - support DRM_FORMAT_RGBA8888 - avoid dma_fence_set_error() overrun
This commit is contained in:
@@ -165,7 +165,7 @@ struct drm_file *drm_file_alloc(struct drm_minor *minor)
|
||||
file->minor = minor;
|
||||
|
||||
/* for compatibility root is always authenticated */
|
||||
file->authenticated = capable(CAP_SYS_ADMIN);
|
||||
file->authenticated = 1;
|
||||
|
||||
INIT_LIST_HEAD(&file->lhead);
|
||||
INIT_LIST_HEAD(&file->fbs);
|
||||
|
||||
@@ -543,7 +543,7 @@ int drm_version(struct drm_device *dev, void *data,
|
||||
int drm_ioctl_permit(u32 flags, struct drm_file *file_priv)
|
||||
{
|
||||
/* ROOT_ONLY is only for CAP_SYS_ADMIN */
|
||||
if (unlikely((flags & DRM_ROOT_ONLY) && !capable(CAP_SYS_ADMIN)))
|
||||
if (unlikely((flags & DRM_ROOT_ONLY) && !file_priv->authenticated))
|
||||
return -EACCES;
|
||||
|
||||
/* AUTH is only for authenticated or render client */
|
||||
@@ -671,7 +671,7 @@ static const struct drm_ioctl_desc drm_ioctls[] = {
|
||||
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETPLANERESOURCES, drm_mode_getplane_res, 0),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETCRTC, drm_mode_getcrtc, 0),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_SETCRTC, drm_mode_setcrtc, DRM_MASTER),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_SETCRTC, drm_mode_setcrtc, 0),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_GETPLANE, drm_mode_getplane, 0),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_SETPLANE, drm_mode_setplane, DRM_MASTER),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_CURSOR, drm_mode_cursor_ioctl, DRM_MASTER),
|
||||
@@ -689,7 +689,7 @@ static const struct drm_ioctl_desc drm_ioctls[] = {
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB, drm_mode_addfb_ioctl, 0),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB2, drm_mode_addfb2_ioctl, 0),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_RMFB, drm_mode_rmfb_ioctl, 0),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_PAGE_FLIP, drm_mode_page_flip_ioctl, DRM_MASTER),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_PAGE_FLIP, drm_mode_page_flip_ioctl, 0),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_DIRTYFB, drm_mode_dirtyfb_ioctl, DRM_MASTER),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_CREATE_DUMB, drm_mode_create_dumb_ioctl, DRM_RENDER_ALLOW),
|
||||
DRM_IOCTL_DEF(DRM_IOCTL_MODE_MAP_DUMB, drm_mode_mmap_dumb_ioctl, DRM_RENDER_ALLOW),
|
||||
|
||||
@@ -828,7 +828,7 @@ static int drm_sched_main(void *param)
|
||||
r);
|
||||
dma_fence_put(fence);
|
||||
} else {
|
||||
if (IS_ERR(fence))
|
||||
if ((fence != NULL) && IS_ERR(fence))
|
||||
dma_fence_set_error(&s_fence->finished, PTR_ERR(fence));
|
||||
|
||||
drm_sched_job_done(sched_job);
|
||||
|
||||
@@ -53,6 +53,12 @@ static const struct hvs_format {
|
||||
.pixel_order = HVS_PIXEL_ORDER_ARGB,
|
||||
.pixel_order_hvs5 = HVS_PIXEL_ORDER_ABGR,
|
||||
},
|
||||
{
|
||||
.drm = DRM_FORMAT_RGBA8888,
|
||||
.hvs = HVS_PIXEL_FORMAT_RGBA8888,
|
||||
.pixel_order = HVS_PIXEL_ORDER_ARGB,
|
||||
.pixel_order_hvs5 = HVS_PIXEL_ORDER_ABGR,
|
||||
},
|
||||
{
|
||||
.drm = DRM_FORMAT_XBGR8888,
|
||||
.hvs = HVS_PIXEL_FORMAT_RGBA8888,
|
||||
@@ -1604,6 +1610,7 @@ static bool vc4_format_mod_supported(struct drm_plane *plane,
|
||||
case DRM_FORMAT_ARGB8888:
|
||||
case DRM_FORMAT_ABGR8888:
|
||||
case DRM_FORMAT_XBGR8888:
|
||||
case DRM_FORMAT_RGBA8888:
|
||||
case DRM_FORMAT_RGB565:
|
||||
case DRM_FORMAT_BGR565:
|
||||
case DRM_FORMAT_ARGB1555:
|
||||
|
||||
Reference in New Issue
Block a user