From: Jesse Brandeburg <jesse.brandeburg@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [PATCH net-next v2 06/10] drivers/net/ethernet: handle one warning explicitly
Date: Tue, 15 Sep 2020 09:41:35 -0700 [thread overview]
Message-ID: <20200915094135.00005d21@intel.com> (raw)
In-Reply-To: <e15b85af416c7257aaa601901b18c7c9bc9586e0.camel@kernel.org>
Saeed Mahameed wrote:
> On Mon, 2020-09-14 at 18:44 -0700, Jesse Brandeburg wrote:
> > While fixing the W=1 builds, this warning came up because the
> > developers used a very tricky way to get structures initialized
> > to a non-zero value, but this causes GCC to warn about an
> > override. In this case the override was intentional, so just
> > disable the warning for this code with a macro that results
> > in disabling the warning for compiles on GCC versions after 8.
> >
> > NOTE: the __diag_ignore macro currently only accepts a second
> > argument of 8 (version 80000)
> >
> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > ---
> > drivers/net/ethernet/renesas/sh_eth.c | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/renesas/sh_eth.c
> > b/drivers/net/ethernet/renesas/sh_eth.c
> > index 586642c33d2b..c63304632935 100644
> > --- a/drivers/net/ethernet/renesas/sh_eth.c
> > +++ b/drivers/net/ethernet/renesas/sh_eth.c
> > @@ -45,6 +45,15 @@
> > #define SH_ETH_OFFSET_DEFAULTS \
> > [0 ... SH_ETH_MAX_REGISTER_OFFSET - 1] = SH_ETH_OFFSET_INVALID
> >
> > +/* use some intentionally tricky logic here to initialize the whole
> > struct to
> > + * 0xffff, but then override certain fields, requiring us to
> > indicate that we
> > + * "know" that there are overrides in this structure, and we'll need
> > to disable
> > + * that warning from W=1 builds. GCC has supported this option since
> > 4.2.X, but
> > + * the macros available to do this only define GCC 8.
> > + */
> > +__diag_push();
> > +__diag_ignore(GCC, 8, "-Woverride-init",
> > + "logic to initialize all and then override some is OK");
> > static const u16 sh_eth_offset_gigabit[SH_ETH_MAX_REGISTER_OFFSET] =
> > {
> > SH_ETH_OFFSET_DEFAULTS,
> >
> > @@ -332,6 +341,7 @@ static const u16
> > sh_eth_offset_fast_sh3_sh2[SH_ETH_MAX_REGISTER_OFFSET] = {
> >
> > [TSU_ADRH0] = 0x0100,
> > };
> > +__diag_pop();
> >
>
> I don't have any strong feeling against disabling compiler warnings,
> but maybe the right thing to do here is to initialize the gaps to the
> invalid value instead of pre-initializing the whole thing first and
> then setting up the valid values on the 2nd pass.
>
> I don't think there are too many gaps to fill, it is doable, so maybe
> add this as a comment to this driver maintainer so they could pickup
> the work from here.
added linux-renesas-soc list. @list, any comments on Saeed's comment
above?
Thanks,
Jesse
WARNING: multiple messages have this Message-ID (diff)
From: Jesse Brandeburg <jesse.brandeburg@intel.com>
To: Saeed Mahameed <saeed@kernel.org>
Cc: netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org,
linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH net-next v2 06/10] drivers/net/ethernet: handle one warning explicitly
Date: Tue, 15 Sep 2020 09:41:35 -0700 [thread overview]
Message-ID: <20200915094135.00005d21@intel.com> (raw)
In-Reply-To: <e15b85af416c7257aaa601901b18c7c9bc9586e0.camel@kernel.org>
Saeed Mahameed wrote:
> On Mon, 2020-09-14 at 18:44 -0700, Jesse Brandeburg wrote:
> > While fixing the W=1 builds, this warning came up because the
> > developers used a very tricky way to get structures initialized
> > to a non-zero value, but this causes GCC to warn about an
> > override. In this case the override was intentional, so just
> > disable the warning for this code with a macro that results
> > in disabling the warning for compiles on GCC versions after 8.
> >
> > NOTE: the __diag_ignore macro currently only accepts a second
> > argument of 8 (version 80000)
> >
> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > ---
> > drivers/net/ethernet/renesas/sh_eth.c | 10 ++++++++++
> > 1 file changed, 10 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/renesas/sh_eth.c
> > b/drivers/net/ethernet/renesas/sh_eth.c
> > index 586642c33d2b..c63304632935 100644
> > --- a/drivers/net/ethernet/renesas/sh_eth.c
> > +++ b/drivers/net/ethernet/renesas/sh_eth.c
> > @@ -45,6 +45,15 @@
> > #define SH_ETH_OFFSET_DEFAULTS \
> > [0 ... SH_ETH_MAX_REGISTER_OFFSET - 1] = SH_ETH_OFFSET_INVALID
> >
> > +/* use some intentionally tricky logic here to initialize the whole
> > struct to
> > + * 0xffff, but then override certain fields, requiring us to
> > indicate that we
> > + * "know" that there are overrides in this structure, and we'll need
> > to disable
> > + * that warning from W=1 builds. GCC has supported this option since
> > 4.2.X, but
> > + * the macros available to do this only define GCC 8.
> > + */
> > +__diag_push();
> > +__diag_ignore(GCC, 8, "-Woverride-init",
> > + "logic to initialize all and then override some is OK");
> > static const u16 sh_eth_offset_gigabit[SH_ETH_MAX_REGISTER_OFFSET] =
> > {
> > SH_ETH_OFFSET_DEFAULTS,
> >
> > @@ -332,6 +341,7 @@ static const u16
> > sh_eth_offset_fast_sh3_sh2[SH_ETH_MAX_REGISTER_OFFSET] = {
> >
> > [TSU_ADRH0] = 0x0100,
> > };
> > +__diag_pop();
> >
>
> I don't have any strong feeling against disabling compiler warnings,
> but maybe the right thing to do here is to initialize the gaps to the
> invalid value instead of pre-initializing the whole thing first and
> then setting up the valid values on the 2nd pass.
>
> I don't think there are too many gaps to fill, it is doable, so maybe
> add this as a comment to this driver maintainer so they could pickup
> the work from here.
added linux-renesas-soc list. @list, any comments on Saeed's comment
above?
Thanks,
Jesse
next prev parent reply other threads:[~2020-09-15 16:41 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-15 1:44 [Intel-wired-lan] [PATCH net-next v2 00/10] make drivers/net/ethernet W=1 clean Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 01/10] i40e: prepare flash string in a simpler way Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 02/10] intel-ethernet: clean up W=1 warnings in kdoc Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 03/10] intel: handle unused assignments Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 04/10] drivers/net/ethernet: clean up " Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 9:02 ` [Intel-wired-lan] " Edward Cree
2020-09-15 9:02 ` Edward Cree
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 05/10] drivers/net/ethernet: rid ethernet of no-prototype warnings Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 06/10] drivers/net/ethernet: handle one warning explicitly Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 3:25 ` [Intel-wired-lan] " Saeed Mahameed
2020-09-15 3:25 ` Saeed Mahameed
2020-09-15 16:41 ` Jesse Brandeburg [this message]
2020-09-15 16:41 ` Jesse Brandeburg
2020-09-17 20:06 ` [Intel-wired-lan] " Rustad, Mark D
2020-09-17 20:06 ` Rustad, Mark D
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 07/10] drivers/net/ethernet: add some basic kdoc tags Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 08/10] drivers/net/ethernet: remove incorrectly formatted doc Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 09/10] sfc: fix kdoc warning Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 9:05 ` [Intel-wired-lan] " Edward Cree
2020-09-15 9:05 ` Edward Cree
2020-09-15 1:44 ` [Intel-wired-lan] [PATCH net-next v2 10/10] drivers/net/ethernet: clean up mis-targeted comments Jesse Brandeburg
2020-09-15 1:44 ` Jesse Brandeburg
2020-09-15 4:24 ` [Intel-wired-lan] [PATCH net-next v2 00/10] make drivers/net/ethernet W=1 clean Saeed Mahameed
2020-09-15 4:24 ` Saeed Mahameed
2020-09-15 14:03 ` [Intel-wired-lan] " Andrew Lunn
2020-09-15 14:03 ` Andrew Lunn
2020-09-15 20:03 ` [Intel-wired-lan] " Saeed Mahameed
2020-09-15 20:03 ` Saeed Mahameed
2020-09-15 20:43 ` [Intel-wired-lan] " Andrew Lunn
2020-09-15 20:43 ` Andrew Lunn
2020-09-15 22:37 ` [Intel-wired-lan] " David Miller
2020-09-15 22:37 ` David Miller
2020-09-15 15:58 ` [Intel-wired-lan] " Jakub Kicinski
2020-09-15 15:58 ` Jakub Kicinski
2020-09-15 17:11 ` [Intel-wired-lan] " Jesse Brandeburg
2020-09-15 17:11 ` Jesse Brandeburg
2020-09-15 20:31 ` [Intel-wired-lan] " David Miller
2020-09-15 20:31 ` David Miller
2020-09-15 21:00 ` [Intel-wired-lan] " Jesse Brandeburg
2020-09-15 21:00 ` Jesse Brandeburg
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=20200915094135.00005d21@intel.com \
--to=jesse.brandeburg@intel.com \
--cc=intel-wired-lan@osuosl.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.