On Tue, Apr 23, 2019 at 12:00:39PM +1000, Dave Airlie wrote: > From: Dave Airlie <airlied@xxxxxxxxxx> > > If you don't want the legacy drivers, then lets get rid of all the > legacy codepaths from the core module. > > This drop the size of drm.ko for me by about 10%. > 380515 7422 4192 392129 5fbc1 ../../drm-next-build/drivers/gpu/drm/drm.ko > 351736 7298 4192 363226 58ada ../../drm-next-build/drivers/gpu/drm/drm.ko > > v2: drop drm_lock as well, fix some DMA->DRM typos > v3: avoid ifdefs in mainline code > v4: rework ioctl defs > > Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx> Bikeshed looks appealing enough now I think :-) And the DRM_LEGACY_IOCTL_DEF is a neat trick. Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/Makefile | 7 ++--- > drivers/gpu/drm/drm_internal.h | 2 ++ > drivers/gpu/drm/drm_ioc32.c | 13 +++++++- > drivers/gpu/drm/drm_ioctl.c | 55 +++++++++++++++++++-------------- > drivers/gpu/drm/drm_irq.c | 2 ++ > drivers/gpu/drm/drm_legacy.h | 42 +++++++++++++++++++++++-- > drivers/gpu/drm/drm_vm.c | 2 ++ > drivers/gpu/drm/nouveau/Kconfig | 1 + > 8 files changed, 93 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile > index 7ebae3d45505..340e075f6e06 100644 > --- a/drivers/gpu/drm/Makefile > +++ b/drivers/gpu/drm/Makefile > @@ -3,11 +3,9 @@ > # Makefile for the drm device driver. This driver provides support for the > # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. > > -drm-y := drm_auth.o drm_bufs.o drm_cache.o \ > - drm_context.o drm_dma.o \ > +drm-y := drm_auth.o drm_cache.o \ > drm_file.o drm_gem.o drm_ioctl.o drm_irq.o \ > - drm_lock.o drm_memory.o drm_drv.o \ > - drm_scatter.o drm_pci.o \ > + drm_memory.o drm_drv.o drm_pci.o \ > drm_sysfs.o drm_hashtab.o drm_mm.o \ > drm_crtc.o drm_fourcc.o drm_modes.o drm_edid.o \ > drm_encoder_slave.o \ > @@ -21,6 +19,7 @@ drm-y := drm_auth.o drm_bufs.o drm_cache.o \ > drm_syncobj.o drm_lease.o drm_writeback.o drm_client.o \ > drm_atomic_uapi.o > > +drm-$(CONFIG_DRM_LEGACY) += drm_bufs.o drm_context.o drm_dma.o drm_scatter.o drm_lock.o > drm-$(CONFIG_DRM_LIB_RANDOM) += lib/drm_random.o > drm-$(CONFIG_DRM_VM) += drm_vm.o > drm-$(CONFIG_COMPAT) += drm_ioc32.o > diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h > index d9a483a5fce0..e19ac7ca602d 100644 > --- a/drivers/gpu/drm/drm_internal.h > +++ b/drivers/gpu/drm/drm_internal.h > @@ -71,8 +71,10 @@ int drm_legacy_modeset_ctl_ioctl(struct drm_device *dev, void *data, > /* drm_irq.c */ > > /* IOCTLS */ > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > int drm_legacy_irq_control(struct drm_device *dev, void *data, > struct drm_file *file_priv); > +#endif > > int drm_crtc_get_sequence_ioctl(struct drm_device *dev, void *data, > struct drm_file *filp); > diff --git a/drivers/gpu/drm/drm_ioc32.c b/drivers/gpu/drm/drm_ioc32.c > index 0e3043e08c69..374b372da58a 100644 > --- a/drivers/gpu/drm/drm_ioc32.c > +++ b/drivers/gpu/drm/drm_ioc32.c > @@ -156,6 +156,7 @@ static int compat_drm_setunique(struct file *file, unsigned int cmd, > return -EINVAL; > } > > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > typedef struct drm_map32 { > u32 offset; /* Requested physical address (0 for SAREA) */ > u32 size; /* Requested physical size (bytes) */ > @@ -239,6 +240,7 @@ static int compat_drm_rmmap(struct file *file, unsigned int cmd, > map.handle = compat_ptr(handle); > return drm_ioctl_kernel(file, drm_legacy_rmmap_ioctl, &map, DRM_AUTH); > } > +#endif > > typedef struct drm_client32 { > int idx; /* Which client desired? */ > @@ -301,6 +303,7 @@ static int compat_drm_getstats(struct file *file, unsigned int cmd, > return 0; > } > > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > typedef struct drm_buf_desc32 { > int count; /* Number of buffers of this size */ > int size; /* Size in bytes */ > @@ -604,6 +607,7 @@ static int compat_drm_dma(struct file *file, unsigned int cmd, > > return 0; > } > +#endif > > #if IS_ENABLED(CONFIG_AGP) > typedef struct drm_agp_mode32 { > @@ -748,6 +752,7 @@ static int compat_drm_agp_unbind(struct file *file, unsigned int cmd, > } > #endif /* CONFIG_AGP */ > > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > typedef struct drm_scatter_gather32 { > u32 size; /**< In bytes -- will round to page boundary */ > u32 handle; /**< Used for mapping / unmapping */ > @@ -788,7 +793,7 @@ static int compat_drm_sg_free(struct file *file, unsigned int cmd, > return drm_ioctl_kernel(file, drm_legacy_sg_free, &request, > DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY); > } > - > +#endif > #if defined(CONFIG_X86) > typedef struct drm_update_draw32 { > drm_drawable_t handle; > @@ -903,10 +908,13 @@ static struct { > #define DRM_IOCTL32_DEF(n, f) [DRM_IOCTL_NR(n##32)] = {.fn = f, .name = #n} > DRM_IOCTL32_DEF(DRM_IOCTL_VERSION, compat_drm_version), > DRM_IOCTL32_DEF(DRM_IOCTL_GET_UNIQUE, compat_drm_getunique), > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > DRM_IOCTL32_DEF(DRM_IOCTL_GET_MAP, compat_drm_getmap), > +#endif > DRM_IOCTL32_DEF(DRM_IOCTL_GET_CLIENT, compat_drm_getclient), > DRM_IOCTL32_DEF(DRM_IOCTL_GET_STATS, compat_drm_getstats), > DRM_IOCTL32_DEF(DRM_IOCTL_SET_UNIQUE, compat_drm_setunique), > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > DRM_IOCTL32_DEF(DRM_IOCTL_ADD_MAP, compat_drm_addmap), > DRM_IOCTL32_DEF(DRM_IOCTL_ADD_BUFS, compat_drm_addbufs), > DRM_IOCTL32_DEF(DRM_IOCTL_MARK_BUFS, compat_drm_markbufs), > @@ -918,6 +926,7 @@ static struct { > DRM_IOCTL32_DEF(DRM_IOCTL_GET_SAREA_CTX, compat_drm_getsareactx), > DRM_IOCTL32_DEF(DRM_IOCTL_RES_CTX, compat_drm_resctx), > DRM_IOCTL32_DEF(DRM_IOCTL_DMA, compat_drm_dma), > +#endif > #if IS_ENABLED(CONFIG_AGP) > DRM_IOCTL32_DEF(DRM_IOCTL_AGP_ENABLE, compat_drm_agp_enable), > DRM_IOCTL32_DEF(DRM_IOCTL_AGP_INFO, compat_drm_agp_info), > @@ -926,8 +935,10 @@ static struct { > DRM_IOCTL32_DEF(DRM_IOCTL_AGP_BIND, compat_drm_agp_bind), > DRM_IOCTL32_DEF(DRM_IOCTL_AGP_UNBIND, compat_drm_agp_unbind), > #endif > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > DRM_IOCTL32_DEF(DRM_IOCTL_SG_ALLOC, compat_drm_sg_alloc), > DRM_IOCTL32_DEF(DRM_IOCTL_SG_FREE, compat_drm_sg_free), > +#endif > #if defined(CONFIG_X86) || defined(CONFIG_IA64) > DRM_IOCTL32_DEF(DRM_IOCTL_UPDATE_DRAW, compat_drm_update_draw), > #endif > diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c > index ce8a70875bd5..5878145077d0 100644 > --- a/drivers/gpu/drm/drm_ioctl.c > +++ b/drivers/gpu/drm/drm_ioctl.c > @@ -553,6 +553,12 @@ EXPORT_SYMBOL(drm_ioctl_permit); > .name = #ioctl \ > } > > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > +#define DRM_LEGACY_IOCTL_DEF(ioctl, _func, _flags) DRM_IOCTL_DEF(ioctl, _func, _flags) > +#else > +#define DRM_LEGACY_IOCTL_DEF(ioctl, _func, _flags) DRM_IOCTL_DEF(ioctl, drm_invalid_op, _flags) > +#endif > + > /* Ioctl table */ > static const struct drm_ioctl_desc drm_ioctls[] = { > DRM_IOCTL_DEF(DRM_IOCTL_VERSION, drm_version, > @@ -560,7 +566,9 @@ static const struct drm_ioctl_desc drm_ioctls[] = { > DRM_IOCTL_DEF(DRM_IOCTL_GET_UNIQUE, drm_getunique, DRM_UNLOCKED), > DRM_IOCTL_DEF(DRM_IOCTL_GET_MAGIC, drm_getmagic, DRM_UNLOCKED), > DRM_IOCTL_DEF(DRM_IOCTL_IRQ_BUSID, drm_irq_by_busid, DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_GET_MAP, drm_legacy_getmap_ioctl, DRM_UNLOCKED), > + > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_GET_MAP, drm_legacy_getmap_ioctl, DRM_UNLOCKED), > + > DRM_IOCTL_DEF(DRM_IOCTL_GET_CLIENT, drm_getclient, DRM_UNLOCKED), > DRM_IOCTL_DEF(DRM_IOCTL_GET_STATS, drm_getstats, DRM_UNLOCKED), > DRM_IOCTL_DEF(DRM_IOCTL_GET_CAP, drm_getcap, DRM_UNLOCKED|DRM_RENDER_ALLOW), > @@ -572,39 +580,38 @@ static const struct drm_ioctl_desc drm_ioctls[] = { > DRM_IOCTL_DEF(DRM_IOCTL_UNBLOCK, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > DRM_IOCTL_DEF(DRM_IOCTL_AUTH_MAGIC, drm_authmagic, DRM_UNLOCKED|DRM_MASTER), > > - DRM_IOCTL_DEF(DRM_IOCTL_ADD_MAP, drm_legacy_addmap_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_RM_MAP, drm_legacy_rmmap_ioctl, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_ADD_MAP, drm_legacy_addmap_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_RM_MAP, drm_legacy_rmmap_ioctl, DRM_AUTH), > > - DRM_IOCTL_DEF(DRM_IOCTL_SET_SAREA_CTX, drm_legacy_setsareactx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_GET_SAREA_CTX, drm_legacy_getsareactx, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_SET_SAREA_CTX, drm_legacy_setsareactx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_GET_SAREA_CTX, drm_legacy_getsareactx, DRM_AUTH), > > DRM_IOCTL_DEF(DRM_IOCTL_SET_MASTER, drm_setmaster_ioctl, DRM_UNLOCKED|DRM_ROOT_ONLY), > DRM_IOCTL_DEF(DRM_IOCTL_DROP_MASTER, drm_dropmaster_ioctl, DRM_UNLOCKED|DRM_ROOT_ONLY), > > - DRM_IOCTL_DEF(DRM_IOCTL_ADD_CTX, drm_legacy_addctx, DRM_AUTH|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_RM_CTX, drm_legacy_rmctx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_MOD_CTX, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_GET_CTX, drm_legacy_getctx, DRM_AUTH), > - DRM_IOCTL_DEF(DRM_IOCTL_SWITCH_CTX, drm_legacy_switchctx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_NEW_CTX, drm_legacy_newctx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_RES_CTX, drm_legacy_resctx, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_ADD_CTX, drm_legacy_addctx, DRM_AUTH|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_RM_CTX, drm_legacy_rmctx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_MOD_CTX, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_GET_CTX, drm_legacy_getctx, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_SWITCH_CTX, drm_legacy_switchctx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_NEW_CTX, drm_legacy_newctx, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_RES_CTX, drm_legacy_resctx, DRM_AUTH), > > DRM_IOCTL_DEF(DRM_IOCTL_ADD_DRAW, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > DRM_IOCTL_DEF(DRM_IOCTL_RM_DRAW, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > > - DRM_IOCTL_DEF(DRM_IOCTL_LOCK, drm_legacy_lock, DRM_AUTH), > - DRM_IOCTL_DEF(DRM_IOCTL_UNLOCK, drm_legacy_unlock, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_LOCK, drm_legacy_lock, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_UNLOCK, drm_legacy_unlock, DRM_AUTH), > > DRM_IOCTL_DEF(DRM_IOCTL_FINISH, drm_noop, DRM_AUTH), > > - DRM_IOCTL_DEF(DRM_IOCTL_ADD_BUFS, drm_legacy_addbufs, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_MARK_BUFS, drm_legacy_markbufs, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_INFO_BUFS, drm_legacy_infobufs, DRM_AUTH), > - DRM_IOCTL_DEF(DRM_IOCTL_MAP_BUFS, drm_legacy_mapbufs, DRM_AUTH), > - DRM_IOCTL_DEF(DRM_IOCTL_FREE_BUFS, drm_legacy_freebufs, DRM_AUTH), > - DRM_IOCTL_DEF(DRM_IOCTL_DMA, drm_legacy_dma_ioctl, DRM_AUTH), > - > - DRM_IOCTL_DEF(DRM_IOCTL_CONTROL, drm_legacy_irq_control, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_ADD_BUFS, drm_legacy_addbufs, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_MARK_BUFS, drm_legacy_markbufs, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_INFO_BUFS, drm_legacy_infobufs, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_MAP_BUFS, drm_legacy_mapbufs, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_FREE_BUFS, drm_legacy_freebufs, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_DMA, drm_legacy_dma_ioctl, DRM_AUTH), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_CONTROL, drm_legacy_irq_control, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > > #if IS_ENABLED(CONFIG_AGP) > DRM_IOCTL_DEF(DRM_IOCTL_AGP_ACQUIRE, drm_agp_acquire_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > @@ -617,8 +624,8 @@ static const struct drm_ioctl_desc drm_ioctls[] = { > DRM_IOCTL_DEF(DRM_IOCTL_AGP_UNBIND, drm_agp_unbind_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > #endif > > - DRM_IOCTL_DEF(DRM_IOCTL_SG_ALLOC, drm_legacy_sg_alloc, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > - DRM_IOCTL_DEF(DRM_IOCTL_SG_FREE, drm_legacy_sg_free, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_SG_ALLOC, drm_legacy_sg_alloc, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > + DRM_LEGACY_IOCTL_DEF(DRM_IOCTL_SG_FREE, drm_legacy_sg_free, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), > > DRM_IOCTL_DEF(DRM_IOCTL_WAIT_VBLANK, drm_wait_vblank_ioctl, DRM_UNLOCKED), > > diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c > index 9bd8908d5fd8..02f38cc9f468 100644 > --- a/drivers/gpu/drm/drm_irq.c > +++ b/drivers/gpu/drm/drm_irq.c > @@ -213,6 +213,7 @@ int drm_irq_uninstall(struct drm_device *dev) > } > EXPORT_SYMBOL(drm_irq_uninstall); > > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > int drm_legacy_irq_control(struct drm_device *dev, void *data, > struct drm_file *file_priv) > { > @@ -253,3 +254,4 @@ int drm_legacy_irq_control(struct drm_device *dev, void *data, > return -EINVAL; > } > } > +#endif > diff --git a/drivers/gpu/drm/drm_legacy.h b/drivers/gpu/drm/drm_legacy.h > index 8ee2de06f999..3c05452a7137 100644 > --- a/drivers/gpu/drm/drm_legacy.h > +++ b/drivers/gpu/drm/drm_legacy.h > @@ -42,11 +42,19 @@ struct drm_file; > #define DRM_KERNEL_CONTEXT 0 > #define DRM_RESERVED_CONTEXTS 1 > > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > void drm_legacy_ctxbitmap_init(struct drm_device *dev); > void drm_legacy_ctxbitmap_cleanup(struct drm_device *dev); > -void drm_legacy_ctxbitmap_free(struct drm_device *dev, int ctx_handle); > void drm_legacy_ctxbitmap_flush(struct drm_device *dev, struct drm_file *file); > +#else > +static inline void drm_legacy_ctxbitmap_init(struct drm_device *dev) {} > +static inline void drm_legacy_ctxbitmap_cleanup(struct drm_device *dev) {} > +static inline void drm_legacy_ctxbitmap_flush(struct drm_device *dev, struct drm_file *file) {} > +#endif > > +void drm_legacy_ctxbitmap_free(struct drm_device *dev, int ctx_handle); > + > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > int drm_legacy_resctx(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_addctx(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_getctx(struct drm_device *d, void *v, struct drm_file *f); > @@ -56,6 +64,7 @@ int drm_legacy_rmctx(struct drm_device *d, void *v, struct drm_file *f); > > int drm_legacy_setsareactx(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_getsareactx(struct drm_device *d, void *v, struct drm_file *f); > +#endif > > /* > * Generic Buffer Management > @@ -73,16 +82,20 @@ static inline void drm_legacy_remove_map_hash(struct drm_device *dev) > drm_ht_remove(&dev->map_hash); > } > > + > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > int drm_legacy_getmap_ioctl(struct drm_device *dev, void *data, > struct drm_file *file_priv); > int drm_legacy_addmap_ioctl(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_rmmap_ioctl(struct drm_device *d, void *v, struct drm_file *f); > + > int drm_legacy_addbufs(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_infobufs(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_markbufs(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_freebufs(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_mapbufs(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_dma_ioctl(struct drm_device *d, void *v, struct drm_file *f); > +#endif > > int __drm_legacy_infobufs(struct drm_device *, void *, int *, > int (*)(void *, int, struct drm_buf_entry *)); > @@ -91,11 +104,17 @@ int __drm_legacy_mapbufs(struct drm_device *, void *, int *, > int (*)(void *, int, unsigned long, struct drm_buf *), > struct drm_file *); > > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > void drm_legacy_master_rmmaps(struct drm_device *dev, > struct drm_master *master); > void drm_legacy_rmmaps(struct drm_device *dev); > +#else > +static inline void drm_legacy_master_rmmaps(struct drm_device *dev, > + struct drm_master *master) {} > +static inline void drm_legacy_rmmaps(struct drm_device *dev) {} > +#endif > > -#ifdef CONFIG_DRM_VM > +#if IS_ENABLED(CONFIG_DRM_VM) && IS_ENABLED(CONFIG_DRM_LEGACY) > void drm_legacy_vma_flush(struct drm_device *d); > #else > static inline void drm_legacy_vma_flush(struct drm_device *d) > @@ -117,24 +136,43 @@ struct drm_agp_mem { > }; > > /* drm_lock.c */ > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > int drm_legacy_lock(struct drm_device *d, void *v, struct drm_file *f); > int drm_legacy_unlock(struct drm_device *d, void *v, struct drm_file *f); > void drm_legacy_lock_release(struct drm_device *dev, struct file *filp); > +#else > +static inline void drm_legacy_lock_release(struct drm_device *dev, struct file *filp) {} > +#endif > > /* DMA support */ > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > int drm_legacy_dma_setup(struct drm_device *dev); > void drm_legacy_dma_takedown(struct drm_device *dev); > +#else > +static inline int drm_legacy_dma_setup(struct drm_device *dev) > +{ > + return 0; > +} > +#endif > + > void drm_legacy_free_buffer(struct drm_device *dev, > struct drm_buf * buf); > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > void drm_legacy_reclaim_buffers(struct drm_device *dev, > struct drm_file *filp); > +#else > +static inline void drm_legacy_reclaim_buffers(struct drm_device *dev, > + struct drm_file *filp) {} > +#endif > > /* Scatter Gather Support */ > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > void drm_legacy_sg_cleanup(struct drm_device *dev); > int drm_legacy_sg_alloc(struct drm_device *dev, void *data, > struct drm_file *file_priv); > int drm_legacy_sg_free(struct drm_device *dev, void *data, > struct drm_file *file_priv); > +#endif > > static inline void drm_legacy_init_members(struct drm_device *dev) > { > diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c > index 8987501f53b2..10cf83d569e1 100644 > --- a/drivers/gpu/drm/drm_vm.c > +++ b/drivers/gpu/drm/drm_vm.c > @@ -646,6 +646,7 @@ int drm_legacy_mmap(struct file *filp, struct vm_area_struct *vma) > } > EXPORT_SYMBOL(drm_legacy_mmap); > > +#if IS_ENABLED(CONFIG_DRM_LEGACY) > void drm_legacy_vma_flush(struct drm_device *dev) > { > struct drm_vma_entry *vma, *vma_temp; > @@ -656,3 +657,4 @@ void drm_legacy_vma_flush(struct drm_device *dev) > kfree(vma); > } > } > +#endif > diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig > index 3ae7a4cfc6bb..cbcf7d2c089d 100644 > --- a/drivers/gpu/drm/nouveau/Kconfig > +++ b/drivers/gpu/drm/nouveau/Kconfig > @@ -23,6 +23,7 @@ config DRM_NOUVEAU > config NOUVEAU_LEGACY_CTX_SUPPORT > bool "Nouveau legacy context support" > select DRM_VM > + select DRM_LEGACY > default y > help > There was a version of the nouveau DDX that relied on legacy > -- > 2.20.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel