On Thu, 27 Feb 2014, Jani Nikula <jani.nik...@linux.intel.com> wrote:
> On Wed, 26 Feb 2014, Jesse Barnes <jbar...@virtuousgeek.org> wrote:
>> On Mon, 13 Jan 2014 16:25:21 +0530
>> akash.g...@intel.com wrote:
>>
>>> From: Akash Goel <akash.g...@intel.com>
>>> 
>>> There is a conflict seen when requesting the kernel to reserve
>>> the physical space used for the stolen area. This is because
>>> some BIOS are wrapping the stolen area in the root PCI bus, but have
>>> an off-by-one error. As a workaround we retry the reservation with an
>>> offset of 1 instead of 0.
>>> 
>>> v2: updated commit message & the comment in source file (Daniel)
>>> 
>>> Signed-off-by: Akash Goel <akash.g...@intel.com>
>>> ---
>>>  drivers/gpu/drm/i915/i915_gem_stolen.c | 20 +++++++++++++++++---
>>>  1 file changed, 17 insertions(+), 3 deletions(-)
>>> 
>>> diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c 
>>> b/drivers/gpu/drm/i915/i915_gem_stolen.c
>>> index 1a24e84..114a806 100644
>>> --- a/drivers/gpu/drm/i915/i915_gem_stolen.c
>>> +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
>>> @@ -82,9 +82,23 @@ static unsigned long i915_stolen_to_physical(struct 
>>> drm_device *dev)
>>>     r = devm_request_mem_region(dev->dev, base, dev_priv->gtt.stolen_size,
>>>                                 "Graphics Stolen Memory");
>>>     if (r == NULL) {
>>> -           DRM_ERROR("conflict detected with stolen region: [0x%08x - 
>>> 0x%08x]\n",
>>> -                     base, base + (uint32_t)dev_priv->gtt.stolen_size);
>>> -           base = 0;
>>> +           /*
>>> +            * One more attempt but this time requesting region from
>>> +            * base + 1, as we have seen that this resolves the region
>>> +            * conflict with the PCI Bus.
>>> +            * This is a BIOS w/a: Some BIOS wrap stolen in the root
>>> +            * PCI bus, but have an off-by-one error. Hence retry the
>>> +            * reservation starting from 1 instead of 0.
>>> +            */
>>> +           r = devm_request_mem_region(dev->dev, base + 1,
>>> +                                       dev_priv->gtt.stolen_size - 1,
>>> +                                       "Graphics Stolen Memory");
>>> +           if (r == NULL) {
>>> +                   DRM_ERROR("conflict detected with stolen region:"\
>>> +                             "[0x%08x - 0x%08x]\n",
>>> +                             base, base + 
>>> (uint32_t)dev_priv->gtt.stolen_size);
>>> +                   base = 0;
>>> +           }
>>>     }
>>>  
>>>     return base;
>>
>> Reviewed-by: Jesse Barnes <jbar...@virtuousgeek.org>
>> Tested-by: Arjan van de Ven <ar...@linux.intel.com>
>
> Pushed to -fixes, thanks for the patch, review, and testing.

Oh, forgot to add that I fixed the DRM_ERROR string split up that
checkpatch complained about while applying.


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

-- 
Jani Nikula, 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