From: kernel test robot <lkp@intel.com>
To: Marek Vasut <marex@denx.de>, linux-gpio@vger.kernel.org
Cc: kbuild-all@lists.01.org, Marek Vasut <marex@denx.de>,
Bartosz Golaszewski <bgolaszewski@baylibre.com>,
Linus Walleij <linus.walleij@linaro.org>,
Loic Poulain <loic.poulain@linaro.org>,
Marc Zyngier <maz@kernel.org>, NXP Linux Team <linux-imx@nxp.com>,
Peng Fan <peng.fan@nxp.com>, Shawn Guo <shawnguo@kernel.org>
Subject: Re: [PATCH v4 1/2] gpio: mxc: Protect GPIO irqchip RMW with bgpio spinlock
Date: Fri, 29 Jul 2022 06:21:14 +0800 [thread overview]
Message-ID: <202207290626.5eWctWgO-lkp@intel.com> (raw)
In-Reply-To: <20220724224943.294057-1-marex@denx.de>
Hi Marek,
I love your patch! Yet something to improve:
[auto build test ERROR on brgl/gpio/for-next]
[also build test ERROR on linus/master v5.19-rc8 next-20220728]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Marek-Vasut/gpio-mxc-Protect-GPIO-irqchip-RMW-with-bgpio-spinlock/20220725-065121
base: https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux.git gpio/for-next
config: mips-randconfig-r006-20220728 (https://download.01.org/0day-ci/archive/20220729/202207290626.5eWctWgO-lkp@intel.com/config)
compiler: mipsel-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/670bfed8938f593e99c7784ff2efe48bc5b9e21d
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Marek-Vasut/gpio-mxc-Protect-GPIO-irqchip-RMW-with-bgpio-spinlock/20220725-065121
git checkout 670bfed8938f593e99c7784ff2efe48bc5b9e21d
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash drivers/gpio/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from include/linux/rwsem.h:15,
from include/linux/notifier.h:15,
from include/linux/clk.h:14,
from drivers/gpio/gpio-mxc.c:10:
drivers/gpio/gpio-mxc.c: In function 'gpio_set_irq_type':
>> drivers/gpio/gpio-mxc.c:190:27: error: passing argument 1 of 'spinlock_check' from incompatible pointer type [-Werror=incompatible-pointer-types]
190 | spin_lock_irqsave(&port->gc.bgpio_lock, flags);
| ^~~~~~~~~~~~~~~~~~~~
| |
| raw_spinlock_t * {aka struct raw_spinlock *}
include/linux/spinlock.h:242:48: note: in definition of macro 'raw_spin_lock_irqsave'
242 | flags = _raw_spin_lock_irqsave(lock); \
| ^~~~
drivers/gpio/gpio-mxc.c:190:9: note: in expansion of macro 'spin_lock_irqsave'
190 | spin_lock_irqsave(&port->gc.bgpio_lock, flags);
| ^~~~~~~~~~~~~~~~~
include/linux/spinlock.h:322:67: note: expected 'spinlock_t *' {aka 'struct spinlock *'} but argument is of type 'raw_spinlock_t *' {aka 'struct raw_spinlock *'}
322 | static __always_inline raw_spinlock_t *spinlock_check(spinlock_t *lock)
| ~~~~~~~~~~~~^~~~
>> drivers/gpio/gpio-mxc.c:211:32: error: passing argument 1 of 'spin_unlock_irqrestore' from incompatible pointer type [-Werror=incompatible-pointer-types]
211 | spin_unlock_irqrestore(&port->gc.bgpio_lock, flags);
| ^~~~~~~~~~~~~~~~~~~~
| |
| raw_spinlock_t * {aka struct raw_spinlock *}
include/linux/spinlock.h:402:64: note: expected 'spinlock_t *' {aka 'struct spinlock *'} but argument is of type 'raw_spinlock_t *' {aka 'struct raw_spinlock *'}
402 | static __always_inline void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags)
| ~~~~~~~~~~~~^~~~
drivers/gpio/gpio-mxc.c: In function 'mxc_flip_edge':
drivers/gpio/gpio-mxc.c:223:27: error: passing argument 1 of 'spinlock_check' from incompatible pointer type [-Werror=incompatible-pointer-types]
223 | spin_lock_irqsave(&port->gc.bgpio_lock, flags);
| ^~~~~~~~~~~~~~~~~~~~
| |
| raw_spinlock_t * {aka struct raw_spinlock *}
include/linux/spinlock.h:242:48: note: in definition of macro 'raw_spin_lock_irqsave'
242 | flags = _raw_spin_lock_irqsave(lock); \
| ^~~~
drivers/gpio/gpio-mxc.c:223:9: note: in expansion of macro 'spin_lock_irqsave'
223 | spin_lock_irqsave(&port->gc.bgpio_lock, flags);
| ^~~~~~~~~~~~~~~~~
include/linux/spinlock.h:322:67: note: expected 'spinlock_t *' {aka 'struct spinlock *'} but argument is of type 'raw_spinlock_t *' {aka 'struct raw_spinlock *'}
322 | static __always_inline raw_spinlock_t *spinlock_check(spinlock_t *lock)
| ~~~~~~~~~~~~^~~~
drivers/gpio/gpio-mxc.c:243:32: error: passing argument 1 of 'spin_unlock_irqrestore' from incompatible pointer type [-Werror=incompatible-pointer-types]
243 | spin_unlock_irqrestore(&port->gc.bgpio_lock, flags);
| ^~~~~~~~~~~~~~~~~~~~
| |
| raw_spinlock_t * {aka struct raw_spinlock *}
include/linux/spinlock.h:402:64: note: expected 'spinlock_t *' {aka 'struct spinlock *'} but argument is of type 'raw_spinlock_t *' {aka 'struct raw_spinlock *'}
402 | static __always_inline void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags)
| ~~~~~~~~~~~~^~~~
cc1: some warnings being treated as errors
vim +/spinlock_check +190 drivers/gpio/gpio-mxc.c
146
147 static int gpio_set_irq_type(struct irq_data *d, u32 type)
148 {
149 struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
150 struct mxc_gpio_port *port = gc->private;
151 unsigned long flags;
152 u32 bit, val;
153 u32 gpio_idx = d->hwirq;
154 int edge;
155 void __iomem *reg = port->base;
156
157 port->both_edges &= ~(1 << gpio_idx);
158 switch (type) {
159 case IRQ_TYPE_EDGE_RISING:
160 edge = GPIO_INT_RISE_EDGE;
161 break;
162 case IRQ_TYPE_EDGE_FALLING:
163 edge = GPIO_INT_FALL_EDGE;
164 break;
165 case IRQ_TYPE_EDGE_BOTH:
166 if (GPIO_EDGE_SEL >= 0) {
167 edge = GPIO_INT_BOTH_EDGES;
168 } else {
169 val = port->gc.get(&port->gc, gpio_idx);
170 if (val) {
171 edge = GPIO_INT_LOW_LEV;
172 pr_debug("mxc: set GPIO %d to low trigger\n", gpio_idx);
173 } else {
174 edge = GPIO_INT_HIGH_LEV;
175 pr_debug("mxc: set GPIO %d to high trigger\n", gpio_idx);
176 }
177 port->both_edges |= 1 << gpio_idx;
178 }
179 break;
180 case IRQ_TYPE_LEVEL_LOW:
181 edge = GPIO_INT_LOW_LEV;
182 break;
183 case IRQ_TYPE_LEVEL_HIGH:
184 edge = GPIO_INT_HIGH_LEV;
185 break;
186 default:
187 return -EINVAL;
188 }
189
> 190 spin_lock_irqsave(&port->gc.bgpio_lock, flags);
191
192 if (GPIO_EDGE_SEL >= 0) {
193 val = readl(port->base + GPIO_EDGE_SEL);
194 if (edge == GPIO_INT_BOTH_EDGES)
195 writel(val | (1 << gpio_idx),
196 port->base + GPIO_EDGE_SEL);
197 else
198 writel(val & ~(1 << gpio_idx),
199 port->base + GPIO_EDGE_SEL);
200 }
201
202 if (edge != GPIO_INT_BOTH_EDGES) {
203 reg += GPIO_ICR1 + ((gpio_idx & 0x10) >> 2); /* lower or upper register */
204 bit = gpio_idx & 0xf;
205 val = readl(reg) & ~(0x3 << (bit << 1));
206 writel(val | (edge << (bit << 1)), reg);
207 }
208
209 writel(1 << gpio_idx, port->base + GPIO_ISR);
210
> 211 spin_unlock_irqrestore(&port->gc.bgpio_lock, flags);
212
213 return 0;
214 }
215
--
0-DAY CI Kernel Test Service
https://01.org/lkp
prev parent reply other threads:[~2022-07-28 22:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-24 22:49 [PATCH v4 1/2] gpio: mxc: Protect GPIO irqchip RMW with bgpio spinlock Marek Vasut
2022-07-24 22:49 ` [PATCH v4 2/2] gpio: mxc: Always set GPIOs used as interrupt source to INPUT mode Marek Vasut
2022-07-26 8:15 ` Linus Walleij
2022-07-26 14:42 ` Marek Vasut
2022-07-26 15:13 ` Hans Verkuil
2022-07-29 3:01 ` Marek Vasut
2022-07-29 6:56 ` Hans Verkuil
2022-07-26 20:59 ` Linus Walleij
2022-07-25 20:37 ` [PATCH v4 1/2] gpio: mxc: Protect GPIO irqchip RMW with bgpio spinlock Andy Shevchenko
2022-07-25 22:30 ` Linus Walleij
2022-07-25 22:33 ` Linus Walleij
2022-07-25 23:53 ` Marek Vasut
2022-07-28 22:21 ` kernel test robot [this message]
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=202207290626.5eWctWgO-lkp@intel.com \
--to=lkp@intel.com \
--cc=bgolaszewski@baylibre.com \
--cc=kbuild-all@lists.01.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-imx@nxp.com \
--cc=loic.poulain@linaro.org \
--cc=marex@denx.de \
--cc=maz@kernel.org \
--cc=peng.fan@nxp.com \
--cc=shawnguo@kernel.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.