Re: [rcu:rcu/next 25/36] include/linux/irqflags.h:79:3: error: implicit declaration of function 'arch_irqs_disabled_flags'

From: Paul E. McKenney
Date: Tue Jun 14 2016 - 18:54:28 EST


On Mon, Jun 06, 2016 at 02:04:03AM +0800, kbuild test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/next
> head: 13ee0de9cd2444b57ce30c4f1607b49b90aa0c38
> commit: f251ac814fc5787765009e60d54a2bd4277350c8 [25/36] rcu: Make call_rcu_tasks() tolerate first call with irqs disabled
> config: um-allmodconfig (attached as .config)
> compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
> reproduce:
> git checkout f251ac814fc5787765009e60d54a2bd4277350c8
> # save the attached .config to linux build tree
> make ARCH=um

My kneejerk reaction would be to make CONFIG_TASKS_RCU depend on
!UML or something similar.

Another approach would be create a arch_irqs_disabled_flags() for UML.

Any preferences?

Thanx, Paul

> All errors (new ones prefixed by >>):
>
> In file included from include/linux/spinlock.h:53:0,
> from kernel/rcu/update.c:36:
> kernel/rcu/update.c: In function 'call_rcu_tasks':
> >> include/linux/irqflags.h:79:3: error: implicit declaration of function 'arch_irqs_disabled_flags' [-Werror=implicit-function-declaration]
> arch_irqs_disabled_flags(flags); \
> ^
> include/linux/irqflags.h:149:36: note: in expansion of macro 'raw_irqs_disabled_flags'
> #define irqs_disabled_flags(flags) raw_irqs_disabled_flags(flags)
> ^~~~~~~~~~~~~~~~~~~~~~~
> kernel/rcu/update.c:572:21: note: in expansion of macro 'irqs_disabled_flags'
> (!havetask && !irqs_disabled_flags(flags))) {
> ^~~~~~~~~~~~~~~~~~~
> cc1: some warnings being treated as errors
>
> vim +/arch_irqs_disabled_flags +79 include/linux/irqflags.h
>
> df9ee292 David Howells 2010-10-07 73 typecheck(unsigned long, flags); \
> df9ee292 David Howells 2010-10-07 74 flags = arch_local_save_flags(); \
> df9ee292 David Howells 2010-10-07 75 } while (0)
> df9ee292 David Howells 2010-10-07 76 #define raw_irqs_disabled_flags(flags) \
> df9ee292 David Howells 2010-10-07 77 ({ \
> df9ee292 David Howells 2010-10-07 78 typecheck(unsigned long, flags); \
> df9ee292 David Howells 2010-10-07 @79 arch_irqs_disabled_flags(flags); \
> df9ee292 David Howells 2010-10-07 80 })
> df9ee292 David Howells 2010-10-07 81 #define raw_irqs_disabled() (arch_irqs_disabled())
> df9ee292 David Howells 2010-10-07 82 #define raw_safe_halt() arch_safe_halt()
>
> :::::: The code at line 79 was first introduced by commit
> :::::: df9ee29270c11dba7d0fe0b83ce47a4d8e8d2101 Fix IRQ flag handling naming
>
> :::::: TO: David Howells <dhowells@xxxxxxxxxx>
> :::::: CC: David Howells <dhowells@xxxxxxxxxx>
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation