diff options
Diffstat (limited to 'arch/x86/kernel')
| -rw-r--r-- | arch/x86/kernel/amd_gart_64.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/x2apic_uv_x.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/apm_32.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mtrr/main.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/perf_event.c | 3 | ||||
| -rw-r--r-- | arch/x86/kernel/entry_32.S | 8 | ||||
| -rw-r--r-- | arch/x86/kernel/kprobes.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/pci-dma.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/process_32.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/rtc.c | 23 | ||||
| -rw-r--r-- | arch/x86/kernel/syscall_table_32.S | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/vsyscall_64.c | 2 | 
12 files changed, 26 insertions, 29 deletions
diff --git a/arch/x86/kernel/amd_gart_64.c b/arch/x86/kernel/amd_gart_64.c index 8a439d364b9..b1e7c7f7a0a 100644 --- a/arch/x86/kernel/amd_gart_64.c +++ b/arch/x86/kernel/amd_gart_64.c @@ -5,7 +5,7 @@   * This allows to use PCI devices that only support 32bit addresses on systems   * with more than 4GB.   * - * See Documentation/PCI/PCI-DMA-mapping.txt for the interface specification. + * See Documentation/DMA-API-HOWTO.txt for the interface specification.   *   * Copyright 2002 Andi Kleen, SuSE Labs.   * Subject to the GNU General Public License v2 only. diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c index adc66c3a1fe..34b18594e72 100644 --- a/arch/x86/kernel/apic/x2apic_uv_x.c +++ b/arch/x86/kernel/apic/x2apic_uv_x.c @@ -207,7 +207,6 @@ static int __cpuinit uv_wakeup_secondary(int phys_apicid, unsigned long start_ri  	    ((start_rip << UVH_IPI_INT_VECTOR_SHFT) >> 12) |  	    APIC_DM_INIT;  	uv_write_global_mmr64(pnode, UVH_IPI_INT, val); -	mdelay(10);  	val = (1UL << UVH_IPI_INT_SEND_SHFT) |  	    (phys_apicid << UVH_IPI_INT_APIC_ID_SHFT) | diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c index 0371c484bb8..a46bd383953 100644 --- a/arch/x86/kernel/apm_32.c +++ b/arch/x86/kernel/apm_32.c @@ -249,8 +249,6 @@ extern int (*console_blank_hook)(int);  #define	APM_MINOR_DEV	134  /* - * See Documentation/Config.help for the configuration options. - *   * Various options can be changed at boot time as follows:   * (We allow underscores for compatibility with the modules code)   *	apm=on/off			enable/disable APM diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c index 08119a37e53..6b96110bb0c 100644 --- a/arch/x86/kernel/cpu/mtrr/main.c +++ b/arch/x86/kernel/cpu/mtrr/main.c @@ -149,7 +149,6 @@ struct set_mtrr_data {   */  static int mtrr_rendezvous_handler(void *info)  { -#ifdef CONFIG_SMP  	struct set_mtrr_data *data = info;  	/* @@ -171,7 +170,6 @@ static int mtrr_rendezvous_handler(void *info)  	} else if (mtrr_aps_delayed_init || !cpu_online(smp_processor_id())) {  		mtrr_if->set_all();  	} -#endif  	return 0;  } diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c index 4ee3abf20ed..cfa62ec090e 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c @@ -1900,6 +1900,9 @@ perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs)  	perf_callchain_store(entry, regs->ip); +	if (!current->mm) +		return; +  	if (perf_callchain_user32(regs, entry))  		return; diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 5c1a9197491..f3f6f534400 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S @@ -54,6 +54,7 @@  #include <asm/ftrace.h>  #include <asm/irq_vectors.h>  #include <asm/cpufeature.h> +#include <asm/alternative-asm.h>  /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this.  */  #include <linux/elf-em.h> @@ -873,12 +874,7 @@ ENTRY(simd_coprocessor_error)  661:	pushl_cfi $do_general_protection  662:  .section .altinstructions,"a" -	.balign 4 -	.long 661b -	.long 663f -	.word X86_FEATURE_XMM -	.byte 662b-661b -	.byte 664f-663f +	altinstruction_entry 661b, 663f, X86_FEATURE_XMM, 662b-661b, 664f-663f  .previous  .section .altinstr_replacement,"ax"  663:	pushl $do_simd_coprocessor_error diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c index f1a6244d7d9..794bc95134c 100644 --- a/arch/x86/kernel/kprobes.c +++ b/arch/x86/kernel/kprobes.c @@ -75,8 +75,10 @@ DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);  	/*  	 * Undefined/reserved opcodes, conditional jump, Opcode Extension  	 * Groups, and some special opcodes can not boost. +	 * This is non-const to keep gcc from statically optimizing it out, as +	 * variable_test_bit makes gcc think only *(unsigned long*) is used.  	 */ -static const u32 twobyte_is_boostable[256 / 32] = { +static u32 twobyte_is_boostable[256 / 32] = {  	/*      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f          */  	/*      ----------------------------------------------          */  	W(0x00, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0) | /* 00 */ diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c index b49d00da2ae..622872054fb 100644 --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c @@ -117,8 +117,8 @@ again:  }  /* - * See <Documentation/x86_64/boot-options.txt> for the iommu kernel parameter - * documentation. + * See <Documentation/x86/x86_64/boot-options.txt> for the iommu kernel + * parameter documentation.   */  static __init int iommu_setup(char *p)  { diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 7a3b65107a2..2196c703c5e 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c @@ -262,7 +262,7 @@ EXPORT_SYMBOL_GPL(start_thread);  /* - *	switch_to(x,yn) should switch tasks from x to y. + *	switch_to(x,y) should switch tasks from x to y.   *   * We fsave/fwait so that an exception goes off at the right time   * (as a call from the fsave or fwait in effect) rather than to diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c index 3f2ad2640d8..ccdbc16b894 100644 --- a/arch/x86/kernel/rtc.c +++ b/arch/x86/kernel/rtc.c @@ -42,8 +42,11 @@ int mach_set_rtc_mmss(unsigned long nowtime)  {  	int real_seconds, real_minutes, cmos_minutes;  	unsigned char save_control, save_freq_select; +	unsigned long flags;  	int retval = 0; +	spin_lock_irqsave(&rtc_lock, flags); +  	 /* tell the clock it's being set */  	save_control = CMOS_READ(RTC_CONTROL);  	CMOS_WRITE((save_control|RTC_SET), RTC_CONTROL); @@ -93,12 +96,17 @@ int mach_set_rtc_mmss(unsigned long nowtime)  	CMOS_WRITE(save_control, RTC_CONTROL);  	CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT); +	spin_unlock_irqrestore(&rtc_lock, flags); +  	return retval;  }  unsigned long mach_get_cmos_time(void)  {  	unsigned int status, year, mon, day, hour, min, sec, century = 0; +	unsigned long flags; + +	spin_lock_irqsave(&rtc_lock, flags);  	/*  	 * If UIP is clear, then we have >= 244 microseconds before @@ -125,6 +133,8 @@ unsigned long mach_get_cmos_time(void)  	status = CMOS_READ(RTC_CONTROL);  	WARN_ON_ONCE(RTC_ALWAYS_BCD && (status & RTC_DM_BINARY)); +	spin_unlock_irqrestore(&rtc_lock, flags); +  	if (RTC_ALWAYS_BCD || !(status & RTC_DM_BINARY)) {  		sec = bcd2bin(sec);  		min = bcd2bin(min); @@ -169,24 +179,15 @@ EXPORT_SYMBOL(rtc_cmos_write);  int update_persistent_clock(struct timespec now)  { -	unsigned long flags; -	int retval; - -	spin_lock_irqsave(&rtc_lock, flags); -	retval = x86_platform.set_wallclock(now.tv_sec); -	spin_unlock_irqrestore(&rtc_lock, flags); - -	return retval; +	return x86_platform.set_wallclock(now.tv_sec);  }  /* not static: needed by APM */  void read_persistent_clock(struct timespec *ts)  { -	unsigned long retval, flags; +	unsigned long retval; -	spin_lock_irqsave(&rtc_lock, flags);  	retval = x86_platform.get_wallclock(); -	spin_unlock_irqrestore(&rtc_lock, flags);  	ts->tv_sec = retval;  	ts->tv_nsec = 0; diff --git a/arch/x86/kernel/syscall_table_32.S b/arch/x86/kernel/syscall_table_32.S index fbb0a045a1a..bc19be332bc 100644 --- a/arch/x86/kernel/syscall_table_32.S +++ b/arch/x86/kernel/syscall_table_32.S @@ -168,7 +168,7 @@ ENTRY(sys_call_table)  	.long ptregs_vm86  	.long sys_ni_syscall	/* Old sys_query_module */  	.long sys_poll -	.long sys_nfsservctl +	.long sys_ni_syscall	/* Old nfsservctl */  	.long sys_setresgid16	/* 170 */  	.long sys_getresgid16  	.long sys_prctl diff --git a/arch/x86/kernel/vsyscall_64.c b/arch/x86/kernel/vsyscall_64.c index 18ae83dd1cd..b56c65de384 100644 --- a/arch/x86/kernel/vsyscall_64.c +++ b/arch/x86/kernel/vsyscall_64.c @@ -56,7 +56,7 @@ DEFINE_VVAR(struct vsyscall_gtod_data, vsyscall_gtod_data) =  	.lock = __SEQLOCK_UNLOCKED(__vsyscall_gtod_data.lock),  }; -static enum { EMULATE, NATIVE, NONE } vsyscall_mode = EMULATE; +static enum { EMULATE, NATIVE, NONE } vsyscall_mode = NATIVE;  static int __init vsyscall_setup(char *str)  {  |