[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