[CI 2/3] drm/xe: Add XE_BO_GGTT_INVALIDATE_BIT flag

Lucas De Marchi lucas.demarchi at intel.com
Wed Mar 20 00:07:41 UTC 2024


On Tue, Mar 19, 2024 at 11:30:09PM +0530, Ghimiray, Himal Prasad wrote:
>
>On 19-03-2024 22:37, Maarten Lankhorst wrote:
>>From: Matthew Brost <matthew.brost at intel.com>
>>
>>Add XE_BO_GGTT_INVALIDATE_BIT flag which indicates the GGTT should be
>>invalidated when a BO is added / removed from the GGTT. This is
>>typically set when a BO is used by the GuC as the GuC has GGTT TLBs.
>>
>>Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>>Signed-off-by: Matthew Brost <matthew.brost at intel.com>
>>[mlankhorst: Small fix to only inherit GGTT_INVALIDATE from src bo]
>>Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>>Link: https://patchwork.freedesktop.org/patch/msgid/20240306052002.311196-4-matthew.brost@intel.com
>>---
>>  drivers/gpu/drm/xe/display/xe_fb_pin.c |  2 +-
>>  drivers/gpu/drm/xe/xe_bo.c             |  8 +++++---
>>  drivers/gpu/drm/xe/xe_bo.h             |  1 +
>>  drivers/gpu/drm/xe/xe_ggtt.c           | 12 ++++++++----
>>  drivers/gpu/drm/xe/xe_ggtt.h           |  3 ++-
>>  drivers/gpu/drm/xe/xe_guc_ads.c        |  3 ++-
>>  drivers/gpu/drm/xe/xe_guc_ct.c         |  3 ++-
>>  drivers/gpu/drm/xe/xe_guc_hwconfig.c   |  3 ++-
>>  drivers/gpu/drm/xe/xe_guc_log.c        |  3 ++-
>>  drivers/gpu/drm/xe/xe_guc_pc.c         |  3 ++-
>>  drivers/gpu/drm/xe/xe_hw_engine.c      |  3 ++-
>>  drivers/gpu/drm/xe/xe_lrc.c            |  3 ++-
>>  drivers/gpu/drm/xe/xe_memirq.c         |  1 +
>>  drivers/gpu/drm/xe/xe_sa.c             |  3 ++-
>>  drivers/gpu/drm/xe/xe_uc_fw.c          |  3 ++-
>>  15 files changed, 36 insertions(+), 18 deletions(-)
>>
>>diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
>>index 311ffad6e2c0..2a50a7eaaa31 100644
>>--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
>>+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
>>@@ -323,7 +323,7 @@ static void __xe_unpin_fb_vma(struct i915_vma *vma)
>>  		xe_bo_unpin_map_no_vm(vma->dpt);
>>  	else if (!drm_mm_node_allocated(&vma->bo->ggtt_node) ||
>>  		 vma->bo->ggtt_node.start != vma->node.start)
>>-		xe_ggtt_remove_node(ggtt, &vma->node);
>>+		xe_ggtt_remove_node(ggtt, &vma->node, false);
>>  	ttm_bo_reserve(&vma->bo->ttm, false, false, NULL);
>>  	ttm_bo_unpin(&vma->bo->ttm);
>>diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
>>index 8383c56c9960..8ee04535da2a 100644
>>--- a/drivers/gpu/drm/xe/xe_bo.c
>>+++ b/drivers/gpu/drm/xe/xe_bo.c
>>@@ -1580,13 +1580,15 @@ struct xe_bo *xe_managed_bo_create_from_data(struct xe_device *xe, struct xe_til
>>  int xe_managed_bo_reinit_in_vram(struct xe_device *xe, struct xe_tile *tile, struct xe_bo **src)
>>  {
>>  	struct xe_bo *bo;
>>+	u32 dst_flags = XE_BO_CREATE_VRAM_IF_DGFX(tile) | XE_BO_CREATE_GGTT_BIT;
>>+
>>+	dst_flags |= (*src)->flags & XE_BO_GGTT_INVALIDATE_BIT;
>>  	xe_assert(xe, IS_DGFX(xe));
>>  	xe_assert(xe, !(*src)->vmap.is_iomem);
>>-	bo = xe_managed_bo_create_from_data(xe, tile, (*src)->vmap.vaddr, (*src)->size,
>>-					    XE_BO_CREATE_VRAM_IF_DGFX(tile) |
>>-					    XE_BO_CREATE_GGTT_BIT);
>>+	bo = xe_managed_bo_create_from_data(xe, tile, (*src)->vmap.vaddr,
>>+					    (*src)->size, dst_flags);
>>  	if (IS_ERR(bo))
>>  		return PTR_ERR(bo);
>>diff --git a/drivers/gpu/drm/xe/xe_bo.h b/drivers/gpu/drm/xe/xe_bo.h
>>index 87ae8ee7c316..d7afcf49fd9e 100644
>>--- a/drivers/gpu/drm/xe/xe_bo.h
>>+++ b/drivers/gpu/drm/xe/xe_bo.h
>>@@ -46,6 +46,7 @@
>>  #define XE_BO_NEEDS_CPU_ACCESS		BIT(13)
>>  #define XE_BO_NEEDS_UC			BIT(14)
>>  #define XE_BO_NEEDS_64K			BIT(15)
>>+#define XE_BO_GGTT_INVALIDATE_BIT	BIT(16)
>
>There is another patch from lucas where he is dropping usage of _BIT 
>suffix for existing BO flags name.
>
>Better to align to same convention.
>
>https://patchwork.freedesktop.org/patch/582863/?series=131120&rev=2

The hard part of that patch was finding a convention to follow
and the command to generate the patch. The rest is trivial and I can
simply re-generate it on top. I don't want that patch to block other
pending work.  So, if this is ready, feel free to apply and I will send
mine on top.

AFAIR there was another patch from Matt Auld I was waiting so my
refactor doesn't disrupt other pending work.

Lucas De Marchi


More information about the Intel-xe mailing list