[Intel-gfx] [PATCH 1/4] drm/i915: Allocate the PCI resource for the MCHBAR

Jesse Barnes jbarnes at virtuousgeek.org
Tue Aug 24 21:25:27 CEST 2010


On Tue, 24 Aug 2010 09:43:00 +0100
Chris Wilson <chris at chris-wilson.co.uk> wrote:

> We were failing when trying to allocate the resource for MMIO of the
> MCHBAR because we forgot to specify what type of resource we wanted.
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/i915_dma.c |   20 ++++++++++----------
>  1 files changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
> index 77af26d..f3433ba 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -885,7 +885,7 @@ intel_alloc_mchbar_resource(struct drm_device *dev)
>  	int reg = IS_I965G(dev) ? MCHBAR_I965 : MCHBAR_I915;
>  	u32 temp_lo, temp_hi = 0;
>  	u64 mchbar_addr;
> -	int ret = 0;
> +	int ret;
>  
>  	if (IS_I965G(dev))
>  		pci_read_config_dword(dev_priv->bridge_dev, reg + 4, &temp_hi);
> @@ -895,22 +895,23 @@ intel_alloc_mchbar_resource(struct drm_device *dev)
>  	/* If ACPI doesn't have it, assume we need to allocate it ourselves */
>  #ifdef CONFIG_PNP
>  	if (mchbar_addr &&
> -	    pnp_range_reserved(mchbar_addr, mchbar_addr + MCHBAR_SIZE)) {
> -		ret = 0;
> -		goto out;
> -	}
> +	    pnp_range_reserved(mchbar_addr, mchbar_addr + MCHBAR_SIZE))
> +		return 0;
>  #endif
>  
>  	/* Get some space for it */
> -	ret = pci_bus_alloc_resource(dev_priv->bridge_dev->bus, &dev_priv->mch_res,
> +	dev_priv->mch_res.name = "i915 MCHBAR";
> +	dev_priv->mch_res.flags = IORESOURCE_MEM;
> +	ret = pci_bus_alloc_resource(dev_priv->bridge_dev->bus,
> +				     &dev_priv->mch_res,
>  				     MCHBAR_SIZE, MCHBAR_SIZE,
>  				     PCIBIOS_MIN_MEM,
> -				     0,   pcibios_align_resource,
> +				     0, pcibios_align_resource,
>  				     dev_priv->bridge_dev);
>  	if (ret) {
>  		DRM_DEBUG_DRIVER("failed bus alloc: %d\n", ret);
>  		dev_priv->mch_res.start = 0;
> -		goto out;
> +		return ret;
>  	}
>  
>  	if (IS_I965G(dev))
> @@ -919,8 +920,7 @@ intel_alloc_mchbar_resource(struct drm_device *dev)
>  
>  	pci_write_config_dword(dev_priv->bridge_dev, reg,
>  			       lower_32_bits(dev_priv->mch_res.start));
> -out:
> -	return ret;
> +	return 0;
>  }
>  
>  /* Setup MCHBAR if possible, return true if we should disable it again */

Really makes me wonder how this stuff makes it through testing.

Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>

-- 
Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list