All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Levy, Amir (Jer)" <amir.jer.levy@intel.com>
To: Arnd Bergmann <arnd@arndb.de>, Tomas Winkler <tomasw@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	"mm-commits@vger.kernel.org" <mm-commits@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>,
	"jpoimboe@redhat.com" <jpoimboe@redhat.com>,
	Martin Jambor <mjambor@suse.cz>,
	"Martin K. Petersen" <martin.petersen@oracle.com>,
	James Bottomley <James.Bottomley@hansenpartnership.com>,
	Denys Vlasenko <dvlasenk@redhat.com>, Thomas Graf <tgraf@suug.ch>,
	Peter Zijlstra <peterz@infradead.org>,
	David Rientjes <rientjes@google.com>,
	Ingo Molnar <mingo@kernel.org>,
	Himanshu Madhani <himanshu.madhani@qlogic.com>,
	Dept-Eng QLA2xxx Upstream <qla2xxx-upstream@qlogic.com>,
	Jan Hubicka <hubicka@ucw.cz>
Subject: RE: [PATCH v2] byteswap: try to avoid __builtin_constant_p gcc bug
Date: Wed, 22 Jun 2016 10:25:57 +0000	[thread overview]
Message-ID: <E607265CB020454880711A6F96C05A0388016E76@hasmsx107.ger.corp.intel.com> (raw)
In-Reply-To: <3864016.Cn7XXDBM38@wuerfel>

On 2016-06-22 Arnd Bergmann wrote:
> On Wednesday, June 22, 2016 11:24:50 AM CEST Tomas Winkler wrote:
> > On Tue, Jun 21, 2016 at 12:02 PM, Tomas Winkler <tomasw@gmail.com>
> wrote:
> > > On Tue, May 3, 2016 at 9:36 AM, Arnd Bergmann <arnd@arndb.de>
> wrote:
> > >> On Monday 02 May 2016 16:32:25 Andrew Morton wrote:
> 
> > >>  #ifdef __HAVE_BUILTIN_BSWAP32__
> > >> -#define __swab32(x) __builtin_bswap32((__u32)(x))
> > >> +#define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
> > >>  #else
> > >>  #define __swab32(x)                            \
> > >>         (__builtin_constant_p((__u32)(x)) ?     \
> > >
> > >>
> > >
> > > I wonder if this doesn't break switch statement that requires a
> > > constant expression, there few cases like this over the kernel.
> > >
> > > switch(val) {
> > > case cpu_to_le32(IXGBE_RXDADV_STAT_FCSTAT_FCPRSP):
> > >
> > > http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/ixgb
> > > e/ixgbe_fcoe.c#L458
> > >
> >
> > I'm asking because sparse and checkpatch doesn't agree on that ping
> > sparse issues
> > 'error: bad constant expression'
> > When changing to __constant_cpu_to_le32 sparse is happy but
> > checkpatch.ps is complaining
> > __constant_cpu_to_le32 should be cpu_to_le32
> >
> 
> That is an interesting problem, as both seem to be reasonable:
> sparse probably doesn't understand __builtin_constant_p() enough, while
> avoiding __constant_cpu_to_le32() is a good recommendation in general.
> 
> How many instances of this do you see in the kernel? If ixgbe is the only one,
> I'd just move the byteswap up into the switch statement:
> 
> 	switch (le32_to_cpu(val)) {
> 	case IXGBE_RXDADV_STAT_FCSTAT_FCPRSP:
> 
> which may cost one or two cycles for the non-constant byteswap, but is also
> easier to read than the current code.
> 
> 	Arnd

There are more than 20 files that have the statement: case cpu_to_...
Sparse complains about: case __builtin_bswap, not about __builtin_constant_p.

	Amir

  reply	other threads:[~2016-06-22 10:38 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-02 21:48 [PATCH v2] byteswap: try to avoid __builtin_constant_p gcc bug Arnd Bergmann
2016-05-02 23:02 ` Andrew Morton
2016-05-02 23:10   ` Arnd Bergmann
2016-05-02 23:32     ` Andrew Morton
2016-05-02 23:32     ` Andrew Morton
2016-05-03  6:36       ` Arnd Bergmann
2016-06-21  9:02         ` Tomas Winkler
2016-06-21  9:02           ` Tomas Winkler
2016-06-22  8:24           ` Tomas Winkler
2016-06-22  8:24             ` Tomas Winkler
2016-06-22  9:59             ` Arnd Bergmann
2016-06-22 10:25               ` Levy, Amir (Jer) [this message]
2016-06-22 11:44                 ` Tomas Winkler
2016-06-22 12:25                   ` Arnd Bergmann
2016-06-23  6:27                     ` Tomas Winkler
2016-06-23  9:29                       ` Arnd Bergmann

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=E607265CB020454880711A6F96C05A0388016E76@hasmsx107.ger.corp.intel.com \
    --to=amir.jer.levy@intel.com \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=dvlasenk@redhat.com \
    --cc=himanshu.madhani@qlogic.com \
    --cc=hubicka@ucw.cz \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=mingo@kernel.org \
    --cc=mjambor@suse.cz \
    --cc=mm-commits@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=qla2xxx-upstream@qlogic.com \
    --cc=rientjes@google.com \
    --cc=tgraf@suug.ch \
    --cc=tomasw@gmail.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.