From: Matthew Auld Date: Thu, 25 May 2023 11:45:42 +0000 (+0100) Subject: drm/xe/bo: further limit where CCS pages are needed X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=38453f826db89045d505c2122fd8e25cd6099007;p=linux.git drm/xe/bo: further limit where CCS pages are needed No need to allocate extra pages for this if we know flat-ccs AUX state is not even possible, like for normal system memory objects. Signed-off-by: Matthew Auld Cc: Thomas Hellström Reviewed-by: Nirmoy Das Signed-off-by: Rodrigo Vivi --- diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c index 71864ef95328e..394e4bfae6e19 100644 --- a/drivers/gpu/drm/xe/xe_bo.c +++ b/drivers/gpu/drm/xe/xe_bo.c @@ -285,6 +285,7 @@ static struct ttm_tt *xe_ttm_tt_create(struct ttm_buffer_object *ttm_bo, struct xe_bo *bo = ttm_to_xe_bo(ttm_bo); struct xe_device *xe = xe_bo_device(bo); struct xe_ttm_tt *tt; + unsigned long extra_pages; int err; tt = kzalloc(sizeof(*tt), GFP_KERNEL); @@ -293,12 +294,15 @@ static struct ttm_tt *xe_ttm_tt_create(struct ttm_buffer_object *ttm_bo, tt->dev = xe->drm.dev; + extra_pages = 0; + if (xe_bo_needs_ccs_pages(bo)) + extra_pages = DIV_ROUND_UP(xe_device_ccs_bytes(xe, bo->size), + PAGE_SIZE); + /* TODO: Select caching mode */ err = ttm_tt_init(&tt->ttm, &bo->ttm, page_flags, bo->flags & XE_BO_SCANOUT_BIT ? ttm_write_combined : ttm_cached, - DIV_ROUND_UP(xe_device_ccs_bytes(xe_bo_device(bo), - bo->ttm.base.size), - PAGE_SIZE)); + extra_pages); if (err) { kfree(tt); return NULL;