[PATCH] drm/xe/display: mark dpt as uncached

Matthew Auld matthew.auld at intel.com
Thu Mar 14 17:05:13 UTC 2024


On 14/03/2024 16:20, Juha-Pekka Heikkila wrote:
> make dpt as uncached to avoid pipe faults on some devices

s/make/Mark/

Also missing full stop.

> 
> Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>

Did this help on ADL btw? I don't think there are any PAT bits in the 
GGTT on that hw so this just noops, right? Or am I misremembering...

In addition to this I think we might also want something like:
https://patchwork.freedesktop.org/series/131148/

> ---
>   drivers/gpu/drm/xe/display/xe_fb_pin.c | 10 +++++-----
>   1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index 722c84a56607..98592994c8d4 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -30,7 +30,7 @@ write_dpt_rotated(struct xe_bo *bo, struct iosys_map *map, u32 *dpt_ofs, u32 bo_
>   
>   		for (row = 0; row < height; row++) {
>   			u64 pte = ggtt->pt_ops->pte_encode_bo(bo, src_idx * XE_PAGE_SIZE,
> -							      xe->pat.idx[XE_CACHE_WB]);
> +							      xe->pat.idx[XE_CACHE_NONE]);
>   
>   			iosys_map_wr(map, *dpt_ofs, u64, pte);
>   			*dpt_ofs += 8;
> @@ -62,7 +62,7 @@ write_dpt_remapped(struct xe_bo *bo, struct iosys_map *map, u32 *dpt_ofs,
>   		for (column = 0; column < width; column++) {
>   			iosys_map_wr(map, *dpt_ofs, u64,
>   				     pte_encode_bo(bo, src_idx * XE_PAGE_SIZE,
> -				     xe->pat.idx[XE_CACHE_WB]));
> +				     xe->pat.idx[XE_CACHE_NONE]));
>   
>   			*dpt_ofs += 8;
>   			src_idx++;
> @@ -119,7 +119,7 @@ static int __xe_pin_fb_vma_dpt(struct intel_framebuffer *fb,
>   
>   		for (x = 0; x < size / XE_PAGE_SIZE; x++) {
>   			u64 pte = ggtt->pt_ops->pte_encode_bo(bo, x * XE_PAGE_SIZE,
> -							      xe->pat.idx[XE_CACHE_WB]);
> +							      xe->pat.idx[XE_CACHE_NONE]);
>   
>   			iosys_map_wr(&dpt->vmap, x * 8, u64, pte);
>   		}
> @@ -165,7 +165,7 @@ write_ggtt_rotated(struct xe_bo *bo, struct xe_ggtt *ggtt, u32 *ggtt_ofs, u32 bo
>   
>   		for (row = 0; row < height; row++) {
>   			u64 pte = ggtt->pt_ops->pte_encode_bo(bo, src_idx * XE_PAGE_SIZE,
> -							      xe->pat.idx[XE_CACHE_WB]);
> +							      xe->pat.idx[XE_CACHE_NONE]);
>   
>   			xe_ggtt_set_pte(ggtt, *ggtt_ofs, pte);
>   			*ggtt_ofs += XE_PAGE_SIZE;
> @@ -211,7 +211,7 @@ static int __xe_pin_fb_vma_ggtt(struct intel_framebuffer *fb,
>   
>   		for (x = 0; x < size; x += XE_PAGE_SIZE) {
>   			u64 pte = ggtt->pt_ops->pte_encode_bo(bo, x,
> -							      xe->pat.idx[XE_CACHE_WB]);
> +							      xe->pat.idx[XE_CACHE_NONE]);

This looks unrelated to DPT? Maybe tweak the commit title/message.

Anyway, I think change looks reasonable since you usually don't want to 
mess around with caching for display stuff.

With commit title/message tweaked,
Reviewed-by: Matthew Auld <matthew.auld at intel.com>

>   
>   			xe_ggtt_set_pte(ggtt, vma->node.start + x, pte);
>   		}


More information about the Intel-xe mailing list