[Intel-gfx] [bug report] drm/i915/dsb: Use DEwake to combat PkgC latency

Dan Carpenter dan.carpenter at linaro.org
Wed Oct 4 11:09:32 UTC 2023


Hello Ville Syrjälä,

The patch f83b94d23770: "drm/i915/dsb: Use DEwake to combat PkgC
latency" from Jun 6, 2023 (linux-next), leads to the following Smatch
static checker warning:

	drivers/gpu/drm/i915/display/intel_dsb.c:363 _intel_dsb_commit()
	warn: always true condition '(dewake_scanline >= 0) => (0-u32max >= 0)'

drivers/gpu/drm/i915/display/intel_dsb.c
    339 static void _intel_dsb_commit(struct intel_dsb *dsb, u32 ctrl,
    340                               unsigned int dewake_scanline)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
unsigned int

    341 {
    342         struct intel_crtc *crtc = dsb->crtc;
    343         struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
    344         enum pipe pipe = crtc->pipe;
    345         u32 tail;
    346 
    347         tail = dsb->free_pos * 4;
    348         if (drm_WARN_ON(&dev_priv->drm, !IS_ALIGNED(tail, CACHELINE_BYTES)))
    349                 return;
    350 
    351         if (is_dsb_busy(dev_priv, pipe, dsb->id)) {
    352                 drm_err(&dev_priv->drm, "[CRTC:%d:%s] DSB %d is busy\n",
    353                         crtc->base.base.id, crtc->base.name, dsb->id);
    354                 return;
    355         }
    356 
    357         intel_de_write_fw(dev_priv, DSB_CTRL(pipe, dsb->id),
    358                           ctrl | DSB_ENABLE);
    359 
    360         intel_de_write_fw(dev_priv, DSB_HEAD(pipe, dsb->id),
    361                           i915_ggtt_offset(dsb->vma));
    362 
--> 363         if (dewake_scanline >= 0) {
                    ^^^^^^^^^^^^^^^^^^^^
always true

    364                 int diff, hw_dewake_scanline;
    365 
    366                 hw_dewake_scanline = intel_crtc_scanline_to_hw(crtc, dewake_scanline);
    367 
    368                 intel_de_write_fw(dev_priv, DSB_PMCTRL(pipe, dsb->id),
    369                                   DSB_ENABLE_DEWAKE |
    370                                   DSB_SCANLINE_FOR_DEWAKE(hw_dewake_scanline));
    371 
    372                 /*
    373                  * Force DEwake immediately if we're already past
    374                  * or close to racing past the target scanline.
    375                  */
    376                 diff = dewake_scanline - intel_get_crtc_scanline(crtc);
    377                 intel_de_write_fw(dev_priv, DSB_PMCTRL_2(pipe, dsb->id),
    378                                   (diff >= 0 && diff < 5 ? DSB_FORCE_DEWAKE : 0) |
    379                                   DSB_BLOCK_DEWAKE_EXTENSION);
    380         }
    381 
    382         intel_de_write_fw(dev_priv, DSB_TAIL(pipe, dsb->id),
    383                           i915_ggtt_offset(dsb->vma) + tail);
    384 }

regards,
dan carpenter


More information about the Intel-gfx mailing list