locking/atomics/h8300: Don't include <linux/kernel.h> in <asm/atomic.h>
authorWill Deacon <will.deacon@arm.com>
Tue, 19 Jun 2018 12:53:06 +0000 (13:53 +0100)
committerIngo Molnar <mingo@kernel.org>
Thu, 21 Jun 2018 10:52:10 +0000 (12:52 +0200)
<linux/kernel.h> isn't needed by <asm/atomic.h> and will result in circular
dependencies when the asm-generic atomic bitops are built around the
atomic_long_t interface.

Remove the broad include and replace it with <linux/compiler.h> for
READ_ONCE() etc and <asm/irqflags.h> for arch_local_irq_save() etc.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: linux-arm-kernel@lists.infradead.org
Cc: yamada.masahiro@socionext.com
Link: https://lore.kernel.org/lkml/1529412794-17720-2-git-send-email-will.deacon@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/h8300/include/asm/atomic.h

index 941e7554e886aea0339a19acc2823299cde3501f..b174dec099bfbf2149f78617ad7176fde06bc59e 100644 (file)
@@ -2,8 +2,10 @@
 #ifndef __ARCH_H8300_ATOMIC__
 #define __ARCH_H8300_ATOMIC__
 
+#include <linux/compiler.h>
 #include <linux/types.h>
 #include <asm/cmpxchg.h>
+#include <asm/irqflags.h>
 
 /*
  * Atomic operations that C can't guarantee us.  Useful for
@@ -15,8 +17,6 @@
 #define atomic_read(v)         READ_ONCE((v)->counter)
 #define atomic_set(v, i)       WRITE_ONCE(((v)->counter), (i))
 
-#include <linux/kernel.h>
-
 #define ATOMIC_OP_RETURN(op, c_op)                             \
 static inline int atomic_##op##_return(int i, atomic_t *v)     \
 {                                                              \