]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
arm64: clean up irq stack definitions
authorMark Rutland <mark.rutland@arm.com>
Thu, 20 Jul 2017 11:26:48 +0000 (12:26 +0100)
committerMark Rutland <mark.rutland@arm.com>
Tue, 15 Aug 2017 17:35:14 +0000 (18:35 +0100)
Before we add yet another stack to the kernel, it would be nice to
ensure that we consistently organise stack definitions and related
helper functions.

This patch moves the basic IRQ stack defintions to <asm/memory.h> to
live with their task stack counterparts. Helpers used for unwinding are
moved into <asm/stacktrace.h>, where subsequent patches will add helpers
for other stacks. Includes are fixed up accordingly.

This patch is a pure refactoring -- there should be no functional
changes as a result of this patch.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Tested-by: Laura Abbott <labbott@redhat.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: James Morse <james.morse@arm.com>
arch/arm64/include/asm/irq.h
arch/arm64/include/asm/memory.h
arch/arm64/include/asm/stacktrace.h
arch/arm64/kernel/ptrace.c

index 1ebe202b1a242b664c8d79d9c73fb4308e0184a5..5e6f772390644d9dbaf1f2c15033f2f9562522b8 100644 (file)
@@ -1,20 +1,12 @@
 #ifndef __ASM_IRQ_H
 #define __ASM_IRQ_H
 
-#define IRQ_STACK_SIZE                 THREAD_SIZE
-
 #ifndef __ASSEMBLER__
 
-#include <linux/percpu.h>
-#include <linux/sched/task_stack.h>
-
 #include <asm-generic/irq.h>
-#include <asm/thread_info.h>
 
 struct pt_regs;
 
-DECLARE_PER_CPU(unsigned long [IRQ_STACK_SIZE/sizeof(long)], irq_stack);
-
 extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
 
 static inline int nr_legacy_irqs(void)
@@ -22,21 +14,5 @@ static inline int nr_legacy_irqs(void)
        return 0;
 }
 
-static inline bool on_irq_stack(unsigned long sp)
-{
-       unsigned long low = (unsigned long)raw_cpu_ptr(irq_stack);
-       unsigned long high = low + IRQ_STACK_SIZE;
-
-       return (low <= sp && sp < high);
-}
-
-static inline bool on_task_stack(struct task_struct *tsk, unsigned long sp)
-{
-       unsigned long low = (unsigned long)task_stack_page(tsk);
-       unsigned long high = low + THREAD_SIZE;
-
-       return (low <= sp && sp < high);
-}
-
 #endif /* !__ASSEMBLER__ */
 #endif
index 8ab4774e2616ee194fc77e50965a85405ed8f0f0..1fc24532987ee9832b486a31e2bbf0a11a70628b 100644 (file)
 
 #define THREAD_SIZE            (UL(1) << THREAD_SHIFT)
 
+#define IRQ_STACK_SIZE         THREAD_SIZE
+
 /*
  * Memory types available.
  */
index 3bebab378c7217932e507fca67f2382cde13131d..000e24182a5c7d98b60d31a25606a127e80cd400 100644 (file)
 #ifndef __ASM_STACKTRACE_H
 #define __ASM_STACKTRACE_H
 
-struct task_struct;
+#include <linux/percpu.h>
+#include <linux/sched.h>
+#include <linux/sched/task_stack.h>
+
+#include <asm/memory.h>
+#include <asm/ptrace.h>
 
 struct stackframe {
        unsigned long fp;
@@ -31,4 +36,22 @@ extern void walk_stackframe(struct task_struct *tsk, struct stackframe *frame,
                            int (*fn)(struct stackframe *, void *), void *data);
 extern void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk);
 
+DECLARE_PER_CPU(unsigned long [IRQ_STACK_SIZE/sizeof(long)], irq_stack);
+
+static inline bool on_irq_stack(unsigned long sp)
+{
+       unsigned long low = (unsigned long)raw_cpu_ptr(irq_stack);
+       unsigned long high = low + IRQ_STACK_SIZE;
+
+       return (low <= sp && sp < high);
+}
+
+static inline bool on_task_stack(struct task_struct *tsk, unsigned long sp)
+{
+       unsigned long low = (unsigned long)task_stack_page(tsk);
+       unsigned long high = low + THREAD_SIZE;
+
+       return (low <= sp && sp < high);
+}
+
 #endif /* __ASM_STACKTRACE_H */
index baf0838205c761f3ed7253d0abcb138df98f869c..a9f87157c3716cccb5622be35113459ae2774c44 100644 (file)
@@ -42,6 +42,7 @@
 #include <asm/compat.h>
 #include <asm/debug-monitors.h>
 #include <asm/pgtable.h>
+#include <asm/stacktrace.h>
 #include <asm/syscall.h>
 #include <asm/traps.h>
 #include <asm/system_misc.h>