All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <error27@gmail.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: oe-kbuild@lists.linux.dev, Qingtao Cao <qingtao.cao.au@gmail.com>,
	lkp@intel.com, oe-kbuild-all@lists.linux.dev,
	linux-kernel@vger.kernel.org, Bartosz Golaszewski <brgl@bgdev.pl>
Subject: Re: drivers/gpio/gpio-exar.c:52 exar_offset_to_sel_addr() warn: replace divide condition 'pin / 8' with 'pin >= 8'
Date: Sat, 24 Dec 2022 22:30:39 +0300	[thread overview]
Message-ID: <Y6dTX2wx/SXlswGC@kadam> (raw)
In-Reply-To: <3D147284-AF8C-4414-9BE1-C83032B6C15D@gmail.com>

On Sat, Dec 24, 2022 at 05:19:27PM +0100, Andy Shevchenko wrote:
> 
> 
> Lähetetty iPhonesta
> 
> > Dan Carpenter <error27@gmail.com> kirjoitti 23.12.2022 kello 11.54:
> > 
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head:   f9ff5644bcc04221bae56f922122f2b7f5d24d62
> > commit: 5134272f9f3f71d4e1f3aa15cb09321af49b3646 gpio: exar: access MPIO registers on cascaded chips
> > config: ia64-randconfig-m031-20221218
> > compiler: ia64-linux-gcc (GCC) 12.1.0
> > 
> > If you fix the issue, kindly add following tag where applicable
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Reported-by: Dan Carpenter <error27@gmail.com>
> > 
> > smatch warnings:
> > drivers/gpio/gpio-exar.c:52 exar_offset_to_sel_addr() warn: replace divide condition 'pin / 8' with 'pin >= 8'
> > drivers/gpio/gpio-exar.c:62 exar_offset_to_lvl_addr() warn: replace divide condition 'pin / 8' with 'pin >= 8'
> > 
> 
> 
> 
> I don’t think this is a good advice. If we want to limit that, we need
> to check also upper limit. But. The GPIO framework does that. So,
> changing / to >= is bogus.


How is checking pin / 8 not mathematically equivalent to pin >= 8?

I don't understand this code at all.  The divide is inscrutable  Is it
storing something in in the lower 3 bits and something in bit 4?  In
that case it might be nicer to just check (pin & BIT(4)).

regards,
dan carpenter

> 
> 
> > vim +52 drivers/gpio/gpio-exar.c
> > 
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  47  static unsigned int
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  48  exar_offset_to_sel_addr(struct exar_gpio_chip *exar_gpio, unsigned int offset)
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  49  {
> > 5134272f9f3f71 Qingtao Cao         2022-09-02  50      unsigned int pin = exar_gpio->first_pin + (offset % 16);
> > 5134272f9f3f71 Qingtao Cao         2022-09-02  51      unsigned int cascaded = offset / 16;
> > 5134272f9f3f71 Qingtao Cao         2022-09-02 @52      unsigned int addr = pin / 8 ? EXAR_OFFSET_MPIOSEL_HI : EXAR_OFFSET_MPIOSEL_LO;
> > 
> > Why not change this to pin > 8 instead.  Comparisons are faster than
> > divide ops.  Way more readable too.
> > 
> > 5134272f9f3f71 Qingtao Cao         2022-09-02  53  
> > 5134272f9f3f71 Qingtao Cao         2022-09-02  54      return addr + (cascaded ? exar_gpio->cascaded_offset : 0);
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  55  }
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  56  
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  57  static unsigned int
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  58  exar_offset_to_lvl_addr(struct exar_gpio_chip *exar_gpio, unsigned int offset)
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  59  {
> > 5134272f9f3f71 Qingtao Cao         2022-09-02  60      unsigned int pin = exar_gpio->first_pin + (offset % 16);
> > 5134272f9f3f71 Qingtao Cao         2022-09-02  61      unsigned int cascaded = offset / 16;
> > 5134272f9f3f71 Qingtao Cao         2022-09-02 @62      unsigned int addr = pin / 8 ? EXAR_OFFSET_MPIOLVL_HI : EXAR_OFFSET_MPIOLVL_LO;
> > 5134272f9f3f71 Qingtao Cao         2022-09-02  63  
> > 5134272f9f3f71 Qingtao Cao         2022-09-02  64      return addr + (cascaded ? exar_gpio->cascaded_offset : 0);
> > 696868d0a79c21 Bartosz Golaszewski 2020-09-30  65  }
> > 
> > -- 
> > 0-DAY CI Kernel Test Service
> > https://01.org/lkp
> > 

  reply	other threads:[~2022-12-24 19:30 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-18  3:33 drivers/gpio/gpio-exar.c:52 exar_offset_to_sel_addr() warn: replace divide condition 'pin / 8' with 'pin >= 8' kernel test robot
2022-12-23 10:54 ` Dan Carpenter
2022-12-24 16:19 ` Andy Shevchenko
2022-12-24 19:30   ` Dan Carpenter [this message]
2022-12-24 19:36     ` Dan Carpenter
2022-12-25 11:45     ` Andy Shevchenko
2022-12-25 11:50       ` Andy Shevchenko
2022-12-27 17:46         ` Dan Carpenter
2022-12-27 18:30           ` Andy Shevchenko
  -- strict thread matches above, loose matches on Subject: below --
2023-04-14 14:35 kernel test robot

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=Y6dTX2wx/SXlswGC@kadam \
    --to=error27@gmail.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=brgl@bgdev.pl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=oe-kbuild@lists.linux.dev \
    --cc=qingtao.cao.au@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.