All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: David Laight <David.Laight@ACULAB.COM>
Cc: 'kernel test robot' <lkp@intel.com>,
	"'linux-kernel@vger.kernel.org'" <linux-kernel@vger.kernel.org>,
	'Andy Shevchenko' <andriy.shevchenko@linux.intel.com>,
	'Andrew Morton' <akpm@linux-foundation.org>,
	"'Matthew Wilcox (Oracle)'" <willy@infradead.org>,
	'Christoph Hellwig' <hch@infradead.org>,
	"'Jason A.\ Donenfeld'" <Jason@zx2c4.com>,
	"llvm@lists.linux.dev" <llvm@lists.linux.dev>,
	"oe-kbuild-all@lists.linux.dev" <oe-kbuild-all@lists.linux.dev>,
	"Linux\ Memory Management List" <linux-mm@kvack.org>,
	Rob Herring <robh@kernel.org>
Subject: Re: [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness.
Date: Wed, 26 Jul 2023 10:50:45 +0100	[thread overview]
Message-ID: <86ila7t30q.wl-maz@kernel.org> (raw)
In-Reply-To: <6bed42e871e74e898b400a404ec6d142@AcuMS.aculab.com>

On Wed, 26 Jul 2023 10:19:48 +0100,
David Laight <David.Laight@ACULAB.COM> wrote:
> 
> > From: kernel test robot <lkp@intel.com>
> > Sent: 25 July 2023 19:33
> ...
> > 
> > All errors (new ones prefixed by >>):
> > 
> > >> drivers/irqchip/irq-mips-cpu.c:288:1: error: call to undeclared function '__typecheck'; ISO C99 and
> > later do not support implicit function declarations [-Wimplicit-function-declaration]
> >      288 | IRQCHIP_DECLARE(cpu_intc, "mti,cpu-interrupt-controller", mips_cpu_irq_of_init);
> >          | ^
> >    include/linux/irqchip.h:37:38: note: expanded from macro 'IRQCHIP_DECLARE'
> >       37 |         OF_DECLARE_2(irqchip, name, compat, typecheck_irq_init_cb(fn))
> >          |                                             ^
> >    include/linux/irqchip.h:24:3: note: expanded from macro 'typecheck_irq_init_cb'
> >       24 |         (__typecheck(typecheck_irq_init_cb, &fn) ? fn : fn)
> >          |          ^
> > >> drivers/irqchip/irq-mips-cpu.c:288:1: error: initializer element is not a compile-time constant
> >      288 | IRQCHIP_DECLARE(cpu_intc, "mti,cpu-interrupt-controller", mips_cpu_irq_of_init);
> >          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >    include/linux/irqchip.h:37:2: note: expanded from macro 'IRQCHIP_DECLARE'
> >       37 |         OF_DECLARE_2(irqchip, name, compat, typecheck_irq_init_cb(fn))
> >          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >    include/linux/of.h:1493:3: note: expanded from macro 'OF_DECLARE_2'
> >     1493 |                 _OF_DECLARE(table, name, compat, fn, of_init_fn_2)
> >          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >    include/linux/of.h:1481:2: note: expanded from macro '_OF_DECLARE'
> >     1481 |         _OF_DECLARE_STUB(table, name, compat, fn, fn_type)
> >          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >    include/linux/of.h:1470:16: note: expanded from macro '_OF_DECLARE_STUB'
> >     1470 |                      .data = (fn == (fn_type)NULL) ? fn : fn }
> >          |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> It looks like irqchip.h is using __typecheck() which is really
> an internal part of the implementation of min() and max().
> The patched version doesn't use it - hence the build fail.
> I can re-instate it, but this all looks wrong to me.

Please see f1985002839a ("irqchip: Provide stronger type checking for
IRQCHIP_MATCH/IRQCHIP_DECLARE") for the rationale.

Given that this has uncovered a number of bugs, I'm not letting this
go without an equivalent replacement.

> The type of typecheck_irq_init_cb is the same as that of fn_type (although
> they are defined separately).
> Both headers seem to be testing the type - and it must match both.
> So if the test in of.h worked the one in irqchip.h wouldn't have been added.
> So I suspect it doesn't actually do anything - the RHS is NULL, the type
> probably doesn't matter.

They are used in different contexts. See IRQCHIP_MATCH().

	M.

-- 
Without deviation from the norm, progress is not possible.

  reply	other threads:[~2023-07-26  9:50 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-25 10:00 [PATCH next 0/5] minmax: Relax type checks in min() and max() David Laight
2023-07-25 10:38 ` 'Andy Shevchenko'
2023-07-25 11:17   ` David Laight
2023-07-25 11:48 ` [PATCH next resend 1/5] minmax: Add min_unsigned(a, b) and max_unsigned(a, b) David Laight
2023-07-25 12:38   ` Matthew Wilcox
2023-07-25 13:20     ` David Laight
2023-07-25 11:51 ` [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness David Laight
2023-07-25 18:02   ` kernel test robot
2023-07-25 18:33   ` kernel test robot
2023-07-26  9:19     ` David Laight
2023-07-26  9:50       ` Marc Zyngier [this message]
2023-07-26 10:25         ` David Laight
2023-07-25 11:52 ` [PATCH next resend 3/5] minmax: Fix indentation of __cmp_once() and __clamp_once() David Laight
2023-07-25 11:53 ` [PATCH next resend 4/5] minmax: Allow comparisons of 'int' against 'unsigned char/short' David Laight
2023-07-25 11:54 ` [PATCH next resend 5/5] minmax: Relax check to allow comparison between int and small unsigned constants David Laight
2023-07-25 19:36   ` kernel test robot
2023-07-26  9:29     ` David Laight
2023-07-27  5:20   ` kernel test robot
2023-07-28  7:15   ` kernel test robot
2023-07-28  8:08   ` kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2023-07-26  8:05 [PATCH next resend 2/5] minmax: Allow min()/max()/clamp() if the arguments have the same signedness kernel test robot
2023-07-26  8:36 kernel test robot
2023-07-26  8:47 kernel test robot
2023-07-26  9:29 kernel test robot
2023-07-26  9:39 kernel test robot
2023-07-26  9:50 kernel test robot
2023-07-26 12:15 kernel test robot
2023-07-26 19:58 kernel test robot
2023-07-26 21:10 kernel test robot
2023-07-26 23:47 kernel test robot
2023-07-27  3:27 kernel test robot
2023-07-27 12:37 kernel test robot
2023-07-27 21:24 kernel test robot
2023-07-28  9:53 kernel test robot
2023-07-28 10:25 kernel test robot
2023-07-28 23:47 kernel test robot
2023-07-29  1:19 kernel test robot
2023-07-29  2:00 kernel test robot
2023-07-29  2:41 kernel test robot
2023-07-29  3:54 kernel test robot
2023-07-30  1:08 kernel test robot
2023-07-30  1:38 kernel test robot
2023-07-31 20:20 kernel test robot
2023-07-31 20:41 kernel test robot
2023-07-31 21:23 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=86ila7t30q.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=David.Laight@ACULAB.COM \
    --cc=Jason@zx2c4.com \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lkp@intel.com \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=robh@kernel.org \
    --cc=willy@infradead.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.