Message ID | 20230630170140.17319-1-nirmoy.das@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/2] drm/i915/gt: Do not use stolen on MTL | expand |
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@intel.com> > Sent: June 30, 2023 1:02 PM > To: intel-gfx@lists.freedesktop.org > Cc: Das, Nirmoy <nirmoy.das@intel.com>; Zeng, Oak <oak.zeng@intel.com>; Jani > Nikula <jani.nikula@linux.intel.com>; Joonas Lahtinen > <joonas.lahtinen@linux.intel.com>; Andi Shyti <andi.shyti@linux.intel.com>; > Hajda, Andrzej <andrzej.hajda@intel.com> > 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@intel.com> > Cc: Jani Nikula <jani.nikula@linux.intel.com> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Andi Shyti <andi.shyti@linux.intel.com> > Cc: Andrzej Hajda <andrzej.hajda@intel.com> > Signed-off-by: Nirmoy Das <nirmoy.das@intel.com> > --- > 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
Hi Oak, On 7/4/2023 5:01 PM, Zeng, Oak wrote: > 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: Thanks for checking all the places. > > 1) intel_dpt_create: I don't know what is dpt. Should we also consider this one? Maybe we never read from cpu? This expects i915_ggtt_has_aperture() which MTL doesn't have. > 2) create_ring_vma: I think cpu only write ring buffer but never read it. So should be okay. Same as above. > 3) vlv_rc6_init ThisĀ seems to be only for IS_VALLEYVIEW(). > 4) there are a few places calling i915_gem_object_create_stolen_for_preallocated. I think this is also stolen memory? Where is this from, do you mean I915_BO_PREALLOC ? > > For integrated gpu like MTL, do we use stolen memory for ggtt? If yes, does CPU only write ggtt/never read? GTT pages only seems to be written. Thanks, Nirmoy > > Thanks, > Oak > >> -----Original Message----- >> From: Das, Nirmoy <nirmoy.das@intel.com> >> Sent: June 30, 2023 1:02 PM >> To: intel-gfx@lists.freedesktop.org >> Cc: Das, Nirmoy <nirmoy.das@intel.com>; Zeng, Oak <oak.zeng@intel.com>; Jani >> Nikula <jani.nikula@linux.intel.com>; Joonas Lahtinen >> <joonas.lahtinen@linux.intel.com>; Andi Shyti <andi.shyti@linux.intel.com>; >> Hajda, Andrzej <andrzej.hajda@intel.com> >> 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@intel.com> >> Cc: Jani Nikula <jani.nikula@linux.intel.com> >> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> >> Cc: Andi Shyti <andi.shyti@linux.intel.com> >> Cc: Andrzej Hajda <andrzej.hajda@intel.com> >> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com> >> --- >> 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
Thanks, Oak > -----Original Message----- > From: Nirmoy Das <nirmoy.das@linux.intel.com> > Sent: July 4, 2023 11:31 AM > To: Zeng, Oak <oak.zeng@intel.com>; Das, Nirmoy <nirmoy.das@intel.com>; > intel-gfx@lists.freedesktop.org > Cc: Hajda, Andrzej <andrzej.hajda@intel.com> > Subject: Re: [Intel-gfx] [PATCH 1/2] drm/i915/gt: Do not use stolen on MTL > > Hi Oak, > > On 7/4/2023 5:01 PM, Zeng, Oak wrote: > > 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: > Thanks for checking all the places. > > > > 1) intel_dpt_create: I don't know what is dpt. Should we also consider this one? > Maybe we never read from cpu? > This expects i915_ggtt_has_aperture() which MTL doesn't have. > > 2) create_ring_vma: I think cpu only write ring buffer but never read it. So > should be okay. > Same as above. > > 3) vlv_rc6_init > ThisĀ seems to be only for IS_VALLEYVIEW(). > > 4) there are a few places calling > i915_gem_object_create_stolen_for_preallocated. I think this is also stolen > memory? > > Where is this from, do you mean I915_BO_PREALLOC ? I looked some internal code, and just realized upstream code is different
On 30.06.2023 19:01, Nirmoy Das wrote: > 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@intel.com> > Cc: Jani Nikula <jani.nikula@linux.intel.com> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Andi Shyti <andi.shyti@linux.intel.com> > Cc: Andrzej Hajda <andrzej.hajda@intel.com> > Signed-off-by: Nirmoy Das <nirmoy.das@intel.com> Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com> Regards Andrzej > --- > 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);
Hi Nirmoy, On Fri, Jun 30, 2023 at 07:01:39PM +0200, Nirmoy Das wrote: > 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@intel.com> > Cc: Jani Nikula <jani.nikula@linux.intel.com> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Andi Shyti <andi.shyti@linux.intel.com> > Cc: Andrzej Hajda <andrzej.hajda@intel.com> > Signed-off-by: Nirmoy Das <nirmoy.das@intel.com> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> Andi
Hi, On Tue, Jul 04, 2023 at 03:01:01PM +0000, Zeng, Oak wrote: > 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? sounds like we need a wrapper? Andi > 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@intel.com> > > Sent: June 30, 2023 1:02 PM > > To: intel-gfx@lists.freedesktop.org > > Cc: Das, Nirmoy <nirmoy.das@intel.com>; Zeng, Oak <oak.zeng@intel.com>; Jani > > Nikula <jani.nikula@linux.intel.com>; Joonas Lahtinen > > <joonas.lahtinen@linux.intel.com>; Andi Shyti <andi.shyti@linux.intel.com>; > > Hajda, Andrzej <andrzej.hajda@intel.com> > > 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@intel.com> > > Cc: Jani Nikula <jani.nikula@linux.intel.com> > > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > > Cc: Andi Shyti <andi.shyti@linux.intel.com> > > Cc: Andrzej Hajda <andrzej.hajda@intel.com> > > Signed-off-by: Nirmoy Das <nirmoy.das@intel.com> > > --- > > 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
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);
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@intel.com> Cc: Jani Nikula <jani.nikula@linux.intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Andi Shyti <andi.shyti@linux.intel.com> Cc: Andrzej Hajda <andrzej.hajda@intel.com> Signed-off-by: Nirmoy Das <nirmoy.das@intel.com> --- drivers/gpu/drm/i915/gt/intel_gt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)