diff options
-rw-r--r-- | arch/x86/kernel/io_apic_32.c | 12 | ||||
-rw-r--r-- | arch/x86/kernel/nmi_32.c | 9 | ||||
-rw-r--r-- | drivers/w1/slaves/w1_therm.c | 4 | ||||
-rw-r--r-- | kernel/rcupdate.c | 2 | ||||
-rw-r--r-- | kernel/sched.c | 8 |
5 files changed, 15 insertions, 20 deletions
diff --git a/arch/x86/kernel/io_apic_32.c b/arch/x86/kernel/io_apic_32.c index c3a565bba106..a6b1490e00c4 100644 --- a/arch/x86/kernel/io_apic_32.c +++ b/arch/x86/kernel/io_apic_32.c | |||
@@ -2169,14 +2169,10 @@ static inline void __init check_timer(void) | |||
2169 | { | 2169 | { |
2170 | int apic1, pin1, apic2, pin2; | 2170 | int apic1, pin1, apic2, pin2; |
2171 | int vector; | 2171 | int vector; |
2172 | unsigned int ver; | ||
2173 | unsigned long flags; | 2172 | unsigned long flags; |
2174 | 2173 | ||
2175 | local_irq_save(flags); | 2174 | local_irq_save(flags); |
2176 | 2175 | ||
2177 | ver = apic_read(APIC_LVR); | ||
2178 | ver = GET_APIC_VERSION(ver); | ||
2179 | |||
2180 | /* | 2176 | /* |
2181 | * get/set the timer IRQ vector: | 2177 | * get/set the timer IRQ vector: |
2182 | */ | 2178 | */ |
@@ -2189,15 +2185,11 @@ static inline void __init check_timer(void) | |||
2189 | * mode for the 8259A whenever interrupts are routed | 2185 | * mode for the 8259A whenever interrupts are routed |
2190 | * through I/O APICs. Also IRQ0 has to be enabled in | 2186 | * through I/O APICs. Also IRQ0 has to be enabled in |
2191 | * the 8259A which implies the virtual wire has to be | 2187 | * the 8259A which implies the virtual wire has to be |
2192 | * disabled in the local APIC. Finally timer interrupts | 2188 | * disabled in the local APIC. |
2193 | * need to be acknowledged manually in the 8259A for | ||
2194 | * timer_interrupt() and for the i82489DX when using | ||
2195 | * the NMI watchdog. | ||
2196 | */ | 2189 | */ |
2197 | apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); | 2190 | apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); |
2198 | init_8259A(1); | 2191 | init_8259A(1); |
2199 | timer_ack = !cpu_has_tsc; | 2192 | timer_ack = 1; |
2200 | timer_ack |= (nmi_watchdog == NMI_IO_APIC && !APIC_INTEGRATED(ver)); | ||
2201 | if (timer_over_8254 > 0) | 2193 | if (timer_over_8254 > 0) |
2202 | enable_8259A_irq(0); | 2194 | enable_8259A_irq(0); |
2203 | 2195 | ||
diff --git a/arch/x86/kernel/nmi_32.c b/arch/x86/kernel/nmi_32.c index 80ca72e5ac29..852db2906921 100644 --- a/arch/x86/kernel/nmi_32.c +++ b/arch/x86/kernel/nmi_32.c | |||
@@ -25,7 +25,6 @@ | |||
25 | 25 | ||
26 | #include <asm/smp.h> | 26 | #include <asm/smp.h> |
27 | #include <asm/nmi.h> | 27 | #include <asm/nmi.h> |
28 | #include <asm/timer.h> | ||
29 | 28 | ||
30 | #include "mach_traps.h" | 29 | #include "mach_traps.h" |
31 | 30 | ||
@@ -84,7 +83,7 @@ static int __init check_nmi_watchdog(void) | |||
84 | 83 | ||
85 | prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL); | 84 | prev_nmi_count = kmalloc(NR_CPUS * sizeof(int), GFP_KERNEL); |
86 | if (!prev_nmi_count) | 85 | if (!prev_nmi_count) |
87 | goto error; | 86 | return -1; |
88 | 87 | ||
89 | printk(KERN_INFO "Testing NMI watchdog ... "); | 88 | printk(KERN_INFO "Testing NMI watchdog ... "); |
90 | 89 | ||
@@ -119,7 +118,7 @@ static int __init check_nmi_watchdog(void) | |||
119 | if (!atomic_read(&nmi_active)) { | 118 | if (!atomic_read(&nmi_active)) { |
120 | kfree(prev_nmi_count); | 119 | kfree(prev_nmi_count); |
121 | atomic_set(&nmi_active, -1); | 120 | atomic_set(&nmi_active, -1); |
122 | goto error; | 121 | return -1; |
123 | } | 122 | } |
124 | printk("OK.\n"); | 123 | printk("OK.\n"); |
125 | 124 | ||
@@ -130,10 +129,6 @@ static int __init check_nmi_watchdog(void) | |||
130 | 129 | ||
131 | kfree(prev_nmi_count); | 130 | kfree(prev_nmi_count); |
132 | return 0; | 131 | return 0; |
133 | error: | ||
134 | timer_ack = !cpu_has_tsc; | ||
135 | |||
136 | return -1; | ||
137 | } | 132 | } |
138 | /* This needs to happen later in boot so counters are working */ | 133 | /* This needs to happen later in boot so counters are working */ |
139 | late_initcall(check_nmi_watchdog); | 134 | late_initcall(check_nmi_watchdog); |
diff --git a/drivers/w1/slaves/w1_therm.c b/drivers/w1/slaves/w1_therm.c index 4318935678c5..112f4ec59035 100644 --- a/drivers/w1/slaves/w1_therm.c +++ b/drivers/w1/slaves/w1_therm.c | |||
@@ -112,7 +112,7 @@ static struct w1_therm_family_converter w1_therm_families[] = { | |||
112 | 112 | ||
113 | static inline int w1_DS18B20_convert_temp(u8 rom[9]) | 113 | static inline int w1_DS18B20_convert_temp(u8 rom[9]) |
114 | { | 114 | { |
115 | int t = (rom[1] << 8) | rom[0]; | 115 | s16 t = (rom[1] << 8) | rom[0]; |
116 | t /= 16; | 116 | t /= 16; |
117 | return t; | 117 | return t; |
118 | } | 118 | } |
@@ -204,7 +204,7 @@ static ssize_t w1_therm_read_bin(struct kobject *kobj, | |||
204 | 204 | ||
205 | crc = w1_calc_crc8(rom, 8); | 205 | crc = w1_calc_crc8(rom, 8); |
206 | 206 | ||
207 | if (rom[8] == crc && rom[0]) | 207 | if (rom[8] == crc) |
208 | verdict = 1; | 208 | verdict = 1; |
209 | } | 209 | } |
210 | } | 210 | } |
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index a66d4d1615f7..f2c1a04e9b18 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c | |||
@@ -549,7 +549,7 @@ static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp, | |||
549 | rdp->blimit = blimit; | 549 | rdp->blimit = blimit; |
550 | } | 550 | } |
551 | 551 | ||
552 | static void __devinit rcu_online_cpu(int cpu) | 552 | static void __cpuinit rcu_online_cpu(int cpu) |
553 | { | 553 | { |
554 | struct rcu_data *rdp = &per_cpu(rcu_data, cpu); | 554 | struct rcu_data *rdp = &per_cpu(rcu_data, cpu); |
555 | struct rcu_data *bh_rdp = &per_cpu(rcu_bh_data, cpu); | 555 | struct rcu_data *bh_rdp = &per_cpu(rcu_bh_data, cpu); |
diff --git a/kernel/sched.c b/kernel/sched.c index 37cf07aa4164..e76b11ca6df3 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -7153,6 +7153,14 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares) | |||
7153 | { | 7153 | { |
7154 | int i; | 7154 | int i; |
7155 | 7155 | ||
7156 | /* | ||
7157 | * A weight of 0 or 1 can cause arithmetics problems. | ||
7158 | * (The default weight is 1024 - so there's no practical | ||
7159 | * limitation from this.) | ||
7160 | */ | ||
7161 | if (shares < 2) | ||
7162 | shares = 2; | ||
7163 | |||
7156 | spin_lock(&tg->lock); | 7164 | spin_lock(&tg->lock); |
7157 | if (tg->shares == shares) | 7165 | if (tg->shares == shares) |
7158 | goto done; | 7166 | goto done; |