From: Jani Nikula <jani.nikula@intel.com>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org, Borislav Petkov <bp@suse.de>,
Randy Dunlap <rdunlap@infradead.org>,
Ruiqi GONG <gongruiqi1@huawei.com>
Subject: Re: [Intel-gfx] [PATCH 1/2] drm/i915/reg: fix undefined behavior due to shift overflowing the constant
Date: Thu, 19 May 2022 11:25:47 +0300 [thread overview]
Message-ID: <87wneic4j8.fsf@intel.com> (raw)
In-Reply-To: <878rqzdk22.fsf@intel.com>
On Wed, 18 May 2022, Jani Nikula <jani.nikula@intel.com> wrote:
> On Wed, 18 May 2022, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
>> On Wed, May 18, 2022 at 02:33:14PM +0300, Jani Nikula wrote:
>>> Use REG_GENMASK() and REG_FIELD_PREP() to avoid errors due to
>>> -fsanitize=shift.
>>
>> I presume it's just unhappy about shifting into the sign bit?
>
> Yeah, and apparently it also only happens on some GCC versions. *shrug*.
>
>>
>> Changes look correct:
>> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Thanks,
> Jani.
And pushed 1/2 to drm-intel-next.
BR,
Jani.
>
>>
>>>
>>> References: https://lore.kernel.org/r/20220405151517.29753-12-bp@alien8.de
>>> Reported-by: Borislav Petkov <bp@suse.de>
>>> Reported-by: Ruiqi GONG <gongruiqi1@huawei.com>
>>> Cc: Randy Dunlap <rdunlap@infradead.org>
>>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>> ---
>>> drivers/gpu/drm/i915/i915_reg.h | 32 ++++++++++++++++----------------
>>> 1 file changed, 16 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
>>> index 321a08281a3f..dff3f88d8090 100644
>>> --- a/drivers/gpu/drm/i915/i915_reg.h
>>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>>> @@ -7607,25 +7607,25 @@ enum skl_power_gate {
>>> #define _PORT_CLK_SEL_A 0x46100
>>> #define _PORT_CLK_SEL_B 0x46104
>>> #define PORT_CLK_SEL(port) _MMIO_PORT(port, _PORT_CLK_SEL_A, _PORT_CLK_SEL_B)
>>> -#define PORT_CLK_SEL_LCPLL_2700 (0 << 29)
>>> -#define PORT_CLK_SEL_LCPLL_1350 (1 << 29)
>>> -#define PORT_CLK_SEL_LCPLL_810 (2 << 29)
>>> -#define PORT_CLK_SEL_SPLL (3 << 29)
>>> -#define PORT_CLK_SEL_WRPLL(pll) (((pll) + 4) << 29)
>>> -#define PORT_CLK_SEL_WRPLL1 (4 << 29)
>>> -#define PORT_CLK_SEL_WRPLL2 (5 << 29)
>>> -#define PORT_CLK_SEL_NONE (7 << 29)
>>> -#define PORT_CLK_SEL_MASK (7 << 29)
>>> +#define PORT_CLK_SEL_MASK REG_GENMASK(31, 29)
>>> +#define PORT_CLK_SEL_LCPLL_2700 REG_FIELD_PREP(PORT_CLK_SEL_MASK, 0)
>>> +#define PORT_CLK_SEL_LCPLL_1350 REG_FIELD_PREP(PORT_CLK_SEL_MASK, 1)
>>> +#define PORT_CLK_SEL_LCPLL_810 REG_FIELD_PREP(PORT_CLK_SEL_MASK, 2)
>>> +#define PORT_CLK_SEL_SPLL REG_FIELD_PREP(PORT_CLK_SEL_MASK, 3)
>>> +#define PORT_CLK_SEL_WRPLL(pll) REG_FIELD_PREP(PORT_CLK_SEL_MASK, 4 + (pll))
>>> +#define PORT_CLK_SEL_WRPLL1 REG_FIELD_PREP(PORT_CLK_SEL_MASK, 4)
>>> +#define PORT_CLK_SEL_WRPLL2 REG_FIELD_PREP(PORT_CLK_SEL_MASK, 5)
>>> +#define PORT_CLK_SEL_NONE REG_FIELD_PREP(PORT_CLK_SEL_MASK, 7)
>>>
>>> /* On ICL+ this is the same as PORT_CLK_SEL, but all bits change. */
>>> #define DDI_CLK_SEL(port) PORT_CLK_SEL(port)
>>> -#define DDI_CLK_SEL_NONE (0x0 << 28)
>>> -#define DDI_CLK_SEL_MG (0x8 << 28)
>>> -#define DDI_CLK_SEL_TBT_162 (0xC << 28)
>>> -#define DDI_CLK_SEL_TBT_270 (0xD << 28)
>>> -#define DDI_CLK_SEL_TBT_540 (0xE << 28)
>>> -#define DDI_CLK_SEL_TBT_810 (0xF << 28)
>>> -#define DDI_CLK_SEL_MASK (0xF << 28)
>>> +#define DDI_CLK_SEL_MASK REG_GENMASK(31, 28)
>>> +#define DDI_CLK_SEL_NONE REG_FIELD_PREP(DDI_CLK_SEL_MASK, 0x0)
>>> +#define DDI_CLK_SEL_MG REG_FIELD_PREP(DDI_CLK_SEL_MASK, 0x8)
>>> +#define DDI_CLK_SEL_TBT_162 REG_FIELD_PREP(DDI_CLK_SEL_MASK, 0xC)
>>> +#define DDI_CLK_SEL_TBT_270 REG_FIELD_PREP(DDI_CLK_SEL_MASK, 0xD)
>>> +#define DDI_CLK_SEL_TBT_540 REG_FIELD_PREP(DDI_CLK_SEL_MASK, 0xE)
>>> +#define DDI_CLK_SEL_TBT_810 REG_FIELD_PREP(DDI_CLK_SEL_MASK, 0xF)
>>>
>>> /* Transcoder clock selection */
>>> #define _TRANS_CLK_SEL_A 0x46140
>>> --
>>> 2.30.2
--
Jani Nikula, Intel Open Source Graphics Center
next prev parent reply other threads:[~2022-05-19 8:25 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-18 11:33 [Intel-gfx] [PATCH 1/2] drm/i915/reg: fix undefined behavior due to shift overflowing the constant Jani Nikula
2022-05-18 11:33 ` [Intel-gfx] [PATCH 2/2] drm/i915/uc: Fix " Jani Nikula
2022-05-18 14:08 ` Michal Wajdeczko
2022-05-18 14:15 ` Jani Nikula
2022-05-19 8:38 ` Jani Nikula
2022-05-18 12:53 ` [Intel-gfx] [PATCH 1/2] drm/i915/reg: fix " Ville Syrjälä
2022-05-18 13:52 ` Jani Nikula
2022-05-19 8:25 ` Jani Nikula [this message]
2022-05-18 13:59 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [1/2] " Patchwork
2022-05-18 14:23 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-05-18 17:10 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
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=87wneic4j8.fsf@intel.com \
--to=jani.nikula@intel.com \
--cc=bp@suse.de \
--cc=gongruiqi1@huawei.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=rdunlap@infradead.org \
--cc=ville.syrjala@linux.intel.com \
/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.