[rcu:rcu/dev 87/90] include/linux/irqflags.h:59:34: error: implicit declaration of function 'arch_local_irq_disable'

From: kbuild test robot
Date: Thu May 04 2017 - 18:57:43 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git rcu/dev
head: 894c3990aadbe57e0e87f9d18307fa2a4e27af7f
commit: 7683511c453ce2bb1b7d30fde281ecdacca04f6b [87/90] rcu: Move ktime needs to rcutiny.h and remove ktime.h from rcupdate.h
config: sparc64-allnoconfig (attached as .config)
compiler: sparc64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 7683511c453ce2bb1b7d30fde281ecdacca04f6b
# save the attached .config to linux build tree
make.cross ARCH=sparc64

All error/warnings (new ones prefixed by >>):

In file included from arch/sparc/include/asm/irqflags.h:4:0,
from include/linux/irqflags.h:15,
from include/linux/rcupdate.h:36,
from include/linux/init_task.h:4,
from init/init_task.c:1:
>> arch/sparc/include/asm/irqflags_64.h:17:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'unsigned'
static inline notrace unsigned long arch_local_save_flags(void)
^~~~~~~~
>> arch/sparc/include/asm/irqflags_64.h:29:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static inline notrace void arch_local_irq_restore(unsigned long flags)
^~~~
arch/sparc/include/asm/irqflags_64.h:39:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static inline notrace void arch_local_irq_disable(void)
^~~~
arch/sparc/include/asm/irqflags_64.h:49:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
static inline notrace void arch_local_irq_enable(void)
^~~~
>> arch/sparc/include/asm/irqflags_64.h:59:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
static inline notrace int arch_irqs_disabled_flags(unsigned long flags)
^~~
arch/sparc/include/asm/irqflags_64.h:64:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
static inline notrace int arch_irqs_disabled(void)
^~~
arch/sparc/include/asm/irqflags_64.h:69:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'unsigned'
static inline notrace unsigned long arch_local_irq_save(void)
^~~~~~~~
In file included from include/linux/rcupdate.h:36:0,
from include/linux/init_task.h:4,
from init/init_task.c:1:
include/linux/spinlock.h: In function 'spin_lock_irq':
>> include/linux/irqflags.h:59:34: error: implicit declaration of function 'arch_local_irq_disable' [-Werror=implicit-function-declaration]
#define raw_local_irq_disable() arch_local_irq_disable()
^
>> include/linux/irqflags.h:121:34: note: in expansion of macro 'raw_local_irq_disable'
#define local_irq_disable() do { raw_local_irq_disable(); } while (0)
^~~~~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_up.h:37:8: note: in expansion of macro 'local_irq_disable'
do { local_irq_disable(); __LOCK(lock); } while (0)
^~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_up.h:65:35: note: in expansion of macro '__LOCK_IRQ'
#define _raw_spin_lock_irq(lock) __LOCK_IRQ(lock)
^~~~~~~~~~
>> include/linux/spinlock.h:235:34: note: in expansion of macro '_raw_spin_lock_irq'
#define raw_spin_lock_irq(lock) _raw_spin_lock_irq(lock)
^~~~~~~~~~~~~~~~~~
>> include/linux/spinlock.h:324:2: note: in expansion of macro 'raw_spin_lock_irq'
raw_spin_lock_irq(&lock->rlock);
^~~~~~~~~~~~~~~~~
include/linux/spinlock.h: In function 'spin_unlock_irq':
>> include/linux/irqflags.h:60:33: error: implicit declaration of function 'arch_local_irq_enable' [-Werror=implicit-function-declaration]
#define raw_local_irq_enable() arch_local_irq_enable()
^
>> include/linux/irqflags.h:120:33: note: in expansion of macro 'raw_local_irq_enable'
#define local_irq_enable() do { raw_local_irq_enable(); } while (0)
^~~~~~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_up.h:53:8: note: in expansion of macro 'local_irq_enable'
do { local_irq_enable(); __UNLOCK(lock); } while (0)
^~~~~~~~~~~~~~~~
>> include/linux/spinlock_api_up.h:81:37: note: in expansion of macro '__UNLOCK_IRQ'
#define _raw_spin_unlock_irq(lock) __UNLOCK_IRQ(lock)
^~~~~~~~~~~~
>> include/linux/spinlock.h:238:35: note: in expansion of macro '_raw_spin_unlock_irq'
#define raw_spin_unlock_irq(lock) _raw_spin_unlock_irq(lock)
^~~~~~~~~~~~~~~~~~~~
>> include/linux/spinlock.h:349:2: note: in expansion of macro 'raw_spin_unlock_irq'
raw_spin_unlock_irq(&lock->rlock);
^~~~~~~~~~~~~~~~~~~
include/linux/spinlock.h: In function 'spin_unlock_irqrestore':
>> include/linux/irqflags.h:69:3: error: implicit declaration of function 'arch_local_irq_restore' [-Werror=implicit-function-declaration]
arch_local_irq_restore(flags); \
^
include/linux/irqflags.h:126:39: note: in expansion of macro 'raw_local_irq_restore'
#define local_irq_restore(flags) do { raw_local_irq_restore(flags); } while (0)
^~~~~~~~~~~~~~~~~~~~~
include/linux/spinlock_api_up.h:56:8: note: in expansion of macro 'local_irq_restore'
do { local_irq_restore(flags); __UNLOCK(lock); } while (0)
^~~~~~~~~~~~~~~~~
include/linux/spinlock_api_up.h:85:6: note: in expansion of macro '__UNLOCK_IRQRESTORE'
__UNLOCK_IRQRESTORE(lock, flags)
^~~~~~~~~~~~~~~~~~~
include/linux/spinlock.h:243:3: note: in expansion of macro '_raw_spin_unlock_irqrestore'
_raw_spin_unlock_irqrestore(lock, flags); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/spinlock.h:354:2: note: in expansion of macro 'raw_spin_unlock_irqrestore'
raw_spin_unlock_irqrestore(&lock->rlock, flags);
^~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/cmpxchg-local.h: In function '__cmpxchg_local_generic':
>> include/linux/irqflags.h:64:11: error: implicit declaration of function 'arch_local_irq_save' [-Werror=implicit-function-declaration]
flags = arch_local_irq_save(); \
^
>> include/asm-generic/cmpxchg-local.h:25:2: note: in expansion of macro 'raw_local_irq_save'
raw_local_irq_save(flags);
^~~~~~~~~~~~~~~~~~
In file included from arch/sparc/include/asm/bug.h:20:0,
from include/linux/bug.h:4,
from include/linux/thread_info.h:11,
from include/asm-generic/preempt.h:4,
from ./arch/sparc/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:80,
from include/linux/rcupdate.h:37,
from include/linux/init_task.h:4,
from init/init_task.c:1:
include/linux/dma-mapping.h: In function 'dma_free_attrs':
>> include/linux/irqflags.h:74:11: error: implicit declaration of function 'arch_local_save_flags' [-Werror=implicit-function-declaration]
flags = arch_local_save_flags(); \
^
include/asm-generic/bug.h:159:25: note: in definition of macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
>> include/linux/irqflags.h:142:3: note: in expansion of macro 'raw_local_save_flags'
raw_local_save_flags(_flags); \
^~~~~~~~~~~~~~~~~~~~

vim +/arch_local_irq_disable +59 include/linux/irqflags.h

81d68a96a Steven Rostedt 2008-05-12 53 # define start_critical_timings() do { } while (0)
81d68a96a Steven Rostedt 2008-05-12 54 #endif
81d68a96a Steven Rostedt 2008-05-12 55
df9ee2927 David Howells 2010-10-07 56 /*
df9ee2927 David Howells 2010-10-07 57 * Wrap the arch provided IRQ routines to provide appropriate checks.
df9ee2927 David Howells 2010-10-07 58 */
df9ee2927 David Howells 2010-10-07 @59 #define raw_local_irq_disable() arch_local_irq_disable()
df9ee2927 David Howells 2010-10-07 @60 #define raw_local_irq_enable() arch_local_irq_enable()
df9ee2927 David Howells 2010-10-07 61 #define raw_local_irq_save(flags) \
df9ee2927 David Howells 2010-10-07 62 do { \
df9ee2927 David Howells 2010-10-07 63 typecheck(unsigned long, flags); \
df9ee2927 David Howells 2010-10-07 @64 flags = arch_local_irq_save(); \
df9ee2927 David Howells 2010-10-07 65 } while (0)
df9ee2927 David Howells 2010-10-07 66 #define raw_local_irq_restore(flags) \
df9ee2927 David Howells 2010-10-07 67 do { \
df9ee2927 David Howells 2010-10-07 68 typecheck(unsigned long, flags); \
df9ee2927 David Howells 2010-10-07 @69 arch_local_irq_restore(flags); \
df9ee2927 David Howells 2010-10-07 70 } while (0)
df9ee2927 David Howells 2010-10-07 71 #define raw_local_save_flags(flags) \
df9ee2927 David Howells 2010-10-07 72 do { \
df9ee2927 David Howells 2010-10-07 73 typecheck(unsigned long, flags); \
df9ee2927 David Howells 2010-10-07 @74 flags = arch_local_save_flags(); \
df9ee2927 David Howells 2010-10-07 75 } while (0)
df9ee2927 David Howells 2010-10-07 76 #define raw_irqs_disabled_flags(flags) \
df9ee2927 David Howells 2010-10-07 77 ({ \
df9ee2927 David Howells 2010-10-07 78 typecheck(unsigned long, flags); \
df9ee2927 David Howells 2010-10-07 @79 arch_irqs_disabled_flags(flags); \
df9ee2927 David Howells 2010-10-07 80 })
df9ee2927 David Howells 2010-10-07 81 #define raw_irqs_disabled() (arch_irqs_disabled())
df9ee2927 David Howells 2010-10-07 82 #define raw_safe_halt() arch_safe_halt()
de30a2b35 Ingo Molnar 2006-07-03 83
df9ee2927 David Howells 2010-10-07 84 /*
df9ee2927 David Howells 2010-10-07 85 * The local_irq_*() APIs are equal to the raw_local_irq*()
df9ee2927 David Howells 2010-10-07 86 * if !TRACE_IRQFLAGS.
df9ee2927 David Howells 2010-10-07 87 */
db2dcb4f9 Jan Beulich 2015-01-20 88 #ifdef CONFIG_TRACE_IRQFLAGS
de30a2b35 Ingo Molnar 2006-07-03 89 #define local_irq_enable() \
de30a2b35 Ingo Molnar 2006-07-03 90 do { trace_hardirqs_on(); raw_local_irq_enable(); } while (0)
de30a2b35 Ingo Molnar 2006-07-03 91 #define local_irq_disable() \
de30a2b35 Ingo Molnar 2006-07-03 92 do { raw_local_irq_disable(); trace_hardirqs_off(); } while (0)
de30a2b35 Ingo Molnar 2006-07-03 93 #define local_irq_save(flags) \
3f307891c Steven Rostedt 2008-07-25 94 do { \
3f307891c Steven Rostedt 2008-07-25 95 raw_local_irq_save(flags); \
3f307891c Steven Rostedt 2008-07-25 96 trace_hardirqs_off(); \
3f307891c Steven Rostedt 2008-07-25 97 } while (0)
3f307891c Steven Rostedt 2008-07-25 98
de30a2b35 Ingo Molnar 2006-07-03 99
de30a2b35 Ingo Molnar 2006-07-03 100 #define local_irq_restore(flags) \
de30a2b35 Ingo Molnar 2006-07-03 101 do { \
de30a2b35 Ingo Molnar 2006-07-03 102 if (raw_irqs_disabled_flags(flags)) { \
de30a2b35 Ingo Molnar 2006-07-03 103 raw_local_irq_restore(flags); \
de30a2b35 Ingo Molnar 2006-07-03 104 trace_hardirqs_off(); \
de30a2b35 Ingo Molnar 2006-07-03 105 } else { \
de30a2b35 Ingo Molnar 2006-07-03 106 trace_hardirqs_on(); \
de30a2b35 Ingo Molnar 2006-07-03 107 raw_local_irq_restore(flags); \
de30a2b35 Ingo Molnar 2006-07-03 108 } \
de30a2b35 Ingo Molnar 2006-07-03 109 } while (0)
de30a2b35 Ingo Molnar 2006-07-03 110
df9ee2927 David Howells 2010-10-07 111 #define safe_halt() \
df9ee2927 David Howells 2010-10-07 112 do { \
df9ee2927 David Howells 2010-10-07 113 trace_hardirqs_on(); \
df9ee2927 David Howells 2010-10-07 114 raw_safe_halt(); \
df9ee2927 David Howells 2010-10-07 115 } while (0)
df9ee2927 David Howells 2010-10-07 116
df9ee2927 David Howells 2010-10-07 117
db2dcb4f9 Jan Beulich 2015-01-20 118 #else /* !CONFIG_TRACE_IRQFLAGS */
df9ee2927 David Howells 2010-10-07 119
df9ee2927 David Howells 2010-10-07 @120 #define local_irq_enable() do { raw_local_irq_enable(); } while (0)
df9ee2927 David Howells 2010-10-07 @121 #define local_irq_disable() do { raw_local_irq_disable(); } while (0)
df9ee2927 David Howells 2010-10-07 122 #define local_irq_save(flags) \
df9ee2927 David Howells 2010-10-07 123 do { \
df9ee2927 David Howells 2010-10-07 124 raw_local_irq_save(flags); \
df9ee2927 David Howells 2010-10-07 125 } while (0)
df9ee2927 David Howells 2010-10-07 126 #define local_irq_restore(flags) do { raw_local_irq_restore(flags); } while (0)
df9ee2927 David Howells 2010-10-07 127 #define safe_halt() do { raw_safe_halt(); } while (0)
df9ee2927 David Howells 2010-10-07 128
db2dcb4f9 Jan Beulich 2015-01-20 129 #endif /* CONFIG_TRACE_IRQFLAGS */
db2dcb4f9 Jan Beulich 2015-01-20 130
db2dcb4f9 Jan Beulich 2015-01-20 131 #define local_save_flags(flags) raw_local_save_flags(flags)
db2dcb4f9 Jan Beulich 2015-01-20 132
db2dcb4f9 Jan Beulich 2015-01-20 133 /*
db2dcb4f9 Jan Beulich 2015-01-20 134 * Some architectures don't define arch_irqs_disabled(), so even if either
db2dcb4f9 Jan Beulich 2015-01-20 135 * definition would be fine we need to use different ones for the time being
db2dcb4f9 Jan Beulich 2015-01-20 136 * to avoid build issues.
db2dcb4f9 Jan Beulich 2015-01-20 137 */
db2dcb4f9 Jan Beulich 2015-01-20 138 #ifdef CONFIG_TRACE_IRQFLAGS_SUPPORT
db2dcb4f9 Jan Beulich 2015-01-20 139 #define irqs_disabled() \
db2dcb4f9 Jan Beulich 2015-01-20 140 ({ \
db2dcb4f9 Jan Beulich 2015-01-20 141 unsigned long _flags; \
db2dcb4f9 Jan Beulich 2015-01-20 @142 raw_local_save_flags(_flags); \
db2dcb4f9 Jan Beulich 2015-01-20 @143 raw_irqs_disabled_flags(_flags); \
db2dcb4f9 Jan Beulich 2015-01-20 144 })
db2dcb4f9 Jan Beulich 2015-01-20 145 #else /* !CONFIG_TRACE_IRQFLAGS_SUPPORT */
db2dcb4f9 Jan Beulich 2015-01-20 146 #define irqs_disabled() raw_irqs_disabled()

:::::: The code at line 59 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

Attachment: .config.gz
Description: application/gzip