On Tue, 24 Aug 2010 09:43:00 +0100
Chris Wilson <ch...@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 <ch...@chris-wilson.co.uk>
> Cc: Jesse Barnes <jbar...@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 <jbar...@virtuousgeek.org>

-- 
Jesse Barnes, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to