Message ID | 20220325161140.11906-1-animesh.manna@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915/dsb: modified to drm_info in dsb_prepare() | expand |
> -----Original Message----- > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Animesh > Manna > Sent: Friday, March 25, 2022 9:42 PM > To: intel-gfx@lists.freedesktop.org > Cc: Das, Nirmoy <nirmoy.das@intel.com> > Subject: [Intel-gfx] [PATCH] drm/i915/dsb: modified to drm_info in dsb_prepare() > > The request to aqquire gem resources is failing for DSB in rare scenario where it is > busy and the register programming will be done through mmio fallback path. > > DSB has extra advantage of faster register programming which may go away > through mmio path. Adding wait for gem resource also may not be right as anyways > losing time. > > To make the CI execution happy replaced drm_err() to drm_info() for printing debug > info during dsb buffer preparation. > > v1: Initial version. > v2: Added print for mmio fallback at out label. [Nirmoy] > v3: Improved debug message. [Nirmoy] Pushed to drm-intel-next. Thanks for the patch and reviews. Regards, Uma Shankar > Reviewed-by: Nirmoy Das <nirmoy.das@intel.com> > Cc: Nirmoy Das <nirmoy.das@linux.intel.com> > Signed-off-by: Animesh Manna <animesh.manna@intel.com> > --- > drivers/gpu/drm/i915/display/intel_dsb.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c > b/drivers/gpu/drm/i915/display/intel_dsb.c > index b34a67309976..c4affcb216fd 100644 > --- a/drivers/gpu/drm/i915/display/intel_dsb.c > +++ b/drivers/gpu/drm/i915/display/intel_dsb.c > @@ -283,14 +283,12 @@ void intel_dsb_prepare(struct intel_crtc_state > *crtc_state) > > obj = i915_gem_object_create_internal(i915, DSB_BUF_SIZE); > if (IS_ERR(obj)) { > - drm_err(&i915->drm, "Gem object creation failed\n"); > kfree(dsb); > goto out; > } > > vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, 0); > if (IS_ERR(vma)) { > - drm_err(&i915->drm, "Vma creation failed\n"); > i915_gem_object_put(obj); > kfree(dsb); > goto out; > @@ -298,7 +296,6 @@ void intel_dsb_prepare(struct intel_crtc_state *crtc_state) > > buf = i915_gem_object_pin_map_unlocked(vma->obj, I915_MAP_WC); > if (IS_ERR(buf)) { > - drm_err(&i915->drm, "Command buffer creation failed\n"); > i915_vma_unpin_and_release(&vma, I915_VMA_RELEASE_MAP); > kfree(dsb); > goto out; > @@ -311,6 +308,10 @@ void intel_dsb_prepare(struct intel_crtc_state *crtc_state) > dsb->ins_start_offset = 0; > crtc_state->dsb = dsb; > out: > + if (!crtc_state->dsb) > + drm_info(&i915->drm, > + "DSB queue setup failed, will fallback to MMIO for display > HW > +programming\n"); > + > intel_runtime_pm_put(&i915->runtime_pm, wakeref); } > > -- > 2.29.0
diff --git a/drivers/gpu/drm/i915/display/intel_dsb.c b/drivers/gpu/drm/i915/display/intel_dsb.c index b34a67309976..c4affcb216fd 100644 --- a/drivers/gpu/drm/i915/display/intel_dsb.c +++ b/drivers/gpu/drm/i915/display/intel_dsb.c @@ -283,14 +283,12 @@ void intel_dsb_prepare(struct intel_crtc_state *crtc_state) obj = i915_gem_object_create_internal(i915, DSB_BUF_SIZE); if (IS_ERR(obj)) { - drm_err(&i915->drm, "Gem object creation failed\n"); kfree(dsb); goto out; } vma = i915_gem_object_ggtt_pin(obj, NULL, 0, 0, 0); if (IS_ERR(vma)) { - drm_err(&i915->drm, "Vma creation failed\n"); i915_gem_object_put(obj); kfree(dsb); goto out; @@ -298,7 +296,6 @@ void intel_dsb_prepare(struct intel_crtc_state *crtc_state) buf = i915_gem_object_pin_map_unlocked(vma->obj, I915_MAP_WC); if (IS_ERR(buf)) { - drm_err(&i915->drm, "Command buffer creation failed\n"); i915_vma_unpin_and_release(&vma, I915_VMA_RELEASE_MAP); kfree(dsb); goto out; @@ -311,6 +308,10 @@ void intel_dsb_prepare(struct intel_crtc_state *crtc_state) dsb->ins_start_offset = 0; crtc_state->dsb = dsb; out: + if (!crtc_state->dsb) + drm_info(&i915->drm, + "DSB queue setup failed, will fallback to MMIO for display HW programming\n"); + intel_runtime_pm_put(&i915->runtime_pm, wakeref); }