From: Dave Gordon <david.s.gordon@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915/bxt: Fix wrongly placed ')' in I915_READ()
Date: Wed, 14 Oct 2015 13:58:59 +0100 [thread overview]
Message-ID: <561E5193.9070109@intel.com> (raw)
In-Reply-To: <1442496032-28403-1-git-send-email-damien.lespiau@intel.com>
On 17/09/15 14:20, Damien Lespiau wrote:
> Not the first time! not the last time?
>
> There is a possibility to use gcc 5's -Wbool-compare to try and compare
> (reg) in those macros to a constant and gcc will warn that the
> comparison between a boolean expression and a constant is always either
> true or false. Maybe.
Since boolean true (1) cannot be a valid argument to this macro, it
could contain a compile-time check that the parameter is not 1; if
boolean false (0) happens not to be a valid register address (BSpec says
MMIO 0 is reserved) the macro could check that the argument is neither
of these values, and the compiler might then detect that all possible
paths lead to a compile-time error. Something like this?
#define I915_READ(reg) \
({ \
if (__builtin_constant_p(reg)) { \
BUILD_BUG_ON((reg) == false); \
BUILD_BUG_ON((reg) == true); \
} \
dev_priv->uncore.funcs.mmio_readl(dev_priv, (reg), true); \
})
Interestingly, that reported three errors, all in intel_dsi.c where the
port-selection macros use 0s to fill in dummy elements when less than 3
ports are being used.
In function ‘intel_dsi_get_hw_state’
In function ‘intel_dsi_port_disable’
In function ‘intel_dsi_port_enable’
Other than that, there weren't any cases where a bool constant was being
passed to this specific macro (as of today).
.Dave.
> Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
> ---
> drivers/gpu/drm/i915/intel_ddi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
> index 4823184..5b600bf 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -2882,7 +2882,7 @@ static bool bxt_ddi_pll_get_hw_state(struct drm_i915_private *dev_priv,
> * here just read out lanes 0/1 and output a note if lanes 2/3 differ.
> */
> hw_state->pcsdw12 = I915_READ(BXT_PORT_PCS_DW12_LN01(port));
> - if (I915_READ(BXT_PORT_PCS_DW12_LN23(port) != hw_state->pcsdw12))
> + if (I915_READ(BXT_PORT_PCS_DW12_LN23(port)) != hw_state->pcsdw12)
> DRM_DEBUG_DRIVER("lane stagger config different for lane 01 (%08x) and 23 (%08x)\n",
> hw_state->pcsdw12,
> I915_READ(BXT_PORT_PCS_DW12_LN23(port)));
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-10-14 12:59 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-17 13:20 [PATCH] drm/i915/bxt: Fix wrongly placed ')' in I915_READ() Damien Lespiau
2015-09-17 13:42 ` Imre Deak
2015-09-18 11:25 ` Jani Nikula
2015-10-14 12:58 ` Dave Gordon [this message]
2015-10-14 13:19 ` Daniel Vetter
2015-10-14 13:29 ` Jani Nikula
2015-10-14 13:35 ` Jani Nikula
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=561E5193.9070109@intel.com \
--to=david.s.gordon@intel.com \
--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.