aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/crash.h1
-rw-r--r--arch/x86/include/asm/irq.h7
-rw-r--r--arch/x86/include/asm/irq_work.h1
-rw-r--r--arch/x86/include/asm/kvm_para.h1
-rw-r--r--arch/x86/include/asm/paravirt.h5
-rw-r--r--arch/x86/include/asm/reboot.h1
-rw-r--r--arch/x86/include/asm/sighandling.h5
-rw-r--r--arch/x86/include/asm/smp.h6
-rw-r--r--arch/x86/include/asm/traps.h4
-rw-r--r--arch/x86/include/asm/tsc.h1
-rw-r--r--arch/x86/kernel/check.c3
-rw-r--r--arch/x86/kernel/crash.c1
-rw-r--r--arch/x86/kernel/devicetree.c1
-rw-r--r--arch/x86/kernel/jailhouse.c1
-rw-r--r--arch/x86/kernel/process.c3
-rw-r--r--arch/x86/kernel/quirks.c1
-rw-r--r--arch/x86/kernel/tracepoint.c1
-rw-r--r--include/linux/ftrace.h3
-rw-r--r--include/linux/kexec.h1
-rw-r--r--include/linux/of_fdt.h1
-rw-r--r--include/linux/ptrace.h1
21 files changed, 48 insertions, 1 deletions
diff --git a/arch/x86/include/asm/crash.h b/arch/x86/include/asm/crash.h
index a7adb2bfbf0b..0acf5ee45a21 100644
--- a/arch/x86/include/asm/crash.h
+++ b/arch/x86/include/asm/crash.h
@@ -6,5 +6,6 @@ int crash_load_segments(struct kimage *image);
6int crash_copy_backup_region(struct kimage *image); 6int crash_copy_backup_region(struct kimage *image);
7int crash_setup_memmap_entries(struct kimage *image, 7int crash_setup_memmap_entries(struct kimage *image,
8 struct boot_params *params); 8 struct boot_params *params);
9void crash_smp_send_stop(void);
9 10
10#endif /* _ASM_X86_CRASH_H */ 11#endif /* _ASM_X86_CRASH_H */
diff --git a/arch/x86/include/asm/irq.h b/arch/x86/include/asm/irq.h
index 2395bb794c7b..fbb16e6b6c18 100644
--- a/arch/x86/include/asm/irq.h
+++ b/arch/x86/include/asm/irq.h
@@ -30,6 +30,9 @@ extern void fixup_irqs(void);
30 30
31#ifdef CONFIG_HAVE_KVM 31#ifdef CONFIG_HAVE_KVM
32extern void kvm_set_posted_intr_wakeup_handler(void (*handler)(void)); 32extern void kvm_set_posted_intr_wakeup_handler(void (*handler)(void));
33extern __visible void smp_kvm_posted_intr_ipi(struct pt_regs *regs);
34extern __visible void smp_kvm_posted_intr_wakeup_ipi(struct pt_regs *regs);
35extern __visible void smp_kvm_posted_intr_nested_ipi(struct pt_regs *regs);
33#endif 36#endif
34 37
35extern void (*x86_platform_ipi_callback)(void); 38extern void (*x86_platform_ipi_callback)(void);
@@ -41,9 +44,13 @@ extern __visible unsigned int do_IRQ(struct pt_regs *regs);
41 44
42extern void init_ISA_irqs(void); 45extern void init_ISA_irqs(void);
43 46
47extern void __init init_IRQ(void);
48
44#ifdef CONFIG_X86_LOCAL_APIC 49#ifdef CONFIG_X86_LOCAL_APIC
45void arch_trigger_cpumask_backtrace(const struct cpumask *mask, 50void arch_trigger_cpumask_backtrace(const struct cpumask *mask,
46 bool exclude_self); 51 bool exclude_self);
52
53extern __visible void smp_x86_platform_ipi(struct pt_regs *regs);
47#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace 54#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
48#endif 55#endif
49 56
diff --git a/arch/x86/include/asm/irq_work.h b/arch/x86/include/asm/irq_work.h
index 800ffce0db29..80b35e3adf03 100644
--- a/arch/x86/include/asm/irq_work.h
+++ b/arch/x86/include/asm/irq_work.h
@@ -10,6 +10,7 @@ static inline bool arch_irq_work_has_interrupt(void)
10 return boot_cpu_has(X86_FEATURE_APIC); 10 return boot_cpu_has(X86_FEATURE_APIC);
11} 11}
12extern void arch_irq_work_raise(void); 12extern void arch_irq_work_raise(void);
13extern __visible void smp_irq_work_interrupt(struct pt_regs *regs);
13#else 14#else
14static inline bool arch_irq_work_has_interrupt(void) 15static inline bool arch_irq_work_has_interrupt(void)
15{ 16{
diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
index 4c723632c036..5ed3cf1c3934 100644
--- a/arch/x86/include/asm/kvm_para.h
+++ b/arch/x86/include/asm/kvm_para.h
@@ -92,6 +92,7 @@ void kvm_async_pf_task_wait(u32 token, int interrupt_kernel);
92void kvm_async_pf_task_wake(u32 token); 92void kvm_async_pf_task_wake(u32 token);
93u32 kvm_read_and_reset_pf_reason(void); 93u32 kvm_read_and_reset_pf_reason(void);
94extern void kvm_disable_steal_time(void); 94extern void kvm_disable_steal_time(void);
95void do_async_page_fault(struct pt_regs *regs, unsigned long error_code);
95 96
96#ifdef CONFIG_PARAVIRT_SPINLOCKS 97#ifdef CONFIG_PARAVIRT_SPINLOCKS
97void __init kvm_spinlock_init(void); 98void __init kvm_spinlock_init(void);
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index 4bf42f9e4eea..a97f28d914d5 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -26,6 +26,11 @@ struct static_key;
26extern struct static_key paravirt_steal_enabled; 26extern struct static_key paravirt_steal_enabled;
27extern struct static_key paravirt_steal_rq_enabled; 27extern struct static_key paravirt_steal_rq_enabled;
28 28
29__visible void __native_queued_spin_unlock(struct qspinlock *lock);
30bool pv_is_native_spin_unlock(void);
31__visible bool __native_vcpu_is_preempted(long cpu);
32bool pv_is_native_vcpu_is_preempted(void);
33
29static inline u64 paravirt_steal_clock(int cpu) 34static inline u64 paravirt_steal_clock(int cpu)
30{ 35{
31 return PVOP_CALL1(u64, time.steal_clock, cpu); 36 return PVOP_CALL1(u64, time.steal_clock, cpu);
diff --git a/arch/x86/include/asm/reboot.h b/arch/x86/include/asm/reboot.h
index a671a1145906..04c17be9b5fd 100644
--- a/arch/x86/include/asm/reboot.h
+++ b/arch/x86/include/asm/reboot.h
@@ -26,6 +26,7 @@ void __noreturn machine_real_restart(unsigned int type);
26#define MRR_APM 1 26#define MRR_APM 1
27 27
28typedef void (*nmi_shootdown_cb)(int, struct pt_regs*); 28typedef void (*nmi_shootdown_cb)(int, struct pt_regs*);
29void nmi_panic_self_stop(struct pt_regs *regs);
29void nmi_shootdown_cpus(nmi_shootdown_cb callback); 30void nmi_shootdown_cpus(nmi_shootdown_cb callback);
30void run_crash_ipi_callback(struct pt_regs *regs); 31void run_crash_ipi_callback(struct pt_regs *regs);
31 32
diff --git a/arch/x86/include/asm/sighandling.h b/arch/x86/include/asm/sighandling.h
index bd26834724e5..2fcbd6f33ef7 100644
--- a/arch/x86/include/asm/sighandling.h
+++ b/arch/x86/include/asm/sighandling.h
@@ -17,4 +17,9 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
17int setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, 17int setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate,
18 struct pt_regs *regs, unsigned long mask); 18 struct pt_regs *regs, unsigned long mask);
19 19
20
21#ifdef CONFIG_X86_X32_ABI
22asmlinkage long sys32_x32_rt_sigreturn(void);
23#endif
24
20#endif /* _ASM_X86_SIGHANDLING_H */ 25#endif /* _ASM_X86_SIGHANDLING_H */
diff --git a/arch/x86/include/asm/smp.h b/arch/x86/include/asm/smp.h
index 547c4fe50711..2e95b6c1bca3 100644
--- a/arch/x86/include/asm/smp.h
+++ b/arch/x86/include/asm/smp.h
@@ -148,6 +148,12 @@ void x86_idle_thread_init(unsigned int cpu, struct task_struct *idle);
148 148
149void smp_store_boot_cpu_info(void); 149void smp_store_boot_cpu_info(void);
150void smp_store_cpu_info(int id); 150void smp_store_cpu_info(int id);
151
152asmlinkage __visible void smp_reboot_interrupt(void);
153__visible void smp_reschedule_interrupt(struct pt_regs *regs);
154__visible void smp_call_function_interrupt(struct pt_regs *regs);
155__visible void smp_call_function_single_interrupt(struct pt_regs *r);
156
151#define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu) 157#define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu)
152#define cpu_acpi_id(cpu) per_cpu(x86_cpu_to_acpiid, cpu) 158#define cpu_acpi_id(cpu) per_cpu(x86_cpu_to_acpiid, cpu)
153 159
diff --git a/arch/x86/include/asm/traps.h b/arch/x86/include/asm/traps.h
index 877afdedbbc5..5fcdf5687406 100644
--- a/arch/x86/include/asm/traps.h
+++ b/arch/x86/include/asm/traps.h
@@ -75,6 +75,10 @@ dotraplinkage void do_segment_not_present(struct pt_regs *regs, long error_code)
75dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code); 75dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code);
76#ifdef CONFIG_X86_64 76#ifdef CONFIG_X86_64
77dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code); 77dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code);
78asmlinkage __visible notrace struct pt_regs *sync_regs(struct pt_regs *eregs);
79asmlinkage __visible notrace
80struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s);
81void __init trap_init(void);
78#endif 82#endif
79dotraplinkage void do_general_protection(struct pt_regs *regs, long error_code); 83dotraplinkage void do_general_protection(struct pt_regs *regs, long error_code);
80dotraplinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code); 84dotraplinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code);
diff --git a/arch/x86/include/asm/tsc.h b/arch/x86/include/asm/tsc.h
index eb5bbfeccb66..8a0c25c6bf09 100644
--- a/arch/x86/include/asm/tsc.h
+++ b/arch/x86/include/asm/tsc.h
@@ -35,6 +35,7 @@ extern struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns);
35 35
36extern void tsc_early_init(void); 36extern void tsc_early_init(void);
37extern void tsc_init(void); 37extern void tsc_init(void);
38extern unsigned long calibrate_delay_is_known(void);
38extern void mark_tsc_unstable(char *reason); 39extern void mark_tsc_unstable(char *reason);
39extern int unsynchronized_tsc(void); 40extern int unsynchronized_tsc(void);
40extern int check_tsc_unstable(void); 41extern int check_tsc_unstable(void);
diff --git a/arch/x86/kernel/check.c b/arch/x86/kernel/check.c
index 1979a76bfadd..5136e6818da8 100644
--- a/arch/x86/kernel/check.c
+++ b/arch/x86/kernel/check.c
@@ -9,6 +9,7 @@
9#include <linux/memblock.h> 9#include <linux/memblock.h>
10 10
11#include <asm/proto.h> 11#include <asm/proto.h>
12#include <asm/setup.h>
12 13
13/* 14/*
14 * Some BIOSes seem to corrupt the low 64k of memory during events 15 * Some BIOSes seem to corrupt the low 64k of memory during events
@@ -136,7 +137,7 @@ void __init setup_bios_corruption_check(void)
136} 137}
137 138
138 139
139void check_for_bios_corruption(void) 140static void check_for_bios_corruption(void)
140{ 141{
141 int i; 142 int i;
142 int corruption = 0; 143 int corruption = 0;
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index f631a3f15587..c8b07d8ea5a2 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -37,6 +37,7 @@
37#include <asm/reboot.h> 37#include <asm/reboot.h>
38#include <asm/virtext.h> 38#include <asm/virtext.h>
39#include <asm/intel_pt.h> 39#include <asm/intel_pt.h>
40#include <asm/crash.h>
40 41
41/* Used while preparing memory map entries for second kernel */ 42/* Used while preparing memory map entries for second kernel */
42struct crash_memmap_data { 43struct crash_memmap_data {
diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index 7299dcbf8e85..8d85e00bb40a 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -23,6 +23,7 @@
23#include <asm/pci_x86.h> 23#include <asm/pci_x86.h>
24#include <asm/setup.h> 24#include <asm/setup.h>
25#include <asm/i8259.h> 25#include <asm/i8259.h>
26#include <asm/prom.h>
26 27
27__initdata u64 initial_dtb; 28__initdata u64 initial_dtb;
28char __initdata cmd_line[COMMAND_LINE_SIZE]; 29char __initdata cmd_line[COMMAND_LINE_SIZE];
diff --git a/arch/x86/kernel/jailhouse.c b/arch/x86/kernel/jailhouse.c
index 108c48d0d40e..1b2ee55a2dfb 100644
--- a/arch/x86/kernel/jailhouse.c
+++ b/arch/x86/kernel/jailhouse.c
@@ -19,6 +19,7 @@
19#include <asm/pci_x86.h> 19#include <asm/pci_x86.h>
20#include <asm/reboot.h> 20#include <asm/reboot.h>
21#include <asm/setup.h> 21#include <asm/setup.h>
22#include <asm/jailhouse_para.h>
22 23
23static __initdata struct jailhouse_setup_data setup_data; 24static __initdata struct jailhouse_setup_data setup_data;
24static unsigned int precalibrated_tsc_khz; 25static unsigned int precalibrated_tsc_khz;
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index 3c3ee8982577..b7cb5348f37f 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -22,6 +22,8 @@
22#include <linux/utsname.h> 22#include <linux/utsname.h>
23#include <linux/stackprotector.h> 23#include <linux/stackprotector.h>
24#include <linux/cpuidle.h> 24#include <linux/cpuidle.h>
25#include <linux/acpi.h>
26#include <linux/elf-randomize.h>
25#include <trace/events/power.h> 27#include <trace/events/power.h>
26#include <linux/hw_breakpoint.h> 28#include <linux/hw_breakpoint.h>
27#include <asm/cpu.h> 29#include <asm/cpu.h>
@@ -39,6 +41,7 @@
39#include <asm/desc.h> 41#include <asm/desc.h>
40#include <asm/prctl.h> 42#include <asm/prctl.h>
41#include <asm/spec-ctrl.h> 43#include <asm/spec-ctrl.h>
44#include <asm/proto.h>
42 45
43/* 46/*
44 * per-CPU TSS segments. Threads are completely 'soft' on Linux, 47 * per-CPU TSS segments. Threads are completely 'soft' on Linux,
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index 736348ead421..8451f38ad399 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -7,6 +7,7 @@
7#include <linux/irq.h> 7#include <linux/irq.h>
8 8
9#include <asm/hpet.h> 9#include <asm/hpet.h>
10#include <asm/setup.h>
10 11
11#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI) 12#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI)
12 13
diff --git a/arch/x86/kernel/tracepoint.c b/arch/x86/kernel/tracepoint.c
index 5bd30c442794..2e85f4dcf77b 100644
--- a/arch/x86/kernel/tracepoint.c
+++ b/arch/x86/kernel/tracepoint.c
@@ -10,6 +10,7 @@
10 10
11#include <asm/hw_irq.h> 11#include <asm/hw_irq.h>
12#include <asm/desc.h> 12#include <asm/desc.h>
13#include <asm/trace/exceptions.h>
13 14
14DEFINE_STATIC_KEY_FALSE(trace_pagefault_key); 15DEFINE_STATIC_KEY_FALSE(trace_pagefault_key);
15 16
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index a397907e8d72..182d669cc918 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -420,6 +420,9 @@ enum {
420}; 420};
421 421
422void arch_ftrace_update_code(int command); 422void arch_ftrace_update_code(int command);
423void arch_ftrace_update_trampoline(struct ftrace_ops *ops);
424void *arch_ftrace_trampoline_func(struct ftrace_ops *ops, struct dyn_ftrace *rec);
425void arch_ftrace_trampoline_free(struct ftrace_ops *ops);
423 426
424struct ftrace_rec_iter; 427struct ftrace_rec_iter;
425 428
diff --git a/include/linux/kexec.h b/include/linux/kexec.h
index 9e4e638fb505..53efedae3d5b 100644
--- a/include/linux/kexec.h
+++ b/include/linux/kexec.h
@@ -174,6 +174,7 @@ int kexec_purgatory_get_set_symbol(struct kimage *image, const char *name,
174 bool get_value); 174 bool get_value);
175void *kexec_purgatory_get_symbol_addr(struct kimage *image, const char *name); 175void *kexec_purgatory_get_symbol_addr(struct kimage *image, const char *name);
176 176
177void * __weak arch_kexec_kernel_image_load(struct kimage *image);
177int __weak arch_kexec_apply_relocations_add(struct purgatory_info *pi, 178int __weak arch_kexec_apply_relocations_add(struct purgatory_info *pi,
178 Elf_Shdr *section, 179 Elf_Shdr *section,
179 const Elf_Shdr *relsec, 180 const Elf_Shdr *relsec,
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
index b9cd9ebdf9b9..a713e5d156d8 100644
--- a/include/linux/of_fdt.h
+++ b/include/linux/of_fdt.h
@@ -76,6 +76,7 @@ extern int early_init_dt_scan_memory(unsigned long node, const char *uname,
76extern int early_init_dt_scan_chosen_stdout(void); 76extern int early_init_dt_scan_chosen_stdout(void);
77extern void early_init_fdt_scan_reserved_mem(void); 77extern void early_init_fdt_scan_reserved_mem(void);
78extern void early_init_fdt_reserve_self(void); 78extern void early_init_fdt_reserve_self(void);
79extern void __init early_init_dt_scan_chosen_arch(unsigned long node);
79extern void early_init_dt_add_memory_arch(u64 base, u64 size); 80extern void early_init_dt_add_memory_arch(u64 base, u64 size);
80extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size); 81extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size);
81extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size, 82extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size,
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
index 6c2ffed907f5..a37d7c00da65 100644
--- a/include/linux/ptrace.h
+++ b/include/linux/ptrace.h
@@ -428,4 +428,5 @@ extern int task_current_syscall(struct task_struct *target, long *callno,
428 unsigned long args[6], unsigned int maxargs, 428 unsigned long args[6], unsigned int maxargs,
429 unsigned long *sp, unsigned long *pc); 429 unsigned long *sp, unsigned long *pc);
430 430
431extern void sigaction_compat_abi(struct k_sigaction *act, struct k_sigaction *oact);
431#endif 432#endif