All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [bug report] drm/i915: Extract intel_bw_check_data_rate()
@ 2022-02-25  9:59 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2022-02-25  9:59 UTC (permalink / raw)
  To: ville.syrjala; +Cc: intel-gfx

Hello Ville Syrjälä,

The patch 6d8ebef53c2c: "drm/i915: Extract
intel_bw_check_data_rate()" from Feb 18, 2022, leads to the following
Smatch static checker warning:

	drivers/gpu/drm/i915/display/intel_bw.c:922 intel_bw_atomic_check()
	error: we previously assumed 'new_bw_state' could be null (see line 910)

drivers/gpu/drm/i915/display/intel_bw.c
    885 int intel_bw_atomic_check(struct intel_atomic_state *state)
    886 {
    887         struct drm_i915_private *dev_priv = to_i915(state->base.dev);
    888         const struct intel_bw_state *old_bw_state;
    889         struct intel_bw_state *new_bw_state;
    890         unsigned int data_rate;
    891         unsigned int num_active_planes;
    892         int i, ret;
    893         u32 allowed_points = 0;
    894         unsigned int max_bw_point = 0, max_bw = 0;
    895         unsigned int num_qgv_points = dev_priv->max_bw[0].num_qgv_points;
    896         unsigned int num_psf_gv_points = dev_priv->max_bw[0].num_psf_gv_points;
    897         bool changed = false;
    898 
    899         /* FIXME earlier gens need some checks too */
    900         if (DISPLAY_VER(dev_priv) < 11)
    901                 return 0;
    902 
    903         ret = intel_bw_check_data_rate(state, &changed);

Before "changed" could only be true when "new_bw_state" was non-NULL

    904         if (ret)
    905                 return ret;
    906 
    907         old_bw_state = intel_atomic_get_old_bw_state(state);
    908         new_bw_state = intel_atomic_get_new_bw_state(state);
    909 
    910         if (new_bw_state &&
    911             intel_can_enable_sagv(dev_priv, old_bw_state) !=
    912             intel_can_enable_sagv(dev_priv, new_bw_state))
    913                 changed = true;
                        ^^^^^^^^^^^^^^^

    914 
    915         /*
    916          * If none of our inputs (data rates, number of active
    917          * planes, SAGV yes/no) changed then nothing to do here.
    918          */
    919         if (!changed)
                    ^^^^^^^^
So after this check then we knew that "new_bw_state" as non-NULL

    920                 return 0;
    921 
--> 922         ret = intel_atomic_lock_global_state(&new_bw_state->base);
                                                      ^^^^^^^^^^^^^^^^^^
But now that relationship is not so clear so it causes a Smatch warning.


    923         if (ret)
    924                 return ret;
    925 
    926         data_rate = intel_bw_data_rate(dev_priv, new_bw_state);
    927         data_rate = DIV_ROUND_UP(data_rate, 1000);
    928 

regards,
dan carpenter

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-02-25 10:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-25  9:59 [Intel-gfx] [bug report] drm/i915: Extract intel_bw_check_data_rate() Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.