[Intel-gfx] [PATCH] drm/i915: Deprecated UMS support

Ville Syrjälä ville.syrjala at linux.intel.com
Thu Nov 14 00:18:48 CET 2013


On Wed, Nov 13, 2013 at 10:11:25PM +0100, Daniel Vetter wrote:
> It's been 5 years since kms support was merged and roughly 4 years
> since UMS support was ripped out from userspace drivers.
> 
> Thus far it's not been a big burden to keep the ums paths alive, and
> we've made some good progress in better separating it from the kms
> code by sprinkling DRIVER_MODESET checks all over the place.
> 
> But now that the drm demidlayering is within reach this changes. I
> want to make the driver loading code more robust using devres.c and
> other cool tricks. But that doesn't work with ums due to the
> shadow-attach trick. Which means we either
> a) need to split out a complete ums codebase like radeon has
> b) kill it for good.
> 
> The 2nd option is obviously much less work than the first, so I think
> it's time to test the waters and see how many people out there still
> use ums.
> 
> I've decided that silently failing to initialize the driver (and not
> e.g. failing to load the module) is the right thing. That way we
> should only get reports from users that actually care about some ums
> features (like accelerated gl or support for secondary outputs).
> Everyone else will just fall back to the vesa X driver.
> 
> For developers there's a small info level dmesg output.
> 
> The plan is to drop this Kconfig option after 3.16 (so gives us 2 full
> releases) and then start killing code for real 2-3 releases
> afterwards. That should be more than enough time for users to pipe up.
> 
> Of course if anyone does we need to revisit this plan and maybe go
> with option a) above.
> 
> Also enable the KMS support by default in Kconfig and polish the help
> texts a bit.
> 
> v2: Add the missing hunk of actual code changes. Oops. (Ville)
> 
> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> Cc: Dave Airlie <airlied at gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  drivers/gpu/drm/i915/Kconfig    | 24 +++++++++++++++++++-----
>  drivers/gpu/drm/i915/i915_drv.c |  7 ++++++-
>  2 files changed, 25 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig
> index b0f61679c598..b0fa4c4055ee 100644
> --- a/drivers/gpu/drm/i915/Kconfig
> +++ b/drivers/gpu/drm/i915/Kconfig
> @@ -37,12 +37,11 @@ config DRM_I915
>  config DRM_I915_KMS
>  	bool "Enable modesetting on intel by default"
>  	depends on DRM_I915
> +	default y
>  	help
> -	  Choose this option if you want kernel modesetting enabled by default,
> -	  and you have a new enough userspace to support this. Running old
> -	  userspaces with this enabled will cause pain.  Note that this causes
> -	  the driver to bind to PCI devices, which precludes loading things
> -	  like intelfb.
> +	  Choose this option if you want kernel modesetting enabled by default.
> +
> +	  If in doubt, say "Y".
>  
>  config DRM_I915_FBDEV
>  	bool "Enable legacy fbdev support for the modesettting intel driver"
> @@ -57,9 +56,12 @@ config DRM_I915_FBDEV
>  	  support. Note that this support also provide the linux console
>  	  support on top of the intel modesetting driver.
>  
> +	  If in doubt, say "Y".
> +
>  config DRM_I915_PRELIMINARY_HW_SUPPORT
>  	bool "Enable preliminary support for prerelease Intel hardware by default"
>  	depends on DRM_I915
> +	default n
>  	help
>  	  Choose this option if you have prerelease Intel hardware and want the
>  	  i915 driver to support it by default.  You can enable such support at
> @@ -67,3 +69,15 @@ config DRM_I915_PRELIMINARY_HW_SUPPORT
>  	  option changes the default for that module option.
>  
>  	  If in doubt, say "N".
> +
> +config DRM_I915_UMS
> +	bool "Enable userspace modesetting on Intel hardware (DEPRECATED)"
> +	depends on DRM_I915
> +	default n
> +	help
> +	  Choose this option if you still need userspace modesetting.
> +
> +	  Userspace modesetting is deprecated for quite some time now, so
> +	  enable this only if you have ancient versions of the DDX drivers.
> +
> +	  If in doubt, say "N".
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 9200c5c47d46..c2e00ed23195 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -1007,8 +1007,13 @@ static int __init i915_init(void)
>  		driver.driver_features &= ~DRIVER_MODESET;
>  #endif
>  
> -	if (!(driver.driver_features & DRIVER_MODESET))
> +	if (!(driver.driver_features & DRIVER_MODESET)) {
>  		driver.get_vblank_timestamp = NULL;

BTW this NULL assignment is pointless since we don't even
populate the function pointer until intel_irq_init(). So
if you add a patch to kill the NULL assignment first, you
could place the entire if block inside the UMS ifndef.

But in either case this looks like it does what it says, so:
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

> +#ifndef CONFIG_DRM_I915_UMS
> +		/* Silently fail loading to not upset userspace. */
> +		return 0;
> +#endif
> +	}
>  
>  	return drm_pci_init(&driver, &i915_pci_driver);
>  }
> -- 
> 1.8.4.3

-- 
Ville Syrjälä
Intel OTC



More information about the Intel-gfx mailing list