| From b30a43ac7132cdda833ac4b13dd1ebd35ace14b7 Mon Sep 17 00:00:00 2001 |
| From: Dave Airlie <airlied@redhat.com> |
| Date: Thu, 18 Apr 2019 16:45:15 +1000 |
| Subject: drm/nouveau: add kconfig option to turn off nouveau legacy contexts. (v3) |
| |
| From: Dave Airlie <airlied@redhat.com> |
| |
| commit b30a43ac7132cdda833ac4b13dd1ebd35ace14b7 upstream. |
| |
| There was a nouveau DDX that relied on legacy context ioctls to work, |
| but we fixed it years ago, give distros that have a modern DDX the |
| option to break the uAPI and close the mess of holes that legacy |
| context support is. |
| |
| Full context of the story: |
| |
| commit 0e975980d435d58df2d430d688b8c18778b42218 |
| Author: Peter Antoine <peter.antoine@intel.com> |
| Date: Tue Jun 23 08:18:49 2015 +0100 |
| |
| drm: Turn off Legacy Context Functions |
| |
| The context functions are not used by the i915 driver and should not |
| be used by modeset drivers. These driver functions contain several bugs |
| and security holes. This change makes these functions optional can be |
| turned on by a setting, they are turned off by default for modeset |
| driver with the exception of the nouvea driver that may require them with |
| an old version of libdrm. |
| |
| The previous attempt was |
| |
| commit 7c510133d93dd6f15ca040733ba7b2891ed61fd1 |
| Author: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Date: Thu Aug 8 15:41:21 2013 +0200 |
| |
| drm: mark context support as a legacy subsystem |
| |
| but this had to be reverted |
| |
| commit c21eb21cb50d58e7cbdcb8b9e7ff68b85cfa5095 |
| Author: Dave Airlie <airlied@redhat.com> |
| Date: Fri Sep 20 08:32:59 2013 +1000 |
| |
| Revert "drm: mark context support as a legacy subsystem" |
| |
| v2: remove returns from void function, and formatting (Daniel Vetter) |
| |
| v3: |
| - s/Nova/nouveau/ in the commit message, and add references to the |
| previous attempts |
| - drop the part touching the drm hw lock, that should be a separate |
| patch. |
| |
| Signed-off-by: Peter Antoine <peter.antoine@intel.com> (v2) |
| Cc: Peter Antoine <peter.antoine@intel.com> (v2) |
| Reviewed-by: Peter Antoine <peter.antoine@intel.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| |
| v2: move DRM_VM dependency into legacy config. |
| v3: fix missing dep (kbuild robot) |
| |
| Cc: stable@vger.kernel.org |
| Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/nouveau/Kconfig | 13 ++++++++++++- |
| drivers/gpu/drm/nouveau/nouveau_drm.c | 7 +++++-- |
| 2 files changed, 17 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/gpu/drm/nouveau/Kconfig |
| +++ b/drivers/gpu/drm/nouveau/Kconfig |
| @@ -17,10 +17,21 @@ config DRM_NOUVEAU |
| select INPUT if ACPI && X86 |
| select THERMAL if ACPI && X86 |
| select ACPI_VIDEO if ACPI && X86 |
| - select DRM_VM |
| help |
| Choose this option for open-source NVIDIA support. |
| |
| +config NOUVEAU_LEGACY_CTX_SUPPORT |
| + bool "Nouveau legacy context support" |
| + depends on DRM_NOUVEAU |
| + select DRM_VM |
| + default y |
| + help |
| + There was a version of the nouveau DDX that relied on legacy |
| + ctx ioctls not erroring out. But that was back in time a long |
| + ways, so offer a way to disable it now. For uapi compat with |
| + old nouveau ddx this should be on by default, but modern distros |
| + should consider turning it off. |
| + |
| config NOUVEAU_PLATFORM_DRIVER |
| bool "Nouveau (NVIDIA) SoC GPUs" |
| depends on DRM_NOUVEAU && ARCH_TEGRA |
| --- a/drivers/gpu/drm/nouveau/nouveau_drm.c |
| +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c |
| @@ -1094,8 +1094,11 @@ nouveau_driver_fops = { |
| static struct drm_driver |
| driver_stub = { |
| .driver_features = |
| - DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_RENDER | |
| - DRIVER_KMS_LEGACY_CONTEXT, |
| + DRIVER_GEM | DRIVER_MODESET | DRIVER_PRIME | DRIVER_RENDER |
| +#if defined(CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT) |
| + | DRIVER_KMS_LEGACY_CONTEXT |
| +#endif |
| + , |
| |
| .open = nouveau_drm_open, |
| .postclose = nouveau_drm_postclose, |