[Intel-gfx] [PATCH 2/7] drm/i915: Resolving the memory region conflict for Stolen area
Jani Nikula
jani.nikula at linux.intel.com
Thu Feb 27 10:01:08 CET 2014
On Thu, 27 Feb 2014, Jani Nikula <jani.nikula at linux.intel.com> wrote:
> On Wed, 26 Feb 2014, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
>> On Mon, 13 Jan 2014 16:25:21 +0530
>> akash.goel at intel.com wrote:
>>
>>> From: Akash Goel <akash.goel at 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.goel at 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 <jbarnes at virtuousgeek.org>
>> Tested-by: Arjan van de Ven <arjan at 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 at 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
More information about the Intel-gfx
mailing list