diff mbox series

drm/nouveau: add kconfig option to turn off nouveau legacy contexts.

Message ID 20190418064631.13710-1-airlied@gmail.com (mailing list archive)
State New, archived
Headers show
Series drm/nouveau: add kconfig option to turn off nouveau legacy contexts. | expand

Commit Message

Dave Airlie April 18, 2019, 6:46 a.m. UTC
From: Dave Airlie <airlied@redhat.com>

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.

Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/nouveau/Kconfig       | 10 ++++++++++
 drivers/gpu/drm/nouveau/nouveau_drm.c |  7 +++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

Comments

Daniel Vetter April 18, 2019, 7:14 a.m. UTC | #1
On Thu, Apr 18, 2019 at 04:46:31PM +1000, Dave Airlie wrote:
> From: Dave Airlie <airlied@redhat.com>
> 
> 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.
> 
> Signed-off-by: Dave Airlie <airlied@redhat.com>

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>

I think best if you quote the entire above commit message in full. Also
needs

Cc: stable@vger.kernel.org

> ---
>  drivers/gpu/drm/nouveau/Kconfig       | 10 ++++++++++
>  drivers/gpu/drm/nouveau/nouveau_drm.c |  7 +++++--
>  2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig
> index 00cd9ab8948d..688b6f618b65 100644
> --- a/drivers/gpu/drm/nouveau/Kconfig
> +++ b/drivers/gpu/drm/nouveau/Kconfig
> @@ -21,6 +21,16 @@ config DRM_NOUVEAU
>  	help
>  	  Choose this option for open-source NVIDIA support.
>  
> +config NOUVEAU_LEGACY_CTX_SUPPORT
> +	bool "Nouveau legacy context support"
> +	default y

+1 on default y

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>

> +	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
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index 5020265bfbd9..6ab9033f49da 100644
> --- 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,
> -- 
> 2.20.1
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff mbox series

Patch

diff --git a/drivers/gpu/drm/nouveau/Kconfig b/drivers/gpu/drm/nouveau/Kconfig
index 00cd9ab8948d..688b6f618b65 100644
--- a/drivers/gpu/drm/nouveau/Kconfig
+++ b/drivers/gpu/drm/nouveau/Kconfig
@@ -21,6 +21,16 @@  config DRM_NOUVEAU
 	help
 	  Choose this option for open-source NVIDIA support.
 
+config NOUVEAU_LEGACY_CTX_SUPPORT
+	bool "Nouveau legacy context support"
+	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
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 5020265bfbd9..6ab9033f49da 100644
--- 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,