[Intel-gfx] [PATCH] drm/i915: Don't use stolen memory for ring buffers
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Wed Feb 15 12:30:18 UTC 2023
On 15/02/2023 01:56, Ceraolo Spurio, Daniele wrote:
>
>
> On 2/14/2023 3:48 PM, John.C.Harrison at Intel.com wrote:
>> From: John Harrison <John.C.Harrison at Intel.com>
>>
>> Direction from hardware is that stolen memory should never be used for
>> ring buffer allocations. There are too many caching pitfalls due to the
>> way stolen memory accesses are routed. So it is safest to just not use
>> it.
>
> I'm wondering if this applies to machines in ringbuffer mode as well, as
> some of the caching stuff that according to the HW team may not work
> properly with stolen mem accesses from the CS (mocs, ppat) came with
> gen8/gen9.
> Maybe limit this change to gen8+, to avoid changing the behavior for
> very old platforms?
If Gen8+ can have bugs due this then:
Fixes: c58b735fc762 ("drm/i915: Allocate rings from stolen")
Cc: <stable at vger.kernel.org> # v4.9+
Or even before:
Fixes: ebc052e0c65f ("drm/i915: Allocate ringbuffers from stolen memory")
Cc: <stable at vger.kernel.org> # v3.9+
Hm lets see when BDW when out of force probe:
Fixes: babb1903511f ("drm/i915/bdw: remove preliminary_hw_support flag from BDW")
Cc: <stable at vger.kernel.org> # v3.14+
Depends also how the problem statement interacts with LLC. If !LLC platforms are okay then the first one from the above list is enough.
Because
Regards,
Tvrtko
>>
>> Signed-off-by: John Harrison <John.C.Harrison at Intel.com>
>> ---
>> drivers/gpu/drm/i915/gt/intel_ring.c | 2 --
>> 1 file changed, 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/intel_ring.c
>> b/drivers/gpu/drm/i915/gt/intel_ring.c
>> index 15ec64d881c44..d1a47e1ae6452 100644
>> --- a/drivers/gpu/drm/i915/gt/intel_ring.c
>> +++ b/drivers/gpu/drm/i915/gt/intel_ring.c
>> @@ -116,8 +116,6 @@ static struct i915_vma *create_ring_vma(struct
>> i915_ggtt *ggtt, int size)
>> obj = i915_gem_object_create_lmem(i915, size,
>> I915_BO_ALLOC_VOLATILE |
>> I915_BO_ALLOC_PM_VOLATILE);
>> - if (IS_ERR(obj) && i915_ggtt_has_aperture(ggtt))
>> - obj = i915_gem_object_create_stolen(i915, size);
>
> There is code in ring_pin/unpin() that only applies to rings in stolen
> memory, so you need to remove that as well if you drop stolen for rings
> on all platforms.
>
> Daniele
>
>> if (IS_ERR(obj))
>> obj = i915_gem_object_create_internal(i915, size);
>> if (IS_ERR(obj))
>
More information about the dri-devel
mailing list