[Intel-gfx] [PATCH v2 2/2] drm/i915/display: Do not use stolen on MTL
Nirmoy Das
nirmoy.das at linux.intel.com
Thu Jul 13 15:02:33 UTC 2023
On 7/13/2023 4:56 PM, Andrzej Hajda wrote:
>
>
> On 13.07.2023 16:45, Nirmoy Das wrote:
>>
>> On 7/12/2023 12:06 AM, Nirmoy Das wrote:
>>> Use smem on MTL due to a HW bug in MTL that prevents
>>> reading from stolen memory using LMEM BAR.
>>>
>>> v2: improve stolen skip detection(Andrzej)
>>>
>>> Cc: Oak Zeng <oak.zeng at intel.com>
>>> Cc: Jani Nikula <jani.nikula at linux.intel.com>
>>> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
>>> Cc: Andi Shyti <andi.shyti at linux.intel.com>
>>> Cc: Andrzej Hajda <andrzej.hajda at intel.com>
>>> Signed-off-by: Nirmoy Das <nirmoy.das at intel.com>
>>> Reviewed-by: Oak Zeng <oak.zeng at intel.com>
>>> Reviewed-by: Andrzej Hajda <andrzej.hajda at intel.com>
>>> Reviewed-by: Andi Shyti <andi.shyti at linux.intel.com>
>>> ---
>>> drivers/gpu/drm/i915/display/intel_fbdev.c | 5 ++++-
>>> drivers/gpu/drm/i915/display/intel_overlay.c | 5 +++--
>>> 2 files changed, 7 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c
>>> b/drivers/gpu/drm/i915/display/intel_fbdev.c
>>> index 1cc0ddc6a310..e019bbcd474e 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_fbdev.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
>>> @@ -187,8 +187,11 @@ static int intelfb_alloc(struct drm_fb_helper
>>> *helper,
>>> * If the FB is too big, just don't use it since fbdev is
>>> not very
>>> * important and we should probably use that space with
>>> FBC or other
>>> * features.
>>> + *
>>> + * Also skip stolen on MTL as Wa_22018444074 mitigation.
>>> */
>>> - if (size * 2 < dev_priv->dsm.usable_size)
>>> + if (size * 2 < dev_priv->dsm.usable_size ||
>>> + !(IS_METEORLAKE(dev_priv)))
>>
>> Just realized this is wrong, stolen will be picked on non-mtl even
>> if the stolen usable size is < 2*size which is not expected.
>
> if (!(IS_METEORLAKE(dev_priv)) && size * 2 < dev_priv->dsm.usable_size) ?
that should work, resent with that.
Thanks,
Nirmoy
>
> Regards
> Andrzej
>
>>
>> I will keep this as v1
>>
>>
>> Regards,
>>
>> Nirmoy
>>
>>> obj = i915_gem_object_create_stolen(dev_priv, size);
>>> if (IS_ERR(obj))
>>> obj = i915_gem_object_create_shmem(dev_priv, size);
>>> diff --git a/drivers/gpu/drm/i915/display/intel_overlay.c
>>> b/drivers/gpu/drm/i915/display/intel_overlay.c
>>> index d6fe2bbabe55..09c1aa1427ad 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_overlay.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_overlay.c
>>> @@ -1348,11 +1348,12 @@ int intel_overlay_attrs_ioctl(struct
>>> drm_device *dev, void *data,
>>> static int get_registers(struct intel_overlay *overlay, bool
>>> use_phys)
>>> {
>>> struct drm_i915_private *i915 = overlay->i915;
>>> - struct drm_i915_gem_object *obj;
>>> + struct drm_i915_gem_object *obj = ERR_PTR(-ENODEV);
>>> struct i915_vma *vma;
>>> int err;
>>> - obj = i915_gem_object_create_stolen(i915, PAGE_SIZE);
>>> + if (!IS_METEORLAKE(i915)) /* Wa_22018444074 */
>>> + obj = i915_gem_object_create_stolen(i915, PAGE_SIZE);
>>> if (IS_ERR(obj))
>>> obj = i915_gem_object_create_internal(i915, PAGE_SIZE);
>>> if (IS_ERR(obj))
>
More information about the Intel-gfx
mailing list