Hi Nirmoy, The changes in this series make sense to me. I searched my code base, there are a few other places where stolen memory is allocated: 1) intel_dpt_create: I don't know what is dpt. Should we also consider this one? Maybe we never read from cpu? 2) create_ring_vma: I think cpu only write ring buffer but never read it. So should be okay. 3) vlv_rc6_init 4) there are a few places calling i915_gem_object_create_stolen_for_preallocated. I think this is also stolen memory? For integrated gpu like MTL, do we use stolen memory for ggtt? If yes, does CPU only write ggtt/never read? Thanks, Oak > -----Original Message----- > From: Das, Nirmoy <nirmoy.das@xxxxxxxxx> > Sent: June 30, 2023 1:02 PM > To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Das, Nirmoy <nirmoy.das@xxxxxxxxx>; Zeng, Oak <oak.zeng@xxxxxxxxx>; Jani > Nikula <jani.nikula@xxxxxxxxxxxxxxx>; Joonas Lahtinen > <joonas.lahtinen@xxxxxxxxxxxxxxx>; Andi Shyti <andi.shyti@xxxxxxxxxxxxxxx>; > Hajda, Andrzej <andrzej.hajda@xxxxxxxxx> > Subject: [PATCH 1/2] drm/i915/gt: Do not use stolen on MTL > > Use smem on MTL due to a HW bug in MTL that prevents > reading from stolen memory using LMEM BAR. > > Cc: Oak Zeng <oak.zeng@xxxxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > Cc: Andi Shyti <andi.shyti@xxxxxxxxxxxxxxx> > Cc: Andrzej Hajda <andrzej.hajda@xxxxxxxxx> > Signed-off-by: Nirmoy Das <nirmoy.das@xxxxxxxxx> > --- > drivers/gpu/drm/i915/gt/intel_gt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c > b/drivers/gpu/drm/i915/gt/intel_gt.c > index 33a61046ba58..9f64d61dd5fc 100644 > --- a/drivers/gpu/drm/i915/gt/intel_gt.c > +++ b/drivers/gpu/drm/i915/gt/intel_gt.c > @@ -466,7 +466,7 @@ static int intel_gt_init_scratch(struct intel_gt *gt, unsigned > int size) > obj = i915_gem_object_create_lmem(i915, size, > I915_BO_ALLOC_VOLATILE | > I915_BO_ALLOC_GPU_ONLY); > - if (IS_ERR(obj)) > + if (IS_ERR(obj) && !IS_METEORLAKE(i915)) /* Wa_22018444074 */ > obj = i915_gem_object_create_stolen(i915, size); > if (IS_ERR(obj)) > obj = i915_gem_object_create_internal(i915, size); > -- > 2.39.0