Hi Thomas, My patch was based on drm-tip.... because I found drm-tip is broken.... As long as drm-tip can build, I am all good. Thanks, Oak > -----Original Message----- > From: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx> > Sent: Monday, January 29, 2024 3:26 PM > To: Christian König <ckoenig.leichtzumerken@xxxxxxxxx>; Zeng, Oak > <oak.zeng@xxxxxxxxx>; dri-devel@xxxxxxxxxxxxxxxxxxxxx; intel- > xe@xxxxxxxxxxxxxxxxxxxxx > Cc: Amaranath.Somalapuram@xxxxxxx; De Marchi, Lucas > <lucas.demarchi@xxxxxxxxx> > Subject: Re: [PATCH] drm/xe: Fix a build error > > Hi, > > On 1/29/24 17:48, Christian König wrote: > > Am 27.01.24 um 16:53 schrieb Oak Zeng: > >> This fixes a build failure on drm-tip. This issue was introduced during > >> merge of "drm/ttm: replace busy placement with flags v6". For some > >> reason, the xe_bo.c part of above change is not merged. Manually merge > >> the missing part to drm_tip > > > > Mhm, I provided this as manual fixup for drm-tip in this rerere commit: > > > > commit afc5797e8c03bed3ec47a34f2bc3cf03fce24411 > > Author: Christian König <christian.koenig@xxxxxxx> > > Date: Thu Jan 25 10:44:54 2024 +0100 > > > > 2024y-01m-25d-09h-44m-07s UTC: drm-tip rerere cache update > > > > git version 2.34.1 > > > > > > And for me compiling xe in drm-tip worked fine after that. No idea why > > that didn't work for you. > > > > Anyway feel free to add my rb to this patch here if it helps in any way. > > > > Regards, > > Christian. > > I reverted that rerere cache update and added another one, so now it > works. Not sure exactly what the difference was, but the resulting patch > was for the drm-misc-next merge in my case, and It was for > drm-xe-something in your case. > > /Thomas > > > > > >> > >> Signed-off-by: Oak Zeng <oak.zeng@xxxxxxxxx> > >> --- > >> drivers/gpu/drm/xe/xe_bo.c | 33 +++++++++++++++------------------ > >> 1 file changed, 15 insertions(+), 18 deletions(-) > >> > >> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c > >> index 686d716c5581..d6a193060cc0 100644 > >> --- a/drivers/gpu/drm/xe/xe_bo.c > >> +++ b/drivers/gpu/drm/xe/xe_bo.c > >> @@ -38,22 +38,26 @@ static const struct ttm_place sys_placement_flags > >> = { > >> static struct ttm_placement sys_placement = { > >> .num_placement = 1, > >> .placement = &sys_placement_flags, > >> - .num_busy_placement = 1, > >> - .busy_placement = &sys_placement_flags, > >> }; > >> -static const struct ttm_place tt_placement_flags = { > >> - .fpfn = 0, > >> - .lpfn = 0, > >> - .mem_type = XE_PL_TT, > >> - .flags = 0, > >> +static const struct ttm_place tt_placement_flags[] = { > >> + { > >> + .fpfn = 0, > >> + .lpfn = 0, > >> + .mem_type = XE_PL_TT, > >> + .flags = TTM_PL_FLAG_DESIRED, > >> + }, > >> + { > >> + .fpfn = 0, > >> + .lpfn = 0, > >> + .mem_type = XE_PL_SYSTEM, > >> + .flags = TTM_PL_FLAG_FALLBACK, > >> + } > >> }; > >> static struct ttm_placement tt_placement = { > >> - .num_placement = 1, > >> - .placement = &tt_placement_flags, > >> - .num_busy_placement = 1, > >> - .busy_placement = &sys_placement_flags, > >> + .num_placement = 2, > >> + .placement = tt_placement_flags, > >> }; > >> bool mem_type_is_vram(u32 mem_type) > >> @@ -230,8 +234,6 @@ static int __xe_bo_placement_for_flags(struct > >> xe_device *xe, struct xe_bo *bo, > >> bo->placement = (struct ttm_placement) { > >> .num_placement = c, > >> .placement = bo->placements, > >> - .num_busy_placement = c, > >> - .busy_placement = bo->placements, > >> }; > >> return 0; > >> @@ -251,7 +253,6 @@ static void xe_evict_flags(struct > >> ttm_buffer_object *tbo, > >> /* Don't handle scatter gather BOs */ > >> if (tbo->type == ttm_bo_type_sg) { > >> placement->num_placement = 0; > >> - placement->num_busy_placement = 0; > >> return; > >> } > >> @@ -1391,8 +1392,6 @@ static int __xe_bo_fixed_placement(struct > >> xe_device *xe, > >> bo->placement = (struct ttm_placement) { > >> .num_placement = 1, > >> .placement = place, > >> - .num_busy_placement = 1, > >> - .busy_placement = place, > >> }; > >> return 0; > >> @@ -2150,9 +2149,7 @@ int xe_bo_migrate(struct xe_bo *bo, u32 mem_type) > >> xe_place_from_ttm_type(mem_type, &requested); > >> placement.num_placement = 1; > >> - placement.num_busy_placement = 1; > >> placement.placement = &requested; > >> - placement.busy_placement = &requested; > >> /* > >> * Stolen needs to be handled like below VRAM handling if we > >> ever need > >