[Intel-gfx] [PATCH 4/8] drm/i915/mtl: workaround coherency issue for Media
Andi Shyti
andi.shyti at linux.intel.com
Wed Apr 19 22:07:50 UTC 2023
Hi Fei,
On Wed, Apr 19, 2023 at 02:12:15PM -0700, fei.yang at intel.com wrote:
> From: Fei Yang <fei.yang at intel.com>
>
> This patch implements Wa_22016122933.
>
> In MTL, memory writes initiated by Media tile update the whole
> cache line even for partial writes. This creates a coherency
> problem for cacheable memory if both CPU and GPU are writing data
> to different locations within a single cache line. CTB communication
> is impacted by this issue because the head and tail pointers are
> adjacent words within a cache line (see struct guc_ct_buffer_desc),
> where one is written by GuC and the other by the host.
> This patch circumvents the issue by making CPU/GPU shared memory
> uncacheable (WC on CPU side, and PAT index 2 for GPU). Also for
> CTB which is being updated by both CPU and GuC, mfence instruction
> is added to make sure the CPU writes are visible to GPU right away
> (flush the write combining buffer).
>
> While fixing the CTB issue, we noticed some random GSC firmware
> loading failure because the share buffers are cacheable (WB) on CPU
> side but uncached on GPU side. To fix these issues we need to map
> such shared buffers as WC on CPU side. Since such allocations are
> not all done through GuC allocator, to avoid too many code changes,
> the i915_coherent_map_type() is now hard coded to return WC for MTL.
>
> BSpec: 45101
>
> Signed-off-by: Fei Yang <fei.yang at intel.com>
Reviewed-by: Andi Shyti <andi.shyti at linux.intel.com>
Acked-by: Nirmoy Das <nirmoy.das at intel.com>
Still one comment below.
[...]
> + /*
> + * Wa_22016122933: Making sure the head update is
> + * visible to GuC right away
> + */
> + intel_guc_write_barrier(ct_to_guc(ct));
I thought you were going to revert this. Is this really needed,
BTW? I'm fine with leaving it.
Andi
More information about the dri-devel
mailing list