aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/i386/kernel/cpu/mtrr/main.c4
-rw-r--r--arch/i386/kernel/entry.S8
-rw-r--r--arch/i386/mach-es7000/es7000plat.c48
-rw-r--r--arch/mips/Kconfig.debug2
-rw-r--r--arch/mips/kernel/cpu-probe.c15
-rw-r--r--arch/mips/kernel/traps.c8
-rw-r--r--arch/mips/kernel/vpe.c4
-rw-r--r--arch/mips/lib/Makefile2
-rw-r--r--drivers/atm/firestream.c2
-rw-r--r--drivers/net/arm/am79c961a.c2
-rw-r--r--drivers/net/ixp2000/ixpdev.c2
-rw-r--r--drivers/net/sb1250-mac.c2
-rw-r--r--drivers/pnp/quirks.c63
-rw-r--r--drivers/usb/misc/uss720.c2
-rw-r--r--fs/binfmt_elf.c7
-rw-r--r--include/asm-i386/mach-es7000/mach_apic.h4
-rw-r--r--include/asm-i386/mach-es7000/mach_mpparse.h6
-rw-r--r--include/asm-mips/addrspace.h1
-rw-r--r--include/asm-mips/cpu.h11
-rw-r--r--include/asm-mips/mipsregs.h2
-rw-r--r--include/asm-mips/war.h18
-rw-r--r--ipc/compat.c2
-rw-r--r--mm/vmstat.c2
-rw-r--r--scripts/Makefile.headersinst2
24 files changed, 178 insertions, 41 deletions
diff --git a/arch/i386/kernel/cpu/mtrr/main.c b/arch/i386/kernel/cpu/mtrr/main.c
index 55b005152a11..75dc6d5214bc 100644
--- a/arch/i386/kernel/cpu/mtrr/main.c
+++ b/arch/i386/kernel/cpu/mtrr/main.c
@@ -229,6 +229,8 @@ static void set_mtrr(unsigned int reg, unsigned long base,
229 data.smp_size = size; 229 data.smp_size = size;
230 data.smp_type = type; 230 data.smp_type = type;
231 atomic_set(&data.count, num_booting_cpus() - 1); 231 atomic_set(&data.count, num_booting_cpus() - 1);
232 /* make sure data.count is visible before unleashing other CPUs */
233 smp_wmb();
232 atomic_set(&data.gate,0); 234 atomic_set(&data.gate,0);
233 235
234 /* Start the ball rolling on other CPUs */ 236 /* Start the ball rolling on other CPUs */
@@ -242,6 +244,7 @@ static void set_mtrr(unsigned int reg, unsigned long base,
242 244
243 /* ok, reset count and toggle gate */ 245 /* ok, reset count and toggle gate */
244 atomic_set(&data.count, num_booting_cpus() - 1); 246 atomic_set(&data.count, num_booting_cpus() - 1);
247 smp_wmb();
245 atomic_set(&data.gate,1); 248 atomic_set(&data.gate,1);
246 249
247 /* do our MTRR business */ 250 /* do our MTRR business */
@@ -260,6 +263,7 @@ static void set_mtrr(unsigned int reg, unsigned long base,
260 cpu_relax(); 263 cpu_relax();
261 264
262 atomic_set(&data.count, num_booting_cpus() - 1); 265 atomic_set(&data.count, num_booting_cpus() - 1);
266 smp_wmb();
263 atomic_set(&data.gate,0); 267 atomic_set(&data.gate,0);
264 268
265 /* 269 /*
diff --git a/arch/i386/kernel/entry.S b/arch/i386/kernel/entry.S
index b1f16ee65e4d..3c3c220488c9 100644
--- a/arch/i386/kernel/entry.S
+++ b/arch/i386/kernel/entry.S
@@ -367,10 +367,6 @@ ENTRY(system_call)
367 CFI_ADJUST_CFA_OFFSET 4 367 CFI_ADJUST_CFA_OFFSET 4
368 SAVE_ALL 368 SAVE_ALL
369 GET_THREAD_INFO(%ebp) 369 GET_THREAD_INFO(%ebp)
370 testl $TF_MASK,PT_EFLAGS(%esp)
371 jz no_singlestep
372 orl $_TIF_SINGLESTEP,TI_flags(%ebp)
373no_singlestep:
374 # system call tracing in operation / emulation 370 # system call tracing in operation / emulation
375 /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */ 371 /* Note, _TIF_SECCOMP is bit number 8, and so it needs testw and not testb */
376 testw $(_TIF_SYSCALL_EMU|_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT),TI_flags(%ebp) 372 testw $(_TIF_SYSCALL_EMU|_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT),TI_flags(%ebp)
@@ -385,6 +381,10 @@ syscall_exit:
385 # setting need_resched or sigpending 381 # setting need_resched or sigpending
386 # between sampling and the iret 382 # between sampling and the iret
387 TRACE_IRQS_OFF 383 TRACE_IRQS_OFF
384 testl $TF_MASK,PT_EFLAGS(%esp) # If tracing set singlestep flag on exit
385 jz no_singlestep
386 orl $_TIF_SINGLESTEP,TI_flags(%ebp)
387no_singlestep:
388 movl TI_flags(%ebp), %ecx 388 movl TI_flags(%ebp), %ecx
389 testw $_TIF_ALLWORK_MASK, %cx # current->work 389 testw $_TIF_ALLWORK_MASK, %cx # current->work
390 jne syscall_exit_work 390 jne syscall_exit_work
diff --git a/arch/i386/mach-es7000/es7000plat.c b/arch/i386/mach-es7000/es7000plat.c
index 9be6ceabf042..ab99072d3f9a 100644
--- a/arch/i386/mach-es7000/es7000plat.c
+++ b/arch/i386/mach-es7000/es7000plat.c
@@ -40,6 +40,7 @@
40#include <asm/smp.h> 40#include <asm/smp.h>
41#include <asm/apicdef.h> 41#include <asm/apicdef.h>
42#include "es7000.h" 42#include "es7000.h"
43#include <mach_mpparse.h>
43 44
44/* 45/*
45 * ES7000 Globals 46 * ES7000 Globals
@@ -174,6 +175,53 @@ find_unisys_acpi_oem_table(unsigned long *oem_addr)
174} 175}
175#endif 176#endif
176 177
178/*
179 * This file also gets compiled if CONFIG_X86_GENERICARCH is set. Generic
180 * arch already has got following function definitions (asm-generic/es7000.c)
181 * hence no need to define these for that case.
182 */
183#ifndef CONFIG_X86_GENERICARCH
184void es7000_sw_apic(void);
185void __init enable_apic_mode(void)
186{
187 es7000_sw_apic();
188 return;
189}
190
191__init int mps_oem_check(struct mp_config_table *mpc, char *oem,
192 char *productid)
193{
194 if (mpc->mpc_oemptr) {
195 struct mp_config_oemtable *oem_table =
196 (struct mp_config_oemtable *)mpc->mpc_oemptr;
197 if (!strncmp(oem, "UNISYS", 6))
198 return parse_unisys_oem((char *)oem_table);
199 }
200 return 0;
201}
202#ifdef CONFIG_ACPI
203/* Hook from generic ACPI tables.c */
204int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
205{
206 unsigned long oem_addr;
207 if (!find_unisys_acpi_oem_table(&oem_addr)) {
208 if (es7000_check_dsdt())
209 return parse_unisys_oem((char *)oem_addr);
210 else {
211 setup_unisys();
212 return 1;
213 }
214 }
215 return 0;
216}
217#else
218int __init acpi_madt_oem_check(char *oem_id, char *oem_table_id)
219{
220 return 0;
221}
222#endif
223#endif /* COFIG_X86_GENERICARCH */
224
177static void 225static void
178es7000_spin(int n) 226es7000_spin(int n)
179{ 227{
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug
index 72d5c198e790..3efe117721aa 100644
--- a/arch/mips/Kconfig.debug
+++ b/arch/mips/Kconfig.debug
@@ -37,7 +37,7 @@ config DEBUG_STACK_USAGE
37 37
38 This option will slow down process creation somewhat. 38 This option will slow down process creation somewhat.
39 39
40config CONFIG_SMTC_IDLE_HOOK_DEBUG 40config SMTC_IDLE_HOOK_DEBUG
41 bool "Enable additional debug checks before going into CPU idle loop" 41 bool "Enable additional debug checks before going into CPU idle loop"
42 depends on DEBUG_KERNEL && MIPS_MT_SMTC 42 depends on DEBUG_KERNEL && MIPS_MT_SMTC
43 help 43 help
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index 0fc90ba16ae1..b12eeee0e974 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -137,13 +137,24 @@ static inline void check_wait(void)
137 case CPU_4KEC: 137 case CPU_4KEC:
138 case CPU_4KSC: 138 case CPU_4KSC:
139 case CPU_5KC: 139 case CPU_5KC:
140 case CPU_24K:
141 case CPU_25KF: 140 case CPU_25KF:
141 case CPU_PR4450:
142 cpu_wait = r4k_wait;
143 break;
144
145 case CPU_24K:
142 case CPU_34K: 146 case CPU_34K:
147 cpu_wait = r4k_wait;
148 if (read_c0_config7() & MIPS_CONF7_WII)
149 cpu_wait = r4k_wait_irqoff;
150 break;
151
143 case CPU_74K: 152 case CPU_74K:
144 case CPU_PR4450:
145 cpu_wait = r4k_wait; 153 cpu_wait = r4k_wait;
154 if ((c->processor_id & 0xff) >= PRID_REV_ENCODE_332(2, 1, 0))
155 cpu_wait = r4k_wait_irqoff;
146 break; 156 break;
157
147 case CPU_TX49XX: 158 case CPU_TX49XX:
148 cpu_wait = r4k_wait_irqoff; 159 cpu_wait = r4k_wait_irqoff;
149 break; 160 break;
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index b1233644fcca..3ea7863c4519 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -1372,12 +1372,12 @@ void __init per_cpu_trap_init(void)
1372 */ 1372 */
1373 if (cpu_has_mips_r2) { 1373 if (cpu_has_mips_r2) {
1374 cp0_compare_irq = (read_c0_intctl () >> 29) & 7; 1374 cp0_compare_irq = (read_c0_intctl () >> 29) & 7;
1375 cp0_perfcount_irq = -1;
1376 } else {
1377 cp0_compare_irq = CP0_LEGACY_COMPARE_IRQ;
1378 cp0_perfcount_irq = (read_c0_intctl () >> 26) & 7; 1375 cp0_perfcount_irq = (read_c0_intctl () >> 26) & 7;
1379 if (cp0_perfcount_irq != cp0_compare_irq) 1376 if (cp0_perfcount_irq == cp0_compare_irq)
1380 cp0_perfcount_irq = -1; 1377 cp0_perfcount_irq = -1;
1378 } else {
1379 cp0_compare_irq = CP0_LEGACY_COMPARE_IRQ;
1380 cp0_perfcount_irq = -1;
1381 } 1381 }
1382 1382
1383#ifdef CONFIG_MIPS_MT_SMTC 1383#ifdef CONFIG_MIPS_MT_SMTC
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
index c9ee9d2d5856..9e66354dee8b 100644
--- a/arch/mips/kernel/vpe.c
+++ b/arch/mips/kernel/vpe.c
@@ -1436,10 +1436,6 @@ static int __init vpe_module_init(void)
1436 write_vpe_c0_vpecontrol(read_vpe_c0_vpecontrol() & ~VPECONTROL_TE); 1436 write_vpe_c0_vpecontrol(read_vpe_c0_vpecontrol() & ~VPECONTROL_TE);
1437 1437
1438 if (i != 0) { 1438 if (i != 0) {
1439 write_vpe_c0_status((read_c0_status() &
1440 ~(ST0_IM | ST0_IE | ST0_KSU))
1441 | ST0_CU0);
1442
1443 /* 1439 /*
1444 * Set config to be the same as vpe0, 1440 * Set config to be the same as vpe0,
1445 * particularly kseg0 coherency alg 1441 * particularly kseg0 coherency alg
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile
index 5dad13efba7e..1c1aa9f92f6c 100644
--- a/arch/mips/lib/Makefile
+++ b/arch/mips/lib/Makefile
@@ -9,4 +9,4 @@ obj-y += iomap.o
9obj-$(CONFIG_PCI) += iomap-pci.o 9obj-$(CONFIG_PCI) += iomap-pci.o
10 10
11# libgcc-style stuff needed in the kernel 11# libgcc-style stuff needed in the kernel
12lib-y += ashldi3.o ashrdi3.o lshrdi3.o ucmpdi2.o 12obj-y += ashldi3.o ashrdi3.o lshrdi3.o ucmpdi2.o
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
index 7f6d02ce1b5f..38b688f9f6a9 100644
--- a/drivers/atm/firestream.c
+++ b/drivers/atm/firestream.c
@@ -1654,7 +1654,7 @@ static void fs_poll (unsigned long data)
1654{ 1654{
1655 struct fs_dev *dev = (struct fs_dev *) data; 1655 struct fs_dev *dev = (struct fs_dev *) data;
1656 1656
1657 fs_irq (0, dev, NULL); 1657 fs_irq (0, dev);
1658 dev->timer.expires = jiffies + FS_POLL_FREQ; 1658 dev->timer.expires = jiffies + FS_POLL_FREQ;
1659 add_timer (&dev->timer); 1659 add_timer (&dev->timer);
1660} 1660}
diff --git a/drivers/net/arm/am79c961a.c b/drivers/net/arm/am79c961a.c
index 8f0d7ce503c9..2143eeb7a2b0 100644
--- a/drivers/net/arm/am79c961a.c
+++ b/drivers/net/arm/am79c961a.c
@@ -634,7 +634,7 @@ static void am79c961_poll_controller(struct net_device *dev)
634{ 634{
635 unsigned long flags; 635 unsigned long flags;
636 local_irq_save(flags); 636 local_irq_save(flags);
637 am79c961_interrupt(dev->irq, dev, NULL); 637 am79c961_interrupt(dev->irq, dev);
638 local_irq_restore(flags); 638 local_irq_restore(flags);
639} 639}
640#endif 640#endif
diff --git a/drivers/net/ixp2000/ixpdev.c b/drivers/net/ixp2000/ixpdev.c
index 6683afc02aaa..d5f694fc4a21 100644
--- a/drivers/net/ixp2000/ixpdev.c
+++ b/drivers/net/ixp2000/ixpdev.c
@@ -222,7 +222,7 @@ static irqreturn_t ixpdev_interrupt(int irq, void *dev_id)
222static void ixpdev_poll_controller(struct net_device *dev) 222static void ixpdev_poll_controller(struct net_device *dev)
223{ 223{
224 disable_irq(IRQ_IXP2000_THDA0); 224 disable_irq(IRQ_IXP2000_THDA0);
225 ixpdev_interrupt(IRQ_IXP2000_THDA0, dev, NULL); 225 ixpdev_interrupt(IRQ_IXP2000_THDA0, dev);
226 enable_irq(IRQ_IXP2000_THDA0); 226 enable_irq(IRQ_IXP2000_THDA0);
227} 227}
228#endif 228#endif
diff --git a/drivers/net/sb1250-mac.c b/drivers/net/sb1250-mac.c
index 132e2148b21c..e7fdcf15b5a7 100644
--- a/drivers/net/sb1250-mac.c
+++ b/drivers/net/sb1250-mac.c
@@ -1159,7 +1159,7 @@ static void sbmac_netpoll(struct net_device *netdev)
1159 1159
1160 __raw_writeq(0, sc->sbm_imr); 1160 __raw_writeq(0, sc->sbm_imr);
1161 1161
1162 sbmac_intr(irq, netdev, NULL); 1162 sbmac_intr(irq, netdev);
1163 1163
1164#ifdef CONFIG_SBMAC_COALESCE 1164#ifdef CONFIG_SBMAC_COALESCE
1165 __raw_writeq(((M_MAC_INT_EOP_COUNT | M_MAC_INT_EOP_TIMER) << S_MAC_TX_CH0) | 1165 __raw_writeq(((M_MAC_INT_EOP_COUNT | M_MAC_INT_EOP_TIMER) << S_MAC_TX_CH0) |
diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c
index 967a8e22b2da..7c3236690cc3 100644
--- a/drivers/pnp/quirks.c
+++ b/drivers/pnp/quirks.c
@@ -136,11 +136,10 @@ static int quirk_smc_fir_enabled(struct pnp_dev *dev)
136 136
137static void quirk_smc_enable(struct pnp_dev *dev) 137static void quirk_smc_enable(struct pnp_dev *dev)
138{ 138{
139 /* 139 struct resource fir, sir, irq;
140 * If the BIOS left the device disabled, or it is enabled and 140
141 * responding correctly, we're in good shape. 141 pnp_activate_dev(dev);
142 */ 142 if (quirk_smc_fir_enabled(dev))
143 if (!dev->active || quirk_smc_fir_enabled(dev))
144 return; 143 return;
145 144
146 /* 145 /*
@@ -152,16 +151,62 @@ static void quirk_smc_enable(struct pnp_dev *dev)
152 * this. Fortunately, they do fix things up if we auto-configure 151 * this. Fortunately, they do fix things up if we auto-configure
153 * the device using its _PRS and _SRS methods. 152 * the device using its _PRS and _SRS methods.
154 */ 153 */
155 dev_err(&dev->dev, "%s device not responding, auto-configuring " 154 dev_err(&dev->dev, "%s not responding at SIR 0x%lx, FIR 0x%lx; "
156 "resources\n", dev->id->id); 155 "auto-configuring\n", dev->id->id,
156 (unsigned long) pnp_port_start(dev, 0),
157 (unsigned long) pnp_port_start(dev, 1));
157 158
158 pnp_disable_dev(dev); 159 pnp_disable_dev(dev);
159 pnp_init_resource_table(&dev->res); 160 pnp_init_resource_table(&dev->res);
160 pnp_auto_config_dev(dev); 161 pnp_auto_config_dev(dev);
161 pnp_activate_dev(dev); 162 pnp_activate_dev(dev);
163 if (quirk_smc_fir_enabled(dev)) {
164 dev_err(&dev->dev, "responds at SIR 0x%lx, FIR 0x%lx\n",
165 (unsigned long) pnp_port_start(dev, 0),
166 (unsigned long) pnp_port_start(dev, 1));
167 return;
168 }
169
170 /*
171 * The Toshiba Portege 4000 _CRS reports the FIR region first,
172 * followed by the SIR region. The BIOS will configure the bridge,
173 * but only if we call _SRS with SIR first, then FIR. It also
174 * reports the IRQ as active high, when it is really active low.
175 */
176 dev_err(&dev->dev, "not responding at SIR 0x%lx, FIR 0x%lx; "
177 "swapping SIR/FIR and reconfiguring\n",
178 (unsigned long) pnp_port_start(dev, 0),
179 (unsigned long) pnp_port_start(dev, 1));
180
181 /*
182 * Clear IORESOURCE_AUTO so pnp_activate_dev() doesn't reassign
183 * these resources any more.
184 */
185 fir = dev->res.port_resource[0];
186 sir = dev->res.port_resource[1];
187 fir.flags &= ~IORESOURCE_AUTO;
188 sir.flags &= ~IORESOURCE_AUTO;
189
190 irq = dev->res.irq_resource[0];
191 irq.flags &= ~IORESOURCE_AUTO;
192 irq.flags &= ~IORESOURCE_BITS;
193 irq.flags |= IORESOURCE_IRQ_LOWEDGE;
194
195 pnp_disable_dev(dev);
196 dev->res.port_resource[0] = sir;
197 dev->res.port_resource[1] = fir;
198 dev->res.irq_resource[0] = irq;
199 pnp_activate_dev(dev);
200
201 if (quirk_smc_fir_enabled(dev)) {
202 dev_err(&dev->dev, "responds at SIR 0x%lx, FIR 0x%lx\n",
203 (unsigned long) pnp_port_start(dev, 0),
204 (unsigned long) pnp_port_start(dev, 1));
205 return;
206 }
162 207
163 if (!quirk_smc_fir_enabled(dev)) 208 dev_err(&dev->dev, "giving up; try \"smsc-ircc2.nopnp\" and "
164 dev_err(&dev->dev, "giving up; try \"smsc-ircc2.nopnp\"\n"); 209 "email bjorn.helgaas@hp.com\n");
165} 210}
166 211
167 212
diff --git a/drivers/usb/misc/uss720.c b/drivers/usb/misc/uss720.c
index 70250252ae2a..1a60f9c473ad 100644
--- a/drivers/usb/misc/uss720.c
+++ b/drivers/usb/misc/uss720.c
@@ -336,7 +336,7 @@ static int uss720_irq(int usbstatus, void *buffer, int len, void *dev_id)
336 memcpy(priv->reg, buffer, 4); 336 memcpy(priv->reg, buffer, 4);
337 /* if nAck interrupts are enabled and we have an interrupt, call the interrupt procedure */ 337 /* if nAck interrupts are enabled and we have an interrupt, call the interrupt procedure */
338 if (priv->reg[2] & priv->reg[1] & 0x10) 338 if (priv->reg[2] & priv->reg[1] & 0x10)
339 parport_generic_irq(0, pp, NULL); 339 parport_generic_irq(0, pp);
340 return 1; 340 return 1;
341} 341}
342#endif 342#endif
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index fa8ea33ab0be..08e4414b8374 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -1499,6 +1499,9 @@ static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file)
1499#endif 1499#endif
1500 int thread_status_size = 0; 1500 int thread_status_size = 0;
1501 elf_addr_t *auxv; 1501 elf_addr_t *auxv;
1502#ifdef ELF_CORE_WRITE_EXTRA_NOTES
1503 int extra_notes_size;
1504#endif
1502 1505
1503 /* 1506 /*
1504 * We no longer stop all VM operations. 1507 * We no longer stop all VM operations.
@@ -1628,7 +1631,8 @@ static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file)
1628 sz += thread_status_size; 1631 sz += thread_status_size;
1629 1632
1630#ifdef ELF_CORE_WRITE_EXTRA_NOTES 1633#ifdef ELF_CORE_WRITE_EXTRA_NOTES
1631 sz += ELF_CORE_EXTRA_NOTES_SIZE; 1634 extra_notes_size = ELF_CORE_EXTRA_NOTES_SIZE;
1635 sz += extra_notes_size;
1632#endif 1636#endif
1633 1637
1634 fill_elf_note_phdr(&phdr, sz, offset); 1638 fill_elf_note_phdr(&phdr, sz, offset);
@@ -1674,6 +1678,7 @@ static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file)
1674 1678
1675#ifdef ELF_CORE_WRITE_EXTRA_NOTES 1679#ifdef ELF_CORE_WRITE_EXTRA_NOTES
1676 ELF_CORE_WRITE_EXTRA_NOTES; 1680 ELF_CORE_WRITE_EXTRA_NOTES;
1681 foffset += extra_notes_size;
1677#endif 1682#endif
1678 1683
1679 /* write out the thread status notes section */ 1684 /* write out the thread status notes section */
diff --git a/include/asm-i386/mach-es7000/mach_apic.h b/include/asm-i386/mach-es7000/mach_apic.h
index 2d978928a395..caec64be516d 100644
--- a/include/asm-i386/mach-es7000/mach_apic.h
+++ b/include/asm-i386/mach-es7000/mach_apic.h
@@ -73,6 +73,10 @@ static inline void init_apic_ldr(void)
73 apic_write_around(APIC_LDR, val); 73 apic_write_around(APIC_LDR, val);
74} 74}
75 75
76#ifndef CONFIG_X86_GENERICARCH
77extern void enable_apic_mode(void);
78#endif
79
76extern int apic_version [MAX_APICS]; 80extern int apic_version [MAX_APICS];
77static inline void setup_apic_routing(void) 81static inline void setup_apic_routing(void)
78{ 82{
diff --git a/include/asm-i386/mach-es7000/mach_mpparse.h b/include/asm-i386/mach-es7000/mach_mpparse.h
index b9fb784e1fd5..8aa10547b4b1 100644
--- a/include/asm-i386/mach-es7000/mach_mpparse.h
+++ b/include/asm-i386/mach-es7000/mach_mpparse.h
@@ -18,6 +18,12 @@ extern int parse_unisys_oem (char *oemptr);
18extern int find_unisys_acpi_oem_table(unsigned long *oem_addr); 18extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
19extern void setup_unisys(void); 19extern void setup_unisys(void);
20 20
21#ifndef CONFIG_X86_GENERICARCH
22extern int acpi_madt_oem_check(char *oem_id, char *oem_table_id);
23extern int mps_oem_check(struct mp_config_table *mpc, char *oem,
24 char *productid);
25#endif
26
21#ifdef CONFIG_ACPI 27#ifdef CONFIG_ACPI
22 28
23static inline int es7000_check_dsdt(void) 29static inline int es7000_check_dsdt(void)
diff --git a/include/asm-mips/addrspace.h b/include/asm-mips/addrspace.h
index c6275088cf65..964c5eddc21b 100644
--- a/include/asm-mips/addrspace.h
+++ b/include/asm-mips/addrspace.h
@@ -133,6 +133,7 @@
133 || defined (CONFIG_CPU_R4X00) \ 133 || defined (CONFIG_CPU_R4X00) \
134 || defined (CONFIG_CPU_R5000) \ 134 || defined (CONFIG_CPU_R5000) \
135 || defined (CONFIG_CPU_RM7000) \ 135 || defined (CONFIG_CPU_RM7000) \
136 || defined (CONFIG_CPU_RM9000) \
136 || defined (CONFIG_CPU_NEVADA) \ 137 || defined (CONFIG_CPU_NEVADA) \
137 || defined (CONFIG_CPU_TX49XX) \ 138 || defined (CONFIG_CPU_TX49XX) \
138 || defined (CONFIG_CPU_MIPS64) 139 || defined (CONFIG_CPU_MIPS64)
diff --git a/include/asm-mips/cpu.h b/include/asm-mips/cpu.h
index d38fdbf845b2..2924069075e0 100644
--- a/include/asm-mips/cpu.h
+++ b/include/asm-mips/cpu.h
@@ -125,6 +125,17 @@
125#define PRID_REV_VR4130 0x0080 125#define PRID_REV_VR4130 0x0080
126 126
127/* 127/*
128 * Older processors used to encode processor version and revision in two
129 * 4-bit bitfields, the 4K seems to simply count up and even newer MTI cores
130 * have switched to use the 8-bits as 3:3:2 bitfield with the last field as
131 * the patch number. *ARGH*
132 */
133#define PRID_REV_ENCODE_44(ver, rev) \
134 ((ver) << 4 | (rev))
135#define PRID_REV_ENCODE_332(ver, rev, patch) \
136 ((ver) << 5 | (rev) << 2 | (patch))
137
138/*
128 * FPU implementation/revision register (CP1 control register 0). 139 * FPU implementation/revision register (CP1 control register 0).
129 * 140 *
130 * +---------------------------------+----------------+----------------+ 141 * +---------------------------------+----------------+----------------+
diff --git a/include/asm-mips/mipsregs.h b/include/asm-mips/mipsregs.h
index 9985cb7c16e7..89c81922d47c 100644
--- a/include/asm-mips/mipsregs.h
+++ b/include/asm-mips/mipsregs.h
@@ -534,6 +534,8 @@
534#define MIPS_CONF3_LPA (_ULCAST_(1) << 7) 534#define MIPS_CONF3_LPA (_ULCAST_(1) << 7)
535#define MIPS_CONF3_DSP (_ULCAST_(1) << 10) 535#define MIPS_CONF3_DSP (_ULCAST_(1) << 10)
536 536
537#define MIPS_CONF7_WII (_ULCAST_(1) << 31)
538
537/* 539/*
538 * Bits in the MIPS32/64 coprocessor 1 (FPU) revision register. 540 * Bits in the MIPS32/64 coprocessor 1 (FPU) revision register.
539 */ 541 */
diff --git a/include/asm-mips/war.h b/include/asm-mips/war.h
index 13a3502eef44..ec0eeebd8802 100644
--- a/include/asm-mips/war.h
+++ b/include/asm-mips/war.h
@@ -177,18 +177,22 @@
177#endif 177#endif
178 178
179/* 179/*
180 * The RM9000 has a bug (though PMC-Sierra opposes it being called that) 180 * The RM7000 processors and the E9000 cores have a bug (though PMC-Sierra
181 * where invalid instructions in the same I-cache line worth of instructions 181 * opposes it being called that) where invalid instructions in the same
182 * being fetched may case spurious exceptions. 182 * I-cache line worth of instructions being fetched may case spurious
183 */ 183 * exceptions.
184#if defined(CONFIG_MOMENCO_JAGUAR_ATX) || defined(CONFIG_MOMENCO_OCELOT_3) || \ 184 */
185 defined(CONFIG_PMC_YOSEMITE) || defined(CONFIG_BASLER_EXCITE) 185#if defined(CONFIG_BASLER_EXCITE) || defined(CONFIG_MOMENCO_JAGUAR_ATX) || \
186 defined(CONFIG_MIPS_ATLAS) || defined(CONFIG_MIPS_MALTA) || \
187 defined(CONFIG_MOMENCO_OCELOT) || defined(CONFIG_MOMENCO_OCELOT_3) || \
188 defined(CONFIG_MOMENCO_OCELOT_C) || defined(CONFIG_PMC_YOSEMITE) || \
189 defined(CONFIG_SGI_IP32) || defined(CONFIG_WR_PPMC)
186#define ICACHE_REFILLS_WORKAROUND_WAR 1 190#define ICACHE_REFILLS_WORKAROUND_WAR 1
187#endif 191#endif
188 192
189 193
190/* 194/*
191 * ON the R10000 upto version 2.6 (not sure about 2.7) there is a bug that 195 * On the R10000 upto version 2.6 (not sure about 2.7) there is a bug that
192 * may cause ll / sc and lld / scd sequences to execute non-atomically. 196 * may cause ll / sc and lld / scd sequences to execute non-atomically.
193 */ 197 */
194#ifdef CONFIG_SGI_IP27 198#ifdef CONFIG_SGI_IP27
diff --git a/ipc/compat.c b/ipc/compat.c
index 8b44aa9a7c95..ab76fb0ef844 100644
--- a/ipc/compat.c
+++ b/ipc/compat.c
@@ -225,7 +225,7 @@ static inline int put_compat_semid_ds(struct semid64_ds *s,
225 int err; 225 int err;
226 226
227 if (!access_ok (VERIFY_WRITE, up, sizeof(*up))) 227 if (!access_ok (VERIFY_WRITE, up, sizeof(*up)))
228 err = -EFAULT; 228 return -EFAULT;
229 err = __put_compat_ipc_perm(&s->sem_perm, &up->sem_perm); 229 err = __put_compat_ipc_perm(&s->sem_perm, &up->sem_perm);
230 err |= __put_user(s->sem_otime, &up->sem_otime); 230 err |= __put_user(s->sem_otime, &up->sem_otime);
231 err |= __put_user(s->sem_ctime, &up->sem_ctime); 231 err |= __put_user(s->sem_ctime, &up->sem_ctime);
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 38254297a494..eceaf496210f 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -477,8 +477,8 @@ const struct seq_operations fragmentation_op = {
477static const char * const vmstat_text[] = { 477static const char * const vmstat_text[] = {
478 /* Zoned VM counters */ 478 /* Zoned VM counters */
479 "nr_free_pages", 479 "nr_free_pages",
480 "nr_active",
481 "nr_inactive", 480 "nr_inactive",
481 "nr_active",
482 "nr_anon_pages", 482 "nr_anon_pages",
483 "nr_mapped", 483 "nr_mapped",
484 "nr_file_pages", 484 "nr_file_pages",
diff --git a/scripts/Makefile.headersinst b/scripts/Makefile.headersinst
index 8cd63014a0d1..f98d772aac80 100644
--- a/scripts/Makefile.headersinst
+++ b/scripts/Makefile.headersinst
@@ -108,7 +108,7 @@ quiet_cmd_mkdir = MKDIR $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
108 108
109quiet_cmd_gen = GEN $(patsubst $(INSTALL_HDR_PATH)/%,%,$@) 109quiet_cmd_gen = GEN $(patsubst $(INSTALL_HDR_PATH)/%,%,$@)
110 cmd_gen = \ 110 cmd_gen = \
111FNAME=$(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$@) \ 111FNAME=$(patsubst $(INSTALL_HDR_PATH)/$(_dst)/%,%,$@); \
112STUBDEF=__ASM_STUB_`echo $$FNAME | tr a-z.- A-Z__`; \ 112STUBDEF=__ASM_STUB_`echo $$FNAME | tr a-z.- A-Z__`; \
113(echo "/* File autogenerated by 'make headers_install' */" ; \ 113(echo "/* File autogenerated by 'make headers_install' */" ; \
114echo "\#ifndef $$STUBDEF" ; \ 114echo "\#ifndef $$STUBDEF" ; \