[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