diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/Kconfig | 3 | ||||
-rw-r--r-- | arch/x86/Kconfig | 3 | ||||
-rw-r--r-- | arch/x86/include/asm/entry_arch.h | 1 | ||||
-rw-r--r-- | arch/x86/include/asm/hw_irq.h | 4 | ||||
-rw-r--r-- | arch/x86/include/asm/irq_vectors.h | 6 | ||||
-rw-r--r-- | arch/x86/kernel/entry_64.S | 2 | ||||
-rw-r--r-- | arch/x86/kernel/irqinit.c | 3 | ||||
-rw-r--r-- | arch/x86/kernel/smp.c | 35 |
8 files changed, 0 insertions, 57 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index d3bfc3a4e56a..ce948d46a1b3 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -2123,8 +2123,5 @@ source "arch/arm/kvm/Kconfig" | |||
2123 | config ARCH_HAS_FEATHER_TRACE | 2123 | config ARCH_HAS_FEATHER_TRACE |
2124 | def_bool n | 2124 | def_bool n |
2125 | 2125 | ||
2126 | config ARCH_HAS_SEND_PULL_TIMERS | ||
2127 | def_bool n | ||
2128 | |||
2129 | source "litmus/Kconfig" | 2126 | source "litmus/Kconfig" |
2130 | 2127 | ||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index f9c9a4d70b24..6331227b4686 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -2598,7 +2598,4 @@ source "lib/Kconfig" | |||
2598 | config ARCH_HAS_FEATHER_TRACE | 2598 | config ARCH_HAS_FEATHER_TRACE |
2599 | def_bool y | 2599 | def_bool y |
2600 | 2600 | ||
2601 | config ARCH_HAS_SEND_PULL_TIMERS | ||
2602 | def_bool y | ||
2603 | |||
2604 | source "litmus/Kconfig" | 2601 | source "litmus/Kconfig" |
diff --git a/arch/x86/include/asm/entry_arch.h b/arch/x86/include/asm/entry_arch.h index e657219d7964..dc5fa661465f 100644 --- a/arch/x86/include/asm/entry_arch.h +++ b/arch/x86/include/asm/entry_arch.h | |||
@@ -13,7 +13,6 @@ | |||
13 | BUILD_INTERRUPT(reschedule_interrupt,RESCHEDULE_VECTOR) | 13 | BUILD_INTERRUPT(reschedule_interrupt,RESCHEDULE_VECTOR) |
14 | BUILD_INTERRUPT(call_function_interrupt,CALL_FUNCTION_VECTOR) | 14 | BUILD_INTERRUPT(call_function_interrupt,CALL_FUNCTION_VECTOR) |
15 | BUILD_INTERRUPT(call_function_single_interrupt,CALL_FUNCTION_SINGLE_VECTOR) | 15 | BUILD_INTERRUPT(call_function_single_interrupt,CALL_FUNCTION_SINGLE_VECTOR) |
16 | BUILD_INTERRUPT(pull_timers_interrupt,PULL_TIMERS_VECTOR) | ||
17 | BUILD_INTERRUPT3(irq_move_cleanup_interrupt, IRQ_MOVE_CLEANUP_VECTOR, | 16 | BUILD_INTERRUPT3(irq_move_cleanup_interrupt, IRQ_MOVE_CLEANUP_VECTOR, |
18 | smp_irq_move_cleanup_interrupt) | 17 | smp_irq_move_cleanup_interrupt) |
19 | BUILD_INTERRUPT3(reboot_interrupt, REBOOT_VECTOR, smp_reboot_interrupt) | 18 | BUILD_INTERRUPT3(reboot_interrupt, REBOOT_VECTOR, smp_reboot_interrupt) |
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h index 3e860d1f9416..e9571ddabc4f 100644 --- a/arch/x86/include/asm/hw_irq.h +++ b/arch/x86/include/asm/hw_irq.h | |||
@@ -77,8 +77,6 @@ extern asmlinkage void threshold_interrupt(void); | |||
77 | extern asmlinkage void call_function_interrupt(void); | 77 | extern asmlinkage void call_function_interrupt(void); |
78 | extern asmlinkage void call_function_single_interrupt(void); | 78 | extern asmlinkage void call_function_single_interrupt(void); |
79 | 79 | ||
80 | extern asmlinkage void pull_timers_interrupt(void); | ||
81 | |||
82 | #ifdef CONFIG_TRACING | 80 | #ifdef CONFIG_TRACING |
83 | /* Interrupt handlers registered during init_IRQ */ | 81 | /* Interrupt handlers registered during init_IRQ */ |
84 | extern void trace_apic_timer_interrupt(void); | 82 | extern void trace_apic_timer_interrupt(void); |
@@ -91,7 +89,6 @@ extern void trace_reschedule_interrupt(void); | |||
91 | extern void trace_threshold_interrupt(void); | 89 | extern void trace_threshold_interrupt(void); |
92 | extern void trace_call_function_interrupt(void); | 90 | extern void trace_call_function_interrupt(void); |
93 | extern void trace_call_function_single_interrupt(void); | 91 | extern void trace_call_function_single_interrupt(void); |
94 | extern void trace_pull_timers_interrupt(void); | ||
95 | #define trace_irq_move_cleanup_interrupt irq_move_cleanup_interrupt | 92 | #define trace_irq_move_cleanup_interrupt irq_move_cleanup_interrupt |
96 | #define trace_reboot_interrupt reboot_interrupt | 93 | #define trace_reboot_interrupt reboot_interrupt |
97 | #define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi | 94 | #define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi |
@@ -182,7 +179,6 @@ extern __visible void smp_reschedule_interrupt(struct pt_regs *); | |||
182 | extern __visible void smp_call_function_interrupt(struct pt_regs *); | 179 | extern __visible void smp_call_function_interrupt(struct pt_regs *); |
183 | extern __visible void smp_call_function_single_interrupt(struct pt_regs *); | 180 | extern __visible void smp_call_function_single_interrupt(struct pt_regs *); |
184 | extern __visible void smp_invalidate_interrupt(struct pt_regs *); | 181 | extern __visible void smp_invalidate_interrupt(struct pt_regs *); |
185 | extern __visible void smp_pull_timers_interrupt(struct pt_regs *); | ||
186 | #endif | 182 | #endif |
187 | 183 | ||
188 | extern char irq_entries_start[]; | 184 | extern char irq_entries_start[]; |
diff --git a/arch/x86/include/asm/irq_vectors.h b/arch/x86/include/asm/irq_vectors.h index 82545836e1a1..666c89ec4bd7 100644 --- a/arch/x86/include/asm/irq_vectors.h +++ b/arch/x86/include/asm/irq_vectors.h | |||
@@ -124,12 +124,6 @@ | |||
124 | */ | 124 | */ |
125 | #define LOCAL_TIMER_VECTOR 0xef | 125 | #define LOCAL_TIMER_VECTOR 0xef |
126 | 126 | ||
127 | /* | ||
128 | * LITMUS^RT pull timers IRQ vector. | ||
129 | * Make sure it's not used by Linux. | ||
130 | */ | ||
131 | #define PULL_TIMERS_VECTOR 0xdf | ||
132 | |||
133 | #define NR_VECTORS 256 | 127 | #define NR_VECTORS 256 |
134 | 128 | ||
135 | #ifdef CONFIG_X86_LOCAL_APIC | 129 | #ifdef CONFIG_X86_LOCAL_APIC |
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index d810f5fea04f..02c2eff7478d 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
@@ -947,8 +947,6 @@ apicinterrupt CALL_FUNCTION_VECTOR \ | |||
947 | call_function_interrupt smp_call_function_interrupt | 947 | call_function_interrupt smp_call_function_interrupt |
948 | apicinterrupt RESCHEDULE_VECTOR \ | 948 | apicinterrupt RESCHEDULE_VECTOR \ |
949 | reschedule_interrupt smp_reschedule_interrupt | 949 | reschedule_interrupt smp_reschedule_interrupt |
950 | apicinterrupt PULL_TIMERS_VECTOR \ | ||
951 | pull_timers_interrupt smp_pull_timers_interrupt | ||
952 | #endif | 950 | #endif |
953 | 951 | ||
954 | apicinterrupt ERROR_APIC_VECTOR \ | 952 | apicinterrupt ERROR_APIC_VECTOR \ |
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c index 834496ed9536..cd10a6437264 100644 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c | |||
@@ -115,9 +115,6 @@ static void __init smp_intr_init(void) | |||
115 | alloc_intr_gate(CALL_FUNCTION_SINGLE_VECTOR, | 115 | alloc_intr_gate(CALL_FUNCTION_SINGLE_VECTOR, |
116 | call_function_single_interrupt); | 116 | call_function_single_interrupt); |
117 | 117 | ||
118 | /* IPI for hrtimer pulling on remote cpus */ | ||
119 | alloc_intr_gate(PULL_TIMERS_VECTOR, pull_timers_interrupt); | ||
120 | |||
121 | /* Low priority IPI to cleanup after moving an irq */ | 118 | /* Low priority IPI to cleanup after moving an irq */ |
122 | set_intr_gate(IRQ_MOVE_CLEANUP_VECTOR, irq_move_cleanup_interrupt); | 119 | set_intr_gate(IRQ_MOVE_CLEANUP_VECTOR, irq_move_cleanup_interrupt); |
123 | set_bit(IRQ_MOVE_CLEANUP_VECTOR, used_vectors); | 120 | set_bit(IRQ_MOVE_CLEANUP_VECTOR, used_vectors); |
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index 431c3d29a667..cffff2a8eb8b 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/gfp.h> | 25 | #include <linux/gfp.h> |
26 | 26 | ||
27 | #include <litmus/preempt.h> | 27 | #include <litmus/preempt.h> |
28 | #include <litmus/debug_trace.h> | ||
29 | 28 | ||
30 | #include <asm/mtrr.h> | 29 | #include <asm/mtrr.h> |
31 | #include <asm/tlbflush.h> | 30 | #include <asm/tlbflush.h> |
@@ -167,16 +166,6 @@ static int smp_stop_nmi_callback(unsigned int val, struct pt_regs *regs) | |||
167 | return NMI_HANDLED; | 166 | return NMI_HANDLED; |
168 | } | 167 | } |
169 | 168 | ||
170 | /* trigger timers on remote cpu */ | ||
171 | void smp_send_pull_timers(int cpu) | ||
172 | { | ||
173 | if (unlikely(cpu_is_offline(cpu))) { | ||
174 | WARN_ON(1); | ||
175 | return; | ||
176 | } | ||
177 | apic->send_IPI_mask(cpumask_of(cpu), PULL_TIMERS_VECTOR); | ||
178 | } | ||
179 | |||
180 | /* | 169 | /* |
181 | * this function calls the 'stop' function on all other CPUs in the system. | 170 | * this function calls the 'stop' function on all other CPUs in the system. |
182 | */ | 171 | */ |
@@ -359,30 +348,6 @@ static int __init nonmi_ipi_setup(char *str) | |||
359 | 348 | ||
360 | __setup("nonmi_ipi", nonmi_ipi_setup); | 349 | __setup("nonmi_ipi", nonmi_ipi_setup); |
361 | 350 | ||
362 | extern void hrtimer_pull(void); | ||
363 | |||
364 | static inline void __smp_pull_timers_interrupt(void) | ||
365 | { | ||
366 | TRACE("pull timer interrupt\n"); | ||
367 | hrtimer_pull(); | ||
368 | } | ||
369 | |||
370 | __visible void smp_pull_timers_interrupt(struct pt_regs *regs) | ||
371 | { | ||
372 | smp_entering_irq(); | ||
373 | __smp_pull_timers_interrupt(); | ||
374 | exiting_irq(); | ||
375 | } | ||
376 | |||
377 | __visible void smp_trace_pull_timers_interrupt(struct pt_regs *regs) | ||
378 | { | ||
379 | smp_entering_irq(); | ||
380 | trace_call_function_single_entry(PULL_TIMERS_VECTOR); | ||
381 | __smp_pull_timers_interrupt(); | ||
382 | trace_call_function_single_exit(PULL_TIMERS_VECTOR); | ||
383 | exiting_irq(); | ||
384 | } | ||
385 | |||
386 | struct smp_ops smp_ops = { | 351 | struct smp_ops smp_ops = { |
387 | .smp_prepare_boot_cpu = native_smp_prepare_boot_cpu, | 352 | .smp_prepare_boot_cpu = native_smp_prepare_boot_cpu, |
388 | .smp_prepare_cpus = native_smp_prepare_cpus, | 353 | .smp_prepare_cpus = native_smp_prepare_cpus, |