[PATCH 04/35] drm: Forbid legacy MAP functions for DRIVER_MODESET
Daniel Vetter
daniel at ffwll.ch
Wed Apr 27 06:46:31 UTC 2016
On Tue, Apr 26, 2016 at 05:35:42PM -0400, Alex Deucher wrote:
> On Tue, Apr 26, 2016 at 1:29 PM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> > Like in
> >
> > commit 0e975980d435d58df2d430d688b8c18778b42218
> > Author: Peter Antoine <peter.antoine at intel.com>
> > Date: Tue Jun 23 08:18:49 2015 +0100
> >
> > drm: Turn off Legacy Context Functions
> >
> > we need to again make an exception for nouveau, but everyone else
> > really doesn't need this.
> >
> > Cc: Peter Antoine <peter.antoine at intel.com>
> > Cc: Ben Skeggs <bskeggs at redhat.com>
> > Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
>
> Not really familiar with why nouveau needs this, but the logic seems correct.
Hm, I thought the referenced commit explained this, but now that I recheck
it doesn't. I'm not too sure again myself why I thought nouveau needs
this. The legacy ctx stuff is required because of some old kms nouveau ddx
that still used that stuff. I thought it also used legacy maps ... I'll
double check once more.
-Daniel
> Acked-by: Alex Deucher <alexander.deucher at amd.com>
>
>
> > ---
> > drivers/gpu/drm/drm_bufs.c | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/drm_bufs.c b/drivers/gpu/drm/drm_bufs.c
> > index d92db7007f62..e8a12a4fd400 100644
> > --- a/drivers/gpu/drm/drm_bufs.c
> > +++ b/drivers/gpu/drm/drm_bufs.c
> > @@ -396,6 +396,10 @@ int drm_legacy_addmap_ioctl(struct drm_device *dev, void *data,
> > if (!(capable(CAP_SYS_ADMIN) || map->type == _DRM_AGP || map->type == _DRM_SHM))
> > return -EPERM;
> >
> > + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
> > + drm_core_check_feature(dev, DRIVER_MODESET))
> > + return -EINVAL;
> > +
> > err = drm_addmap_core(dev, map->offset, map->size, map->type,
> > map->flags, &maplist);
> >
> > @@ -438,6 +442,10 @@ int drm_legacy_getmap_ioctl(struct drm_device *dev, void *data,
> > int idx;
> > int i;
> >
> > + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
> > + drm_core_check_feature(dev, DRIVER_MODESET))
> > + return -EINVAL;
> > +
> > idx = map->offset;
> > if (idx < 0)
> > return -EINVAL;
> > @@ -569,6 +577,10 @@ int drm_legacy_rmmap_ioctl(struct drm_device *dev, void *data,
> > struct drm_map_list *r_list;
> > int ret;
> >
> > + if (!drm_core_check_feature(dev, DRIVER_KMS_LEGACY_CONTEXT) &&
> > + drm_core_check_feature(dev, DRIVER_MODESET))
> > + return -EINVAL;
> > +
> > mutex_lock(&dev->struct_mutex);
> > list_for_each_entry(r_list, &dev->maplist, head) {
> > if (r_list->map &&
> > --
> > 2.8.1
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
More information about the dri-devel
mailing list