[Intel-gfx] [PATCH 07/12] drm/i915: only enable drm agp support when required

Jani Nikula jani.nikula at linux.intel.com
Tue Jun 12 13:58:25 CEST 2012


On Thu, 07 Jun 2012, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> We need it for all things ums (which essentially only means up to
> gen5) and to support b0rked XvMC userspace on gen3.
>
> Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  drivers/gpu/drm/i915/i915_dma.c |   21 ++++++++++++---------
>  1 files changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index e4203df..0ab5d3d 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -1422,15 +1422,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
>  	int ret = 0, mmio_bar;
>  	uint32_t aperture_size;
>  
> -	ret = drm_pci_agp_init(dev);
> -	if (ret)
> -		return ret;
> -
> -	if (!dev->agp) {
> -		DRM_ERROR("Cannot initialize the agpgart module.\n");
> -		return -EINVAL;
> -	}
> -
>  	info = (struct intel_device_info *) flags;
>  
>  	/* Refuse to load on gen6+ without kms enabled. */
> @@ -1453,6 +1444,18 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags)
>  	dev_priv->dev = dev;
>  	dev_priv->info = info;
>  
> +	if (!drm_core_check_feature(dev, DRIVER_MODESET) ||
> +	    IS_GEN3(dev)) {
> +		ret = drm_pci_agp_init(dev);
> +		if (ret)
> +			return ret;
> +
> +		if (!dev->agp) {
> +			DRM_ERROR("Cannot initialize the agpgart module.\n");
> +			return -EINVAL;
> +		}

You need to goto free_priv in the above error paths.

Should there be a deinit of drm_pci_agp_init() if something goes wrong
afterwards?

BR,
Jani.


> +	}
> +
>  	if (i915_get_bridge_dev(dev)) {
>  		ret = -EIO;
>  		goto free_priv;
> -- 
> 1.7.7.6
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



More information about the Intel-gfx mailing list