All of lore.kernel.org
 help / color / mirror / Atom feed
From: Damien Lespiau <damien.lespiau@intel.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: drm/i915/bdw: Provide the BDW specific HDMI buffer translation table
Date: Wed, 27 Aug 2014 14:12:11 +0100	[thread overview]
Message-ID: <20140827131211.GD2292@strange.ger.corp.intel.com> (raw)
In-Reply-To: <20140827130446.GA17306@mwanda>

On Wed, Aug 27, 2014 at 04:04:46PM +0300, Dan Carpenter wrote:
> Hello Damien Lespiau,
> 
> The patch a26aa8baee6c: "drm/i915/bdw: Provide the BDW specific HDMI
> buffer translation table" from Aug 1, 2014, leads to the following
> static checker warning:
> 
> 	drivers/gpu/drm/i915/intel_ddi.c:225 intel_prepare_ddi_buffers()
> 	error: buffer overflow 'ddi_translations_hdmi' 24 <= 31
> 
> drivers/gpu/drm/i915/intel_ddi.c
>    155  static void intel_prepare_ddi_buffers(struct drm_device *dev, enum port port)
>    156  {
>    157          struct drm_i915_private *dev_priv = dev->dev_private;
>    158          u32 reg;
>    159          int i, n_hdmi_entries, hdmi_800mV_0dB;
>    160          int hdmi_level = dev_priv->vbt.ddi_port_info[port].hdmi_level_shift;
>                     ^^^^^^^^^^
> The static checker thinks this is a number between 0-15.  I didn't check
> if that was correct.
> 
>    161          const u32 *ddi_translations_fdi;
> 
> [ snip ]
> 
>    186                  ddi_translations_hdmi = bdw_ddi_translations_hdmi;
>    187                  n_hdmi_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi);
>                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> limit is the size of the array.
> 
>    188                  hdmi_800mV_0dB = 7;
>    189          }
>    190  
>    191          switch (port) {
>    192          case PORT_A:
>    193                  ddi_translations = ddi_translations_edp;
>    194                  break;
>    195          case PORT_B:
>    196          case PORT_C:
>    197                  ddi_translations = ddi_translations_dp;
>    198                  break;
>    199          case PORT_D:
>    200                  if (intel_dp_is_edp(dev, PORT_D))
>    201                          ddi_translations = ddi_translations_edp;
>    202                  else
>    203                          ddi_translations = ddi_translations_dp;
>    204                  break;
>    205          case PORT_E:
>    206                  ddi_translations = ddi_translations_fdi;
>    207                  break;
>    208          default:
>    209                  BUG();
>    210          }
>    211  
>    212          for (i = 0, reg = DDI_BUF_TRANS(port);
>    213               i < ARRAY_SIZE(hsw_ddi_translations_fdi); i++) {
>    214                  I915_WRITE(reg, ddi_translations[i]);
>    215                  reg += 4;
>    216          }
>    217  
>    218          /* Choose a good default if VBT is badly populated */
>    219          if (hdmi_level == HDMI_LEVEL_SHIFT_UNKNOWN ||
>    220              hdmi_level >= n_hdmi_entries)
>                                   ^^^^^^^^^^^^^^
> We cap it at the size of the array which is either 20 or 24.  The static
> checker thinks it's already capped at 15 so this is not a problem.
> 
> Should this be n_hdmi_entries / 2 or something?  Maybe a - 1 in there?

Indeed, n_hdmi_entries needed to be:

  n_hdmi_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi) / 2;

This was fixed by:

  commit d6699dd3a7f696a80a5f8e5bb6ecf6ff6dd7c998
  Author: Damien Lespiau <damien.lespiau@intel.com>
  Date:   Sat Aug 9 16:29:31 2014 +0100

      drm/i915: Fix wrong number of HDMI translation entries

-- 
Damien

      reply	other threads:[~2014-08-27 13:12 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-27 13:04 drm/i915/bdw: Provide the BDW specific HDMI buffer translation table Dan Carpenter
2014-08-27 13:12 ` Damien Lespiau [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140827131211.GD2292@strange.ger.corp.intel.com \
    --to=damien.lespiau@intel.com \
    --cc=dan.carpenter@oracle.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.