Commit 312a4661 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 cleanups from Ingo Molnar:
 "Misc cleanups"

* 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/kprobes: Remove trampoline_handler() prototype
  x86/kernel: Fix more -Wmissing-prototypes warnings
  x86: Fix various typos in comments
  x86/headers: Fix -Wmissing-prototypes warning
  x86/process: Avoid unnecessary NULL check in get_wchan()
  x86/traps: Complete prototype declarations
  x86/mce: Fix -Wmissing-prototypes warnings
  x86/gart: Rewrite early_gart_iommu_check() comment
parents 6e54df00 4b1bacab
/* /*
* Glue Code for the AVX assembler implemention of the Cast5 Cipher * Glue Code for the AVX assembler implementation of the Cast5 Cipher
* *
* Copyright (C) 2012 Johannes Goetzfried * Copyright (C) 2012 Johannes Goetzfried
* <Johannes.Goetzfried@informatik.stud.uni-erlangen.de> * <Johannes.Goetzfried@informatik.stud.uni-erlangen.de>
......
/* /*
* Glue Code for the AVX assembler implemention of the Cast6 Cipher * Glue Code for the AVX assembler implementation of the Cast6 Cipher
* *
* Copyright (C) 2012 Johannes Goetzfried * Copyright (C) 2012 Johannes Goetzfried
* <Johannes.Goetzfried@informatik.stud.uni-erlangen.de> * <Johannes.Goetzfried@informatik.stud.uni-erlangen.de>
......
...@@ -140,7 +140,7 @@ static void exit_to_usermode_loop(struct pt_regs *regs, u32 cached_flags) ...@@ -140,7 +140,7 @@ static void exit_to_usermode_loop(struct pt_regs *regs, u32 cached_flags)
/* /*
* In order to return to user mode, we need to have IRQs off with * In order to return to user mode, we need to have IRQs off with
* none of EXIT_TO_USERMODE_LOOP_FLAGS set. Several of these flags * none of EXIT_TO_USERMODE_LOOP_FLAGS set. Several of these flags
* can be set at any time on preemptable kernels if we have IRQs on, * can be set at any time on preemptible kernels if we have IRQs on,
* so we need to loop. Disabling preemption wouldn't help: doing the * so we need to loop. Disabling preemption wouldn't help: doing the
* work to clear some of the flags can sleep. * work to clear some of the flags can sleep.
*/ */
......
...@@ -261,7 +261,7 @@ int map_vdso_once(const struct vdso_image *image, unsigned long addr) ...@@ -261,7 +261,7 @@ int map_vdso_once(const struct vdso_image *image, unsigned long addr)
* abusing from userspace install_speciall_mapping, which may * abusing from userspace install_speciall_mapping, which may
* not do accounting and rlimit right. * not do accounting and rlimit right.
* We could search vma near context.vdso, but it's a slowpath, * We could search vma near context.vdso, but it's a slowpath,
* so let's explicitely check all VMAs to be completely sure. * so let's explicitly check all VMAs to be completely sure.
*/ */
for (vma = mm->mmap; vma; vma = vma->vm_next) { for (vma = mm->mmap; vma; vma = vma->vm_next) {
if (vma_is_special_mapping(vma, &vdso_mapping) || if (vma_is_special_mapping(vma, &vdso_mapping) ||
......
...@@ -589,7 +589,7 @@ static __init int bts_init(void) ...@@ -589,7 +589,7 @@ static __init int bts_init(void)
* the AUX buffer. * the AUX buffer.
* *
* However, since this driver supports per-CPU and per-task inherit * However, since this driver supports per-CPU and per-task inherit
* we cannot use the user mapping since it will not be availble * we cannot use the user mapping since it will not be available
* if we're not running the owning process. * if we're not running the owning process.
* *
* With PTI we can't use the kernal map either, because its not * With PTI we can't use the kernal map either, because its not
......
...@@ -1930,7 +1930,7 @@ static void intel_pmu_enable_all(int added) ...@@ -1930,7 +1930,7 @@ static void intel_pmu_enable_all(int added)
* in sequence on the same PMC or on different PMCs. * in sequence on the same PMC or on different PMCs.
* *
* In practise it appears some of these events do in fact count, and * In practise it appears some of these events do in fact count, and
* we need to programm all 4 events. * we need to program all 4 events.
*/ */
static void intel_pmu_nhm_workaround(void) static void intel_pmu_nhm_workaround(void)
{ {
......
...@@ -1199,7 +1199,7 @@ static void setup_pebs_sample_data(struct perf_event *event, ...@@ -1199,7 +1199,7 @@ static void setup_pebs_sample_data(struct perf_event *event,
/* /*
* We must however always use iregs for the unwinder to stay sane; the * We must however always use iregs for the unwinder to stay sane; the
* record BP,SP,IP can point into thin air when the record is from a * record BP,SP,IP can point into thin air when the record is from a
* previous PMI context or an (I)RET happend between the record and * previous PMI context or an (I)RET happened between the record and
* PMI. * PMI.
*/ */
if (sample_type & PERF_SAMPLE_CALLCHAIN) if (sample_type & PERF_SAMPLE_CALLCHAIN)
......
...@@ -1259,7 +1259,7 @@ static int p4_pmu_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign ...@@ -1259,7 +1259,7 @@ static int p4_pmu_schedule_events(struct cpu_hw_events *cpuc, int n, int *assign
} }
/* /*
* Perf does test runs to see if a whole group can be assigned * Perf does test runs to see if a whole group can be assigned
* together succesfully. There can be multiple rounds of this. * together successfully. There can be multiple rounds of this.
* Unfortunately, p4_pmu_swap_config_ts touches the hwc->config * Unfortunately, p4_pmu_swap_config_ts touches the hwc->config
* bits, such that the next round of group assignments will * bits, such that the next round of group assignments will
* cause the above p4_should_swap_ts to pass instead of fail. * cause the above p4_should_swap_ts to pass instead of fail.
......
...@@ -174,7 +174,7 @@ static inline int alternatives_text_reserved(void *start, void *end) ...@@ -174,7 +174,7 @@ static inline int alternatives_text_reserved(void *start, void *end)
/* /*
* Alternative inline assembly with input. * Alternative inline assembly with input.
* *
* Pecularities: * Peculiarities:
* No memory clobber here. * No memory clobber here.
* Argument numbers start with 1. * Argument numbers start with 1.
* Best is to use constraints that are fixed size (like (%1) ... "r") * Best is to use constraints that are fixed size (like (%1) ... "r")
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include <asm/alternative.h> /* Provides LOCK_PREFIX */ #include <asm/alternative.h> /* Provides LOCK_PREFIX */
/* /*
* Non-existant functions to indicate usage errors at link time * Non-existent functions to indicate usage errors at link time
* (or compile-time if the compiler implements __compiletime_error(). * (or compile-time if the compiler implements __compiletime_error().
*/ */
extern void __xchg_wrong_size(void) extern void __xchg_wrong_size(void)
......
...@@ -6,5 +6,6 @@ int crash_load_segments(struct kimage *image); ...@@ -6,5 +6,6 @@ int crash_load_segments(struct kimage *image);
int crash_copy_backup_region(struct kimage *image); int crash_copy_backup_region(struct kimage *image);
int crash_setup_memmap_entries(struct kimage *image, int crash_setup_memmap_entries(struct kimage *image,
struct boot_params *params); struct boot_params *params);
void crash_smp_send_stop(void);
#endif /* _ASM_X86_CRASH_H */ #endif /* _ASM_X86_CRASH_H */
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
* This is the main reason why we're doing stable VA mappings for RT * This is the main reason why we're doing stable VA mappings for RT
* services. * services.
* *
* This flag is used in conjuction with a chicken bit called * This flag is used in conjunction with a chicken bit called
* "efi=old_map" which can be used as a fallback to the old runtime * "efi=old_map" which can be used as a fallback to the old runtime
* services mapping method in case there's some b0rkage with a * services mapping method in case there's some b0rkage with a
* particular EFI implementation (haha, it is hard to hold up the * particular EFI implementation (haha, it is hard to hold up the
......
...@@ -30,6 +30,9 @@ extern void fixup_irqs(void); ...@@ -30,6 +30,9 @@ extern void fixup_irqs(void);
#ifdef CONFIG_HAVE_KVM #ifdef CONFIG_HAVE_KVM
extern void kvm_set_posted_intr_wakeup_handler(void (*handler)(void)); extern void kvm_set_posted_intr_wakeup_handler(void (*handler)(void));
extern __visible void smp_kvm_posted_intr_ipi(struct pt_regs *regs);
extern __visible void smp_kvm_posted_intr_wakeup_ipi(struct pt_regs *regs);
extern __visible void smp_kvm_posted_intr_nested_ipi(struct pt_regs *regs);
#endif #endif
extern void (*x86_platform_ipi_callback)(void); extern void (*x86_platform_ipi_callback)(void);
...@@ -41,9 +44,13 @@ extern __visible unsigned int do_IRQ(struct pt_regs *regs); ...@@ -41,9 +44,13 @@ extern __visible unsigned int do_IRQ(struct pt_regs *regs);
extern void init_ISA_irqs(void); extern void init_ISA_irqs(void);
extern void __init init_IRQ(void);
#ifdef CONFIG_X86_LOCAL_APIC #ifdef CONFIG_X86_LOCAL_APIC
void arch_trigger_cpumask_backtrace(const struct cpumask *mask, void arch_trigger_cpumask_backtrace(const struct cpumask *mask,
bool exclude_self); bool exclude_self);
extern __visible void smp_x86_platform_ipi(struct pt_regs *regs);
#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace #define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
#endif #endif
......
...@@ -10,6 +10,7 @@ static inline bool arch_irq_work_has_interrupt(void) ...@@ -10,6 +10,7 @@ static inline bool arch_irq_work_has_interrupt(void)
return boot_cpu_has(X86_FEATURE_APIC); return boot_cpu_has(X86_FEATURE_APIC);
} }
extern void arch_irq_work_raise(void); extern void arch_irq_work_raise(void);
extern __visible void smp_irq_work_interrupt(struct pt_regs *regs);
#else #else
static inline bool arch_irq_work_has_interrupt(void) static inline bool arch_irq_work_has_interrupt(void)
{ {
......
...@@ -92,6 +92,7 @@ void kvm_async_pf_task_wait(u32 token, int interrupt_kernel); ...@@ -92,6 +92,7 @@ void kvm_async_pf_task_wait(u32 token, int interrupt_kernel);
void kvm_async_pf_task_wake(u32 token); void kvm_async_pf_task_wake(u32 token);
u32 kvm_read_and_reset_pf_reason(void); u32 kvm_read_and_reset_pf_reason(void);
extern void kvm_disable_steal_time(void); extern void kvm_disable_steal_time(void);
void do_async_page_fault(struct pt_regs *regs, unsigned long error_code);
#ifdef CONFIG_PARAVIRT_SPINLOCKS #ifdef CONFIG_PARAVIRT_SPINLOCKS
void __init kvm_spinlock_init(void); void __init kvm_spinlock_init(void);
......
...@@ -26,6 +26,11 @@ struct static_key; ...@@ -26,6 +26,11 @@ struct static_key;
extern struct static_key paravirt_steal_enabled; extern struct static_key paravirt_steal_enabled;
extern struct static_key paravirt_steal_rq_enabled; extern struct static_key paravirt_steal_rq_enabled;
__visible void __native_queued_spin_unlock(struct qspinlock *lock);
bool pv_is_native_spin_unlock(void);
__visible bool __native_vcpu_is_preempted(long cpu);
bool pv_is_native_vcpu_is_preempted(void);
static inline u64 paravirt_steal_clock(int cpu) static inline u64 paravirt_steal_clock(int cpu)
{ {
return PVOP_CALL1(u64, time.steal_clock, cpu); return PVOP_CALL1(u64, time.steal_clock, cpu);
......
...@@ -26,6 +26,7 @@ void __noreturn machine_real_restart(unsigned int type); ...@@ -26,6 +26,7 @@ void __noreturn machine_real_restart(unsigned int type);
#define MRR_APM 1 #define MRR_APM 1
typedef void (*nmi_shootdown_cb)(int, struct pt_regs*); typedef void (*nmi_shootdown_cb)(int, struct pt_regs*);
void nmi_panic_self_stop(struct pt_regs *regs);
void nmi_shootdown_cpus(nmi_shootdown_cb callback); void nmi_shootdown_cpus(nmi_shootdown_cb callback);
void run_crash_ipi_callback(struct pt_regs *regs); void run_crash_ipi_callback(struct pt_regs *regs);
......
...@@ -46,6 +46,9 @@ extern unsigned long saved_video_mode; ...@@ -46,6 +46,9 @@ extern unsigned long saved_video_mode;
extern void reserve_standard_io_resources(void); extern void reserve_standard_io_resources(void);
extern void i386_reserve_resources(void); extern void i386_reserve_resources(void);
extern unsigned long __startup_64(unsigned long physaddr, struct boot_params *bp);
extern unsigned long __startup_secondary_64(void);
extern int early_make_pgtable(unsigned long address);
#ifdef CONFIG_X86_INTEL_MID #ifdef CONFIG_X86_INTEL_MID
extern void x86_intel_mid_early_setup(void); extern void x86_intel_mid_early_setup(void);
......
...@@ -17,4 +17,9 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where); ...@@ -17,4 +17,9 @@ void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
int setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, int setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate,
struct pt_regs *regs, unsigned long mask); struct pt_regs *regs, unsigned long mask);
#ifdef CONFIG_X86_X32_ABI
asmlinkage long sys32_x32_rt_sigreturn(void);
#endif
#endif /* _ASM_X86_SIGHANDLING_H */ #endif /* _ASM_X86_SIGHANDLING_H */
...@@ -148,6 +148,12 @@ void x86_idle_thread_init(unsigned int cpu, struct task_struct *idle); ...@@ -148,6 +148,12 @@ void x86_idle_thread_init(unsigned int cpu, struct task_struct *idle);
void smp_store_boot_cpu_info(void); void smp_store_boot_cpu_info(void);
void smp_store_cpu_info(int id); void smp_store_cpu_info(int id);
asmlinkage __visible void smp_reboot_interrupt(void);
__visible void smp_reschedule_interrupt(struct pt_regs *regs);
__visible void smp_call_function_interrupt(struct pt_regs *regs);
__visible void smp_call_function_single_interrupt(struct pt_regs *r);
#define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu) #define cpu_physical_id(cpu) per_cpu(x86_cpu_to_apicid, cpu)
#define cpu_acpi_id(cpu) per_cpu(x86_cpu_to_acpiid, cpu) #define cpu_acpi_id(cpu) per_cpu(x86_cpu_to_acpiid, cpu)
......
...@@ -45,6 +45,7 @@ DEFINE_PAGE_FAULT_EVENT(page_fault_user); ...@@ -45,6 +45,7 @@ DEFINE_PAGE_FAULT_EVENT(page_fault_user);
DEFINE_PAGE_FAULT_EVENT(page_fault_kernel); DEFINE_PAGE_FAULT_EVENT(page_fault_kernel);
#undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_PATH
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_PATH . #define TRACE_INCLUDE_PATH .
#define TRACE_INCLUDE_FILE exceptions #define TRACE_INCLUDE_FILE exceptions
#endif /* _TRACE_PAGE_FAULT_H */ #endif /* _TRACE_PAGE_FAULT_H */
......
...@@ -389,6 +389,7 @@ TRACE_EVENT(vector_free_moved, ...@@ -389,6 +389,7 @@ TRACE_EVENT(vector_free_moved,
#endif /* CONFIG_X86_LOCAL_APIC */ #endif /* CONFIG_X86_LOCAL_APIC */
#undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_PATH
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_PATH . #define TRACE_INCLUDE_PATH .
#define TRACE_INCLUDE_FILE irq_vectors #define TRACE_INCLUDE_FILE irq_vectors
#endif /* _TRACE_IRQ_VECTORS_H */ #endif /* _TRACE_IRQ_VECTORS_H */
......
...@@ -61,34 +61,38 @@ asmlinkage void xen_machine_check(void); ...@@ -61,34 +61,38 @@ asmlinkage void xen_machine_check(void);
asmlinkage void xen_simd_coprocessor_error(void); asmlinkage void xen_simd_coprocessor_error(void);
#endif #endif
dotraplinkage void do_divide_error(struct pt_regs *, long); dotraplinkage void do_divide_error(struct pt_regs *regs, long error_code);
dotraplinkage void do_debug(struct pt_regs *, long); dotraplinkage void do_debug(struct pt_regs *regs, long error_code);
dotraplinkage void do_nmi(struct pt_regs *, long); dotraplinkage void do_nmi(struct pt_regs *regs, long error_code);
dotraplinkage void do_int3(struct pt_regs *, long); dotraplinkage void do_int3(struct pt_regs *regs, long error_code);
dotraplinkage void do_overflow(struct pt_regs *, long); dotraplinkage void do_overflow(struct pt_regs *regs, long error_code);
dotraplinkage void do_bounds(struct pt_regs *, long); dotraplinkage void do_bounds(struct pt_regs *regs, long error_code);
dotraplinkage void do_invalid_op(struct pt_regs *, long); dotraplinkage void do_invalid_op(struct pt_regs *regs, long error_code);
dotraplinkage void do_device_not_available(struct pt_regs *, long); dotraplinkage void do_device_not_available(struct pt_regs *regs, long error_code);
dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *, long); dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *regs, long error_code);
dotraplinkage void do_invalid_TSS(struct pt_regs *, long); dotraplinkage void do_invalid_TSS(struct pt_regs *regs, long error_code);
dotraplinkage void do_segment_not_present(struct pt_regs *, long); dotraplinkage void do_segment_not_present(struct pt_regs *regs, long error_code);
dotraplinkage void do_stack_segment(struct pt_regs *, long); dotraplinkage void do_stack_segment(struct pt_regs *regs, long error_code);
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
dotraplinkage void do_double_fault(struct pt_regs *, long); dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code);
asmlinkage __visible notrace struct pt_regs *sync_regs(struct pt_regs *eregs);
asmlinkage __visible notrace
struct bad_iret_stack *fixup_bad_iret(struct bad_iret_stack *s);
void __init trap_init(void);
#endif #endif
dotraplinkage void do_general_protection(struct pt_regs *, long); dotraplinkage void do_general_protection(struct pt_regs *regs, long error_code);
dotraplinkage void do_page_fault(struct pt_regs *, unsigned long); dotraplinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code);
dotraplinkage void do_spurious_interrupt_bug(struct pt_regs *, long); dotraplinkage void do_spurious_interrupt_bug(struct pt_regs *regs, long error_code);
dotraplinkage void do_coprocessor_error(struct pt_regs *, long); dotraplinkage void do_coprocessor_error(struct pt_regs *regs, long error_code);
dotraplinkage void do_alignment_check(struct pt_regs *, long); dotraplinkage void do_alignment_check(struct pt_regs *regs, long error_code);
#ifdef CONFIG_X86_MCE #ifdef CONFIG_X86_MCE
dotraplinkage void do_machine_check(struct pt_regs *, long); dotraplinkage void do_machine_check(struct pt_regs *regs, long error_code);
#endif #endif
dotraplinkage void do_simd_coprocessor_error(struct pt_regs *, long); dotraplinkage void do_simd_coprocessor_error(struct pt_regs *regs, long error_code);
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
dotraplinkage void do_iret_error(struct pt_regs *, long); dotraplinkage void do_iret_error(struct pt_regs *regs, long error_code);
#endif #endif
dotraplinkage void do_mce(struct pt_regs *, long); dotraplinkage void do_mce(struct pt_regs *regs, long error_code);
static inline int get_si_code(unsigned long condition) static inline int get_si_code(unsigned long condition)
{ {
...@@ -104,11 +108,16 @@ extern int panic_on_unrecovered_nmi; ...@@ -104,11 +108,16 @@ extern int panic_on_unrecovered_nmi;
void math_emulate(struct math_emu_info *); void math_emulate(struct math_emu_info *);
#ifndef CONFIG_X86_32 #ifndef CONFIG_X86_32
asmlinkage void smp_thermal_interrupt(void); asmlinkage void smp_thermal_interrupt(struct pt_regs *regs);
asmlinkage void smp_threshold_interrupt(void); asmlinkage void smp_threshold_interrupt(struct pt_regs *regs);
asmlinkage void smp_deferred_error_interrupt(void); asmlinkage void smp_deferred_error_interrupt(struct pt_regs *regs);
#endif #endif
void smp_apic_timer_interrupt(struct pt_regs *regs);
void smp_spurious_interrupt(struct pt_regs *regs);
void smp_error_interrupt(struct pt_regs *regs);
asmlinkage void smp_irq_move_cleanup_interrupt(void);
extern void ist_enter(struct pt_regs *regs); extern void ist_enter(struct pt_regs *regs);
extern void ist_exit(struct pt_regs *regs); extern void ist_exit(struct pt_regs *regs);
extern void ist_begin_non_atomic(struct pt_regs *regs); extern void ist_begin_non_atomic(struct pt_regs *regs);
......
...@@ -35,6 +35,7 @@ extern struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns); ...@@ -35,6 +35,7 @@ extern struct system_counterval_t convert_art_ns_to_tsc(u64 art_ns);
extern void tsc_early_init(void); extern void tsc_early_init(void);
extern void tsc_init(void); extern void tsc_init(void);
extern unsigned long calibrate_delay_is_known(void);
extern void mark_tsc_unstable(char *reason); extern void mark_tsc_unstable(char *reason);
extern int unsynchronized_tsc(void); extern int unsynchronized_tsc(void);
extern int check_tsc_unstable(void); extern int check_tsc_unstable(void);
......
...@@ -848,7 +848,7 @@ EXPORT_SYMBOL(acpi_unregister_ioapic); ...@@ -848,7 +848,7 @@ EXPORT_SYMBOL(acpi_unregister_ioapic);
/** /**
* acpi_ioapic_registered - Check whether IOAPIC assoicatied with @gsi_base * acpi_ioapic_registered - Check whether IOAPIC assoicatied with @gsi_base
* has been registered * has been registered
* @handle: ACPI handle of the IOAPIC deivce * @handle: ACPI handle of the IOAPIC device
* @gsi_base: GSI base associated with the IOAPIC * @gsi_base: GSI base associated with the IOAPIC
* *
* Assume caller holds some type of lock to serialize acpi_ioapic_registered() * Assume caller holds some type of lock to serialize acpi_ioapic_registered()
......
...@@ -264,18 +264,23 @@ static int __init parse_gart_mem(char *p) ...@@ -264,18 +264,23 @@ static int __init parse_gart_mem(char *p)
} }
early_param("gart_fix_e820", parse_gart_mem); early_param("gart_fix_e820", parse_gart_mem);
/*
* With kexec/kdump, if the first kernel doesn't shut down the GART and the
* second kernel allocates a different GART region, there might be two
* overlapping GART regions present:
*
* - the first still used by the GART initialized in the first kernel.
* - (sub-)set of it used as normal RAM by the second kernel.
*
* which leads to memory corruptions and a kernel panic eventually.
*
* This can also happen if the BIOS has forgotten to mark the GART region
* as reserved.
*
* Try to update the e820 map to mark that new region as reserved.
*/
void __init early_gart_iommu_check(void) void __init early_gart_iommu_check(void)
{ {
/*
* in case it is enabled before, esp for kexec/kdump,
* previous kernel already enable that. memset called
* by allocate_aperture/__alloc_bootmem_nopanic cause restart.
* or second kernel have different position for GART hole. and new
* kernel could use hole as RAM that is still used by GART set by
* first kernel
* or BIOS forget to put that in reserved.
* try to update e820 to make that region as reserved.
*/
u32 agp_aper_order = 0; u32 agp_aper_order = 0;
int i, fix, slot, valid_agp = 0; int i, fix, slot, valid_agp = 0;
u32 ctl; u32 ctl;
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include <asm/mpspec.h> #include <asm/mpspec.h>
#include <asm/i8259.h> #include <asm/i8259.h>
#include <asm/proto.h> #include <asm/proto.h>
#include <asm/traps.h>
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/io_apic.h> #include <asm/io_apic.h>
#include <asm/desc.h> #include <asm/desc.h>
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
* Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and
* James Cleverdon. * James Cleverdon.
*/ */
#include <linux/acpi.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/threads.h> #include <linux/threads.h>
#include <linux/cpumask.h> #include <linux/cpumask.h>
...@@ -16,13 +17,13 @@ ...@@ -16,13 +17,13 @@
#include <linux/ctype.h> #include <linux/ctype.h>
#include <linux/hardirq.h> #include <linux/hardirq.h>
#include <linux/export.h> #include <linux/export.h>
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/apic.h>
#include <asm/ipi.h> #include <asm/ipi.h>
#include <asm/apic.h>
#include <asm/apic_flat_64.h>
#include <asm/jailhouse_para.h> #include <asm/jailhouse_para.h>
#include <linux/acpi.h>
static struct apic apic_physflat; static struct apic apic_physflat;
static struct apic apic_flat; static struct apic apic_flat;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <asm/irqdomain.h> #include <asm/irqdomain.h>
#include <asm/hw_irq.h> #include <asm/hw_irq.h>
#include <asm/traps.h>
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/i8259.h> #include <asm/i8259.h>
#include <asm/desc.h> #include <asm/desc.h>
......
...@@ -1079,7 +1079,7 @@ late_initcall(uv_init_heartbeat); ...@@ -1079,7 +1079,7 @@ late_initcall(uv_init_heartbeat);
#endif /* !CONFIG_HOTPLUG_CPU */ #endif /* !CONFIG_HOTPLUG_CPU */
/* Direct Legacy VGA I/O traffic to designated IOH */ /* Direct Legacy VGA I/O traffic to designated IOH */
int uv_set_vga_state(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags) static int uv_set_vga_state(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags)
{ {
int domain, bus, rc; int domain, bus, rc;
...@@ -1148,7 +1148,7 @@ static void get_mn(struct mn *mnp) ...@@ -1148,7 +1148,7 @@ static void get_mn(struct mn *mnp)
mnp->m_shift = mnp->m_val ? 64 - mnp->m_val : 0; mnp->m_shift = mnp->m_val ? 64 - mnp->m_val : 0;
} }
void __init uv_init_hub_info(struct uv_hub_info_s *hi) static void __init uv_init_hub_info(struct uv_hub_info_s *hi)
{ {
union uvh_node_id_u node_id; union uvh_node_id_u node_id;
struct mn mn; struct mn mn;
......
...@@ -29,7 +29,8 @@ ...@@ -29,7 +29,8 @@
# include "asm-offsets_64.c" # include "asm-offsets_64.c"
#endif #endif
void common(void) { static void __used common(void)
{
BLANK(); BLANK();
OFFSET(TASK_threadsp, task_struct, thread.sp); OFFSET(TASK_threadsp, task_struct, thread.sp);
#ifdef CONFIG_STACKPROTECTOR #ifdef CONFIG_STACKPROTECTOR
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <linux/memblock.h> #include <linux/memblock.h>
#include <asm/proto.h> #include <asm/proto.h>
#include <asm/setup.h>
/* /*
* Some BIOSes seem to corrupt the low 64k of memory during events * Some BIOSes seem to corrupt the low 64k of memory during events
...@@ -136,7 +137,7 @@ void __init setup_bios_corruption_check(void) ...@@ -136,7 +137,7 @@ void __init setup_bios_corruption_check(void)
} }
void check_for_bios_corruption(void) static void check_for_bios_corruption(void)
{ {
int i; int i;
int corruption = 0; int corruption = 0;
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/pci-direct.h> #include <asm/pci-direct.h>
#include <asm/delay.h> #include <asm/delay.h>
#include <asm/debugreg.h>
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
# include <asm/mmconfig.h> # include <asm/mmconfig.h>
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <linux/ktime.h> #include <linux/ktime.h>
#include <linux/math64.h> #include <linux/math64.h>
#include <linux/percpu.h> #include <linux/percpu.h>
#include <linux/cpufreq.h>
#include <linux/smp.h> #include <linux/smp.h>
#include "cpu.h" #include "cpu.h"
......
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#include <asm/e820/api.h> #include <asm/e820/api.h>
#include <asm/hypervisor.h> #include <asm/hypervisor.h>
#include "cpu.h"
static void __init spectre_v2_select_mitigation(void); static void __init spectre_v2_select_mitigation(void);
static void __init ssb_select_mitigation(void); static void __init ssb_select_mitigation(void);
static void __init l1tf_select_mitigation(void); static void __init l1tf_select_mitigation(void);
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <asm/cpufeature.h> #include <asm/cpufeature.h>
#include <asm/cacheinfo.h>
#include <asm/amd_nb.h> #include <asm/amd_nb.h>
#include <asm/smp.h> #include <asm/smp.h>
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <linux/string.h> #include <linux/string.h>
#include <asm/amd_nb.h> #include <asm/amd_nb.h>
#include <asm/traps.h>
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/mce.h> #include <asm/mce.h>
#include <asm/msr.h> #include <asm/msr.h>
...@@ -99,7 +100,7 @@ static u32 smca_bank_addrs[MAX_NR_BANKS][NR_BLOCKS] __ro_after_init = ...@@ -99,7 +100,7 @@ static u32 smca_bank_addrs[MAX_NR_BANKS][NR_BLOCKS] __ro_after_init =
[0 ... MAX_NR_BANKS - 1] = { [0 ... NR_BLOCKS - 1] = -1 } [0 ... MAX_NR_BANKS - 1] = { [0 ... NR_BLOCKS - 1] = -1 }
}; };
const char *smca_get_name(enum smca_bank_types t) static const char *smca_get_name(enum smca_bank_types t)
{ {
if (t >= N_SMCA_BANK_TYPES) if (t >= N_SMCA_BANK_TYPES)
return NULL; return NULL;
...@@ -824,7 +825,7 @@ static void __log_error(unsigned int bank, u64 status, u64 addr, u64 misc) ...@@ -824,7 +825,7 @@ static void __log_error(unsigned int bank, u64 status, u64 addr, u64 misc)
mce_log(&m); mce_log(&m);
} }
asmlinkage __visible void __irq_entry smp_deferred_error_interrupt(void) asmlinkage __visible void __irq_entry smp_deferred_error_interrupt(struct pt_regs *regs)
{ {
entering_irq(); entering_irq();
trace_deferred_error_apic_entry(DEFERRED_ERROR_VECTOR); trace_deferred_error_apic_entry(DEFERRED_ERROR_VECTOR);
......
...@@ -684,7 +684,7 @@ DEFINE_PER_CPU(unsigned, mce_poll_count); ...@@ -684,7 +684,7 @@ DEFINE_PER_CPU(unsigned, mce_poll_count);
* errors here. However this would be quite problematic -- * errors here. However this would be quite problematic --
* we would need to reimplement the Monarch handling and * we would need to reimplement the Monarch handling and
* it would mess up the exclusion between exception handler * it would mess up the exclusion between exception handler
* and poll hander -- * so we skip this for now. * and poll handler -- * so we skip this for now.
* These cases should not happen anyways, or only when the CPU * These cases should not happen anyways, or only when the CPU
* is already totally * confused. In this case it's likely it will * is already totally * confused. In this case it's likely it will
* not fully execute the machine check handler either. * not fully execute the machine check handler either.
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <linux/cpu.h> #include <linux/cpu.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/traps.h>
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/mce.h> #include <asm/mce.h>
#include <asm/msr.h> #include <asm/msr.h>
...@@ -392,7 +393,7 @@ static void unexpected_thermal_interrupt(void) ...@@ -392,7 +393,7 @@ static void unexpected_thermal_interrupt(void)
static void (*smp_thermal_vector)(void) = unexpected_thermal_interrupt; static void (*smp_thermal_vector)(void) = unexpected_thermal_interrupt;
asmlinkage __visible void __irq_entry smp_thermal_interrupt(struct pt_regs *r) asmlinkage __visible void __irq_entry smp_thermal_interrupt(struct pt_regs *regs)
{ {
entering_irq(); entering_irq();
trace_thermal_apic_entry(THERMAL_APIC_VECTOR); trace_thermal_apic_entry(THERMAL_APIC_VECTOR);
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <asm/irq_vectors.h> #include <asm/irq_vectors.h>
#include <asm/traps.h>
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/mce.h> #include <asm/mce.h>
#include <asm/trace/irq_vectors.h> #include <asm/trace/irq_vectors.h>
...@@ -20,7 +21,7 @@ static void default_threshold_interrupt(void) ...@@ -20,7 +21,7 @@ static void default_threshold_interrupt(void)
void (*mce_threshold_vector)(void) = default_threshold_interrupt; void (*mce_threshold_vector)(void) = default_threshold_interrupt;
asmlinkage __visible void __irq_entry smp_threshold_interrupt(void) asmlinkage __visible void __irq_entry smp_threshold_interrupt(struct pt_regs *regs)
{ {
entering_irq(); entering_irq();
trace_threshold_apic_entry(THRESHOLD_APIC_VECTOR); trace_threshold_apic_entry(THRESHOLD_APIC_VECTOR);
......
...@@ -5,9 +5,10 @@ ...@@ -5,9 +5,10 @@
#include <linux/cpu.h> #include <linux/cpu.h>
#include <asm/pat.h> #include <asm/pat.h>
#include <asm/apic.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/apic.h> #include "cpu.h"
struct cpuid_bit { struct cpuid_bit {
u16 feature; u16 feature;
......
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
#include <asm/pat.h> #include <asm/pat.h>
#include <asm/processor.h> #include <asm/processor.h>
#include "cpu.h"
/* leaf 0xb SMT level */ /* leaf 0xb SMT level */
#define SMT_LEVEL 0 #define SMT_LEVEL 0
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/virtext.h> #include <asm/virtext.h>
#include <asm/intel_pt.h> #include <asm/intel_pt.h>
#include <asm/crash.h>
/* Used while preparing memory map entries for second kernel */ /* Used while preparing memory map entries for second kernel */
struct crash_memmap_data { struct crash_memmap_data {
......
...@@ -62,7 +62,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf, size_t csize, ...@@ -62,7 +62,7 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf, size_t csize,
/** /**
* copy_oldmem_page_encrypted - same as copy_oldmem_page() above but ioremap the * copy_oldmem_page_encrypted - same as copy_oldmem_page() above but ioremap the
* memory with the encryption mask set to accomodate kdump on SME-enabled * memory with the encryption mask set to accommodate kdump on SME-enabled
* machines. * machines.
*/ */
ssize_t copy_oldmem_page_encrypted(unsigned long pfn, char *buf, size_t csize, ssize_t copy_oldmem_page_encrypted(unsigned long pfn, char *buf, size_t csize,
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <asm/pci_x86.h> #include <asm/pci_x86.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/i8259.h> #include <asm/i8259.h>
#include <asm/prom.h>
__initdata u64 initial_dtb; __initdata u64 initial_dtb;
char __initdata cmd_line[COMMAND_LINE_SIZE]; char __initdata cmd_line[COMMAND_LINE_SIZE];
......
...@@ -811,7 +811,7 @@ void fpu__resume_cpu(void) ...@@ -811,7 +811,7 @@ void fpu__resume_cpu(void)
* *
* Note: does not work for compacted buffers. * Note: does not work for compacted buffers.
*/ */
void *__raw_xsave_addr(struct xregs_state *xsave, int xstate_feature_mask) static void *__raw_xsave_addr(struct xregs_state *xsave, int xstate_feature_mask)
{ {
int feature_nr = fls64(xstate_feature_mask) - 1; int feature_nr = fls64(xstate_feature_mask) - 1;
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <asm/pci_x86.h> #include <asm/pci_x86.h>
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/jailhouse_para.h>
static __initdata struct jailhouse_setup_data setup_data; static __initdata struct jailhouse_setup_data setup_data;
static unsigned int precalibrated_tsc_khz; static unsigned int precalibrated_tsc_khz;
......
...@@ -751,7 +751,7 @@ STACK_FRAME_NON_STANDARD(kretprobe_trampoline); ...@@ -751,7 +751,7 @@ STACK_FRAME_NON_STANDARD(kretprobe_trampoline);
/* /*
* Called from kretprobe_trampoline * Called from kretprobe_trampoline
*/ */
__visible __used void *trampoline_handler(struct pt_regs *regs) static __used void *trampoline_handler(struct pt_regs *regs)
{ {
struct kretprobe_instance *ri = NULL; struct kretprobe_instance *ri = NULL;
struct hlist_head *head, empty_rp; struct hlist_head *head, empty_rp;
......
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
#include <linux/utsname.h> #include <linux/utsname.h>
#include <linux/stackprotector.h> #include <linux/stackprotector.h>
#include <linux/cpuidle.h> #include <linux/cpuidle.h>
#include <linux/acpi.h>
#include <linux/elf-randomize.h>
#include <trace/events/power.h> #include <trace/events/power.h>
#include <linux/hw_breakpoint.h> #include <linux/hw_breakpoint.h>
#include <asm/cpu.h> #include <asm/cpu.h>
...@@ -39,6 +41,7 @@ ...@@ -39,6 +41,7 @@
#include <asm/desc.h> #include <asm/desc.h>
#include <asm/prctl.h> #include <asm/prctl.h>
#include <asm/spec-ctrl.h> #include <asm/spec-ctrl.h>
#include <asm/proto.h>
#include "process.h" #include "process.h"
...@@ -793,7 +796,7 @@ unsigned long get_wchan(struct task_struct *p) ...@@ -793,7 +796,7 @@ unsigned long get_wchan(struct task_struct *p)
unsigned long start, bottom, top, sp, fp, ip, ret = 0; unsigned long start, bottom, top, sp, fp, ip, ret = 0;
int count = 0; int count = 0;
if (!p || p == current || p->state == TASK_RUNNING) if (p == current || p->state == TASK_RUNNING)
return 0; return 0;
if (!try_get_task_stack(p)) if (!try_get_task_stack(p))
......
...@@ -646,7 +646,7 @@ void set_personality_64bit(void) ...@@ -646,7 +646,7 @@ void set_personality_64bit(void)
/* TBD: overwrites user setup. Should have two bits. /* TBD: overwrites user setup. Should have two bits.
But 64bit processes have always behaved this way, But 64bit processes have always behaved this way,
so it's not too bad. The main problem is just that so it's not too bad. The main problem is just that
32bit childs are affected again. */ 32bit children are affected again. */
current->personality &= ~READ_IMPLIES_EXEC; current->personality &= ~READ_IMPLIES_EXEC;
} }
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/hpet.h> #include <asm/hpet.h>
#include <asm/setup.h>
#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI) #if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI)
......
...@@ -19,12 +19,15 @@ ...@@ -19,12 +19,15 @@
#include <linux/dmi.h> #include <linux/dmi.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/efi.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/screen_info.h> #include <linux/screen_info.h>
#include <video/vga.h> #include <video/vga.h>
#include <asm/efi.h>
#include <asm/sysfb.h> #include <asm/sysfb.h>
enum { enum {
......
...@@ -10,6 +10,8 @@ ...@@ -10,6 +10,8 @@
#include <asm/hw_irq.h> #include <asm/hw_irq.h>
#include <asm/desc.h> #include <asm/desc.h>
#include <asm/trace/exceptions.h>
#include <asm/trace/irq_vectors.h>
DEFINE_STATIC_KEY_FALSE(trace_pagefault_key); DEFINE_STATIC_KEY_FALSE(trace_pagefault_key);
......
...@@ -2494,7 +2494,7 @@ static __init int alloc_kvm_area(void) ...@@ -2494,7 +2494,7 @@ static __init int alloc_kvm_area(void)
* vmcs->revision_id to KVM_EVMCS_VERSION instead of * vmcs->revision_id to KVM_EVMCS_VERSION instead of
* revision_id reported by MSR_IA32_VMX_BASIC. * revision_id reported by MSR_IA32_VMX_BASIC.
* *
* However, even though not explictly documented by * However, even though not explicitly documented by
* TLFS, VMXArea passed as VMXON argument should * TLFS, VMXArea passed as VMXON argument should
* still be marked with revision_id reported by * still be marked with revision_id reported by
* physical CPU. * physical CPU.
......
...@@ -1712,7 +1712,7 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages, ...@@ -1712,7 +1712,7 @@ static int change_page_attr_set_clr(unsigned long *addr, int numpages,
} else if (!(in_flag & CPA_PAGES_ARRAY)) { } else if (!(in_flag & CPA_PAGES_ARRAY)) {
/* /*
* in_flag of CPA_PAGES_ARRAY implies it is aligned. * in_flag of CPA_PAGES_ARRAY implies it is aligned.
* No need to cehck in that case * No need to check in that case
*/ */
if (*addr & ~PAGE_MASK) { if (*addr & ~PAGE_MASK) {
*addr &= PAGE_MASK; *addr &= PAGE_MASK;
......
...@@ -84,7 +84,7 @@ static void ce4100_mem_serial_out(struct uart_port *p, int offset, int value) ...@@ -84,7 +84,7 @@ static void ce4100_mem_serial_out(struct uart_port *p, int offset, int value)
} }
static void ce4100_serial_fixup(int port, struct uart_port *up, static void ce4100_serial_fixup(int port, struct uart_port *up,
u32 *capabilites) u32 *capabilities)
{ {
#ifdef CONFIG_EARLY_PRINTK #ifdef CONFIG_EARLY_PRINTK
/* /*
...@@ -111,7 +111,7 @@ static void ce4100_serial_fixup(int port, struct uart_port *up, ...@@ -111,7 +111,7 @@ static void ce4100_serial_fixup(int port, struct uart_port *up,
up->serial_in = ce4100_mem_serial_in; up->serial_in = ce4100_mem_serial_in;
up->serial_out = ce4100_mem_serial_out; up->serial_out = ce4100_mem_serial_out;
*capabilites |= (1 << 12); *capabilities |= (1 << 12);
} }
static __init void sdv_serial_fixup(void) static __init void sdv_serial_fixup(void)
......
/* /*
* platform_bcm43xx.c: bcm43xx platform data initilization file * platform_bcm43xx.c: bcm43xx platform data initialization file
* *
* (C) Copyright 2016 Intel Corporation * (C) Copyright 2016 Intel Corporation
* Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com> * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
......
/* /*
* spidev platform data initilization file * spidev platform data initialization file
* *
* (C) Copyright 2014, 2016 Intel Corporation * (C) Copyright 2014, 2016 Intel Corporation
* Authors: Andy Shevchenko <andriy.shevchenko@linux.intel.com> * Authors: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
......
/* /*
* PCAL9555a platform data initilization file * PCAL9555a platform data initialization file
* *
* Copyright (C) 2016, Intel Corporation * Copyright (C) 2016, Intel Corporation
* *
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* *
* *
* The IOSF-SB is a fabric bus available on Atom based SOC's that uses a * The IOSF-SB is a fabric bus available on Atom based SOC's that uses a
* mailbox interface (MBI) to communicate with mutiple devices. This * mailbox interface (MBI) to communicate with multiple devices. This
* driver implements access to this interface for those platforms that can * driver implements access to this interface for those platforms that can
* enumerate the device using PCI. * enumerate the device using PCI.
*/ */
......
...@@ -109,7 +109,7 @@ static void detect_lid_state(void) ...@@ -109,7 +109,7 @@ static void detect_lid_state(void)
* the edge detector hookup on the gpio inputs on the geode is * the edge detector hookup on the gpio inputs on the geode is
* odd, to say the least. See http://dev.laptop.org/ticket/5703 * odd, to say the least. See http://dev.laptop.org/ticket/5703
* for details, but in a nutshell: we don't use the edge * for details, but in a nutshell: we don't use the edge
* detectors. instead, we make use of an anomoly: with the both * detectors. instead, we make use of an anomaly: with the both
* edge detectors turned off, we still get an edge event on a * edge detectors turned off, we still get an edge event on a
* positive edge transition. to take advantage of this, we use the * positive edge transition. to take advantage of this, we use the
* front-end inverter to ensure that that's the edge we're always * front-end inverter to ensure that that's the edge we're always
......
...@@ -560,7 +560,7 @@ static inline void uv_clear_nmi(int cpu) ...@@ -560,7 +560,7 @@ static inline void uv_clear_nmi(int cpu)
} }
} }
/* Ping non-responding CPU's attemping to force them into the NMI handler */ /* Ping non-responding CPU's attempting to force them into the NMI handler */
static void uv_nmi_nr_cpus_ping(void) static void uv_nmi_nr_cpus_ping(void)
{ {
int cpu; int cpu;
......
...@@ -493,7 +493,7 @@ static unsigned long __init xen_foreach_remap_area(unsigned long nr_pages, ...@@ -493,7 +493,7 @@ static unsigned long __init xen_foreach_remap_area(unsigned long nr_pages,
* The remap information (which mfn remap to which pfn) is contained in the * The remap information (which mfn remap to which pfn) is contained in the
* to be remapped memory itself in a linked list anchored at xen_remap_mfn. * to be remapped memory itself in a linked list anchored at xen_remap_mfn.
* This scheme allows to remap the different chunks in arbitrary order while * This scheme allows to remap the different chunks in arbitrary order while
* the resulting mapping will be independant from the order. * the resulting mapping will be independent from the order.
*/ */
void __init xen_remap_memory(void) void __init xen_remap_memory(void)
{ {
......
...@@ -142,5 +142,8 @@ extern int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls); ...@@ -142,5 +142,8 @@ extern int cppc_set_perf(int cpu, struct cppc_perf_ctrls *perf_ctrls);
extern int cppc_get_perf_caps(int cpu, struct cppc_perf_caps *caps); extern int cppc_get_perf_caps(int cpu, struct cppc_perf_caps *caps);
extern int acpi_get_psd_map(struct cppc_cpudata **); extern int acpi_get_psd_map(struct cppc_cpudata **);
extern unsigned int cppc_get_transition_latency(int cpu); extern unsigned int cppc_get_transition_latency(int cpu);
extern bool cpc_ffh_supported(void);
extern int cpc_read_ffh(int cpunum, struct cpc_reg *reg, u64 *val);
extern int cpc_write_ffh(int cpunum, struct cpc_reg *reg, u64 val);
#endif /* _CPPC_ACPI_H*/ #endif /* _CPPC_ACPI_H*/
...@@ -420,6 +420,9 @@ enum { ...@@ -420,6 +420,9 @@ enum {
}; };
void arch_ftrace_update_code(int command); void arch_ftrace_update_code(int command);
void arch_ftrace_update_trampoline(struct ftrace_ops *ops);
void *arch_ftrace_trampoline_func(struct ftrace_ops *ops, struct dyn_ftrace *rec);
void arch_ftrace_trampoline_free(struct ftrace_ops *ops);
struct ftrace_rec_iter; struct ftrace_rec_iter;
......
...@@ -183,6 +183,7 @@ int kexec_purgatory_get_set_symbol(struct kimage *image, const char *name, ...@@ -183,6 +183,7 @@ int kexec_purgatory_get_set_symbol(struct kimage *image, const char *name,
bool get_value); bool get_value);
void *kexec_purgatory_get_symbol_addr(struct kimage *image, const char *name); void *kexec_purgatory_get_symbol_addr(struct kimage *image, const char *name);
void * __weak arch_kexec_kernel_image_load(struct kimage *image);
int __weak arch_kexec_apply_relocations_add(struct purgatory_info *pi, int __weak arch_kexec_apply_relocations_add(struct purgatory_info *pi,
Elf_Shdr *section, Elf_Shdr *section,
const Elf_Shdr *relsec, const Elf_Shdr *relsec,
......
...@@ -382,6 +382,9 @@ int enable_kprobe(struct kprobe *kp); ...@@ -382,6 +382,9 @@ int enable_kprobe(struct kprobe *kp);
void dump_kprobe(struct kprobe *kp); void dump_kprobe(struct kprobe *kp);
void *alloc_insn_page(void);
void free_insn_page(void *page);
#else /* !CONFIG_KPROBES: */ #else /* !CONFIG_KPROBES: */
static inline int kprobes_built_in(void) static inline int kprobes_built_in(void)
......
...@@ -76,6 +76,7 @@ extern int early_init_dt_scan_memory(unsigned long node, const char *uname, ...@@ -76,6 +76,7 @@ extern int early_init_dt_scan_memory(unsigned long node, const char *uname,
extern int early_init_dt_scan_chosen_stdout(void); extern int early_init_dt_scan_chosen_stdout(void);
extern void early_init_fdt_scan_reserved_mem(void); extern void early_init_fdt_scan_reserved_mem(void);
extern void early_init_fdt_reserve_self(void); extern void early_init_fdt_reserve_self(void);
extern void __init early_init_dt_scan_chosen_arch(unsigned long node);
extern void early_init_dt_add_memory_arch(u64 base, u64 size); extern void early_init_dt_add_memory_arch(u64 base, u64 size);
extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size); extern int early_init_dt_mark_hotplug_memory_arch(u64 base, u64 size);
extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size, extern int early_init_dt_reserve_memory_arch(phys_addr_t base, phys_addr_t size,
......
...@@ -411,4 +411,5 @@ extern int task_current_syscall(struct task_struct *target, long *callno, ...@@ -411,4 +411,5 @@ extern int task_current_syscall(struct task_struct *target, long *callno,
unsigned long args[6], unsigned int maxargs, unsigned long args[6], unsigned int maxargs,
unsigned long *sp, unsigned long *pc); unsigned long *sp, unsigned long *pc);
extern void sigaction_compat_abi(struct k_sigaction *act, struct k_sigaction *oact);
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment