All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
Cc: kbuild-all@01.org, linus.walleij@linaro.org,
	andy.shevchenko@gmail.com, linux-gpio@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org,
	William Breathitt Gray <vilhelm.gray@gmail.com>
Subject: Re: [PATCH v2 3/8] gpio: pci-idio-16: Implement get_multiple callback
Date: Sun, 18 Mar 2018 03:16:08 +0800	[thread overview]
Message-ID: <201803180345.UikgMo06%fengguang.wu@intel.com> (raw)
In-Reply-To: <b856f88b5f52e1787860f7dbca44673905f79744.1521128287.git.vilhelm.gray@gmail.com>

Hi William,

I love your patch! Perhaps something to improve:

[auto build test WARNING on v4.16-rc4]
[also build test WARNING on next-20180316]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/William-Breathitt-Gray/Implement-get_multiple-for-ACCES-and-PC-104-drivers/20180317-224135
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

   drivers/gpio/gpio-pci-idio-16.c:139:17: sparse: undefined identifier 'word_mask'
   drivers/gpio/gpio-pci-idio-16.c:140:22: sparse: undefined identifier 'word_mask'
>> drivers/gpio/gpio-pci-idio-16.c:120:27: sparse: dereference of noderef expression
   drivers/gpio/gpio-pci-idio-16.c:120:52: sparse: dereference of noderef expression
   drivers/gpio/gpio-pci-idio-16.c:121:27: sparse: dereference of noderef expression
   drivers/gpio/gpio-pci-idio-16.c:121:51: sparse: dereference of noderef expression
>> drivers/gpio/gpio-pci-idio-16.c:139:17: sparse: generating address of non-lvalue (3)
   drivers/gpio/gpio-pci-idio-16.c: In function 'idio_16_gpio_get_multiple':
   drivers/gpio/gpio-pci-idio-16.c:139:3: error: 'word_mask' undeclared (first use in this function); did you mean 'port_mask'?
      word_mask = mask[word_index] & (port_mask << word_offset);
      ^~~~~~~~~
      port_mask
   drivers/gpio/gpio-pci-idio-16.c:139:3: note: each undeclared identifier is reported only once for each function it appears in
   drivers/gpio/gpio-pci-idio-16.c:146:24: warning: passing argument 1 of 'ioread8' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
      port_state = ioread8(ports + i);
                           ^~~~~
   In file included from arch/x86/include/asm/io.h:223:0,
                    from arch/x86/include/asm/realmode.h:15,
                    from arch/x86/include/asm/acpi.h:33,
                    from arch/x86/include/asm/fixmap.h:19,
                    from arch/x86/include/asm/apic.h:10,
                    from arch/x86/include/asm/smp.h:13,
                    from arch/x86/include/asm/mmzone_64.h:11,
                    from arch/x86/include/asm/mmzone.h:5,
                    from include/linux/mmzone.h:912,
                    from include/linux/gfp.h:6,
                    from include/linux/idr.h:16,
                    from include/linux/kernfs.h:14,
                    from include/linux/sysfs.h:16,
                    from include/linux/kobject.h:20,
                    from include/linux/device.h:16,
                    from drivers/gpio/gpio-pci-idio-16.c:16:
   include/asm-generic/iomap.h:29:21: note: expected 'void *' but argument is of type 'const u8 * {aka const unsigned char *}'
    extern unsigned int ioread8(void __iomem *);
                        ^~~~~~~
   drivers/gpio/gpio-pci-idio-16.c:116:16: warning: unused variable 'mask_word' [-Wunused-variable]
     unsigned long mask_word;
                   ^~~~~~~~~

vim +120 drivers/gpio/gpio-pci-idio-16.c

   106	
   107	static int idio_16_gpio_get_multiple(struct gpio_chip *chip,
   108		unsigned long *mask, unsigned long *bits)
   109	{
   110		struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip);
   111		size_t i;
   112		const unsigned int gpio_reg_size = 8;
   113		unsigned int bits_offset;
   114		size_t word_index;
   115		unsigned int word_offset;
   116		unsigned long mask_word;
   117		const unsigned long port_mask = GENMASK(gpio_reg_size, 0);
   118		unsigned long port_state;
   119		const u8 __iomem ports[] = {
 > 120			idio16gpio->reg->out0_7, idio16gpio->reg->out8_15,
   121			idio16gpio->reg->in0_7, idio16gpio->reg->in8_15
   122		};
   123	
   124		/* clear bits array to a clean slate */
   125		bitmap_zero(bits, chip->ngpio);
   126	
   127		/* get bits are evaluated a gpio port register at a time */
   128		for (i = 0; i < ARRAY_SIZE(ports); i++) {
   129			/* gpio offset in bits array */
   130			bits_offset = i * gpio_reg_size;
   131	
   132			/* word index for bits array */
   133			word_index = BIT_WORD(bits_offset);
   134	
   135			/* gpio offset within current word of bits array */
   136			word_offset = bits_offset % BITS_PER_LONG;
   137	
   138			/* mask of get bits for current gpio within current word */
 > 139			word_mask = mask[word_index] & (port_mask << word_offset);
   140			if (!word_mask) {
   141				/* no get bits in this port so skip to next one */
   142				continue;
   143			}
   144	
   145			/* read bits from current gpio port */
   146			port_state = ioread8(ports + i);
   147	
   148			/* store acquired bits at respective bits array offset */
   149			bits[word_index] |= port_state << word_offset;
   150		}
   151	
   152		return 0;
   153	}
   154	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: William Breathitt Gray <vilhelm.gray@gmail.com>
Cc: kbuild-all@01.org, linus.walleij@linaro.org,
	andy.shevchenko@gmail.com, linux-gpio@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-iio@vger.kernel.org,
	William Breathitt Gray <vilhelm.gray@gmail.com>
Subject: Re: [PATCH v2 3/8] gpio: pci-idio-16: Implement get_multiple callback
Date: Sun, 18 Mar 2018 03:16:08 +0800	[thread overview]
Message-ID: <201803180345.UikgMo06%fengguang.wu@intel.com> (raw)
In-Reply-To: <b856f88b5f52e1787860f7dbca44673905f79744.1521128287.git.vilhelm.gray@gmail.com>

Hi William,

I love your patch! Perhaps something to improve:

[auto build test WARNING on v4.16-rc4]
[also build test WARNING on next-20180316]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/William-Breathitt-Gray/Implement-get_multiple-for-ACCES-and-PC-104-drivers/20180317-224135
reproduce:
        # apt-get install sparse
        make ARCH=x86_64 allmodconfig
        make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

   drivers/gpio/gpio-pci-idio-16.c:139:17: sparse: undefined identifier 'word_mask'
   drivers/gpio/gpio-pci-idio-16.c:140:22: sparse: undefined identifier 'word_mask'
>> drivers/gpio/gpio-pci-idio-16.c:120:27: sparse: dereference of noderef expression
   drivers/gpio/gpio-pci-idio-16.c:120:52: sparse: dereference of noderef expression
   drivers/gpio/gpio-pci-idio-16.c:121:27: sparse: dereference of noderef expression
   drivers/gpio/gpio-pci-idio-16.c:121:51: sparse: dereference of noderef expression
>> drivers/gpio/gpio-pci-idio-16.c:139:17: sparse: generating address of non-lvalue (3)
   drivers/gpio/gpio-pci-idio-16.c: In function 'idio_16_gpio_get_multiple':
   drivers/gpio/gpio-pci-idio-16.c:139:3: error: 'word_mask' undeclared (first use in this function); did you mean 'port_mask'?
      word_mask = mask[word_index] & (port_mask << word_offset);
      ^~~~~~~~~
      port_mask
   drivers/gpio/gpio-pci-idio-16.c:139:3: note: each undeclared identifier is reported only once for each function it appears in
   drivers/gpio/gpio-pci-idio-16.c:146:24: warning: passing argument 1 of 'ioread8' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
      port_state = ioread8(ports + i);
                           ^~~~~
   In file included from arch/x86/include/asm/io.h:223:0,
                    from arch/x86/include/asm/realmode.h:15,
                    from arch/x86/include/asm/acpi.h:33,
                    from arch/x86/include/asm/fixmap.h:19,
                    from arch/x86/include/asm/apic.h:10,
                    from arch/x86/include/asm/smp.h:13,
                    from arch/x86/include/asm/mmzone_64.h:11,
                    from arch/x86/include/asm/mmzone.h:5,
                    from include/linux/mmzone.h:912,
                    from include/linux/gfp.h:6,
                    from include/linux/idr.h:16,
                    from include/linux/kernfs.h:14,
                    from include/linux/sysfs.h:16,
                    from include/linux/kobject.h:20,
                    from include/linux/device.h:16,
                    from drivers/gpio/gpio-pci-idio-16.c:16:
   include/asm-generic/iomap.h:29:21: note: expected 'void *' but argument is of type 'const u8 * {aka const unsigned char *}'
    extern unsigned int ioread8(void __iomem *);
                        ^~~~~~~
   drivers/gpio/gpio-pci-idio-16.c:116:16: warning: unused variable 'mask_word' [-Wunused-variable]
     unsigned long mask_word;
                   ^~~~~~~~~

vim +120 drivers/gpio/gpio-pci-idio-16.c

   106	
   107	static int idio_16_gpio_get_multiple(struct gpio_chip *chip,
   108		unsigned long *mask, unsigned long *bits)
   109	{
   110		struct idio_16_gpio *const idio16gpio = gpiochip_get_data(chip);
   111		size_t i;
   112		const unsigned int gpio_reg_size = 8;
   113		unsigned int bits_offset;
   114		size_t word_index;
   115		unsigned int word_offset;
   116		unsigned long mask_word;
   117		const unsigned long port_mask = GENMASK(gpio_reg_size, 0);
   118		unsigned long port_state;
   119		const u8 __iomem ports[] = {
 > 120			idio16gpio->reg->out0_7, idio16gpio->reg->out8_15,
   121			idio16gpio->reg->in0_7, idio16gpio->reg->in8_15
   122		};
   123	
   124		/* clear bits array to a clean slate */
   125		bitmap_zero(bits, chip->ngpio);
   126	
   127		/* get bits are evaluated a gpio port register at a time */
   128		for (i = 0; i < ARRAY_SIZE(ports); i++) {
   129			/* gpio offset in bits array */
   130			bits_offset = i * gpio_reg_size;
   131	
   132			/* word index for bits array */
   133			word_index = BIT_WORD(bits_offset);
   134	
   135			/* gpio offset within current word of bits array */
   136			word_offset = bits_offset % BITS_PER_LONG;
   137	
   138			/* mask of get bits for current gpio within current word */
 > 139			word_mask = mask[word_index] & (port_mask << word_offset);
   140			if (!word_mask) {
   141				/* no get bits in this port so skip to next one */
   142				continue;
   143			}
   144	
   145			/* read bits from current gpio port */
   146			port_state = ioread8(ports + i);
   147	
   148			/* store acquired bits at respective bits array offset */
   149			bits[word_index] |= port_state << word_offset;
   150		}
   151	
   152		return 0;
   153	}
   154	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

  reply	other threads:[~2018-03-17 19:16 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-15 15:46 [PATCH v2 0/8] Implement get_multiple for ACCES and PC/104 drivers William Breathitt Gray
2018-03-15 15:46 ` [PATCH v2 1/8] iio: stx104: Implement get_multiple callback William Breathitt Gray
2018-03-15 15:46 ` [PATCH v2 2/8] gpio: 104-idio-16: " William Breathitt Gray
2018-03-15 15:47 ` [PATCH v2 3/8] gpio: pci-idio-16: " William Breathitt Gray
2018-03-17 19:16   ` kbuild test robot [this message]
2018-03-17 19:16     ` kbuild test robot
2018-03-15 15:52 ` [PATCH v2 4/8] gpio: pcie-idio-24: Implement get_multiple/set_multiple callbacks William Breathitt Gray
2018-03-17 21:01   ` kbuild test robot
2018-03-17 21:01     ` kbuild test robot
2018-03-15 15:53 ` [PATCH v2 5/8] gpio: 104-dio-48e: Implement get_multiple callback William Breathitt Gray
2018-03-17 15:47   ` kbuild test robot
2018-03-17 15:47     ` kbuild test robot
2018-03-15 15:53 ` [PATCH v2 6/8] gpio: 104-idi-48: " William Breathitt Gray
2018-03-17 15:13   ` kbuild test robot
2018-03-17 15:13     ` kbuild test robot
2018-03-15 15:53 ` [PATCH v2 7/8] gpio: gpio-mm: " William Breathitt Gray
2018-03-15 15:53 ` [PATCH v2 8/8] gpio: ws16c48: " William Breathitt Gray

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=201803180345.UikgMo06%fengguang.wu@intel.com \
    --to=lkp@intel.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=kbuild-all@01.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vilhelm.gray@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.