aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.osdl.org>2006-12-09 16:31:07 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-09 16:31:07 -0500
commitaf1713e0f111647052953ba12fd10a59c74a5dde (patch)
tree4a0cc831c88f888e33a6d9c5ff89f80a8aee42a0
parent9b3a89f8b052f2a6193a9691e053f986144a65a0 (diff)
parentf0f32fccbffaaba8596d5c671153aa37aea9d4f0 (diff)
Merge branch 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6
* 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: [PATCH] x86-64: no paravirt for X86_VOYAGER or X86_VISWS [PATCH] i386: Fix io_apic.c warning [PATCH] i386: export smp_num_siblings for oprofile [PATCH] x86: Work around gcc 4.2 over aggressive optimizer [PATCH] x86: Fix boot hang due to nmi watchdog init code [PATCH] x86: Fix verify_quirk_intel_irqbalance() [PATCH] i386: Update defconfig [PATCH] x86-64: Update defconfig
-rw-r--r--arch/i386/Kconfig1
-rw-r--r--arch/i386/defconfig28
-rw-r--r--arch/i386/kernel/io_apic.c2
-rw-r--r--arch/i386/kernel/nmi.c8
-rw-r--r--arch/i386/kernel/quirks.c33
-rw-r--r--arch/i386/kernel/smpboot.c2
-rw-r--r--arch/i386/kernel/vmlinux.lds.S1
-rw-r--r--arch/x86_64/defconfig29
-rw-r--r--arch/x86_64/kernel/nmi.c9
-rw-r--r--arch/x86_64/kernel/vmlinux.lds.S1
10 files changed, 86 insertions, 28 deletions
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index c2362c7ba749..0d67a0a1151e 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -190,6 +190,7 @@ endchoice
190config PARAVIRT 190config PARAVIRT
191 bool "Paravirtualization support (EXPERIMENTAL)" 191 bool "Paravirtualization support (EXPERIMENTAL)"
192 depends on EXPERIMENTAL 192 depends on EXPERIMENTAL
193 depends on !(X86_VISWS || X86_VOYAGER)
193 help 194 help
194 Paravirtualization is a way of running multiple instances of 195 Paravirtualization is a way of running multiple instances of
195 Linux on the same machine, under a hypervisor. This option 196 Linux on the same machine, under a hypervisor. This option
diff --git a/arch/i386/defconfig b/arch/i386/defconfig
index 65891f11aced..3265208e5899 100644
--- a/arch/i386/defconfig
+++ b/arch/i386/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-git7 3# Linux kernel version: 2.6.19-git14
4# Wed Dec 6 23:50:49 2006 4# Sat Dec 9 21:23:14 2006
5# 5#
6CONFIG_X86_32=y 6CONFIG_X86_32=y
7CONFIG_GENERIC_TIME=y 7CONFIG_GENERIC_TIME=y
@@ -12,6 +12,7 @@ CONFIG_X86=y
12CONFIG_MMU=y 12CONFIG_MMU=y
13CONFIG_GENERIC_ISA_DMA=y 13CONFIG_GENERIC_ISA_DMA=y
14CONFIG_GENERIC_IOMAP=y 14CONFIG_GENERIC_IOMAP=y
15CONFIG_GENERIC_BUG=y
15CONFIG_GENERIC_HWEIGHT=y 16CONFIG_GENERIC_HWEIGHT=y
16CONFIG_ARCH_MAY_HAVE_PC_FDC=y 17CONFIG_ARCH_MAY_HAVE_PC_FDC=y
17CONFIG_DMI=y 18CONFIG_DMI=y
@@ -141,6 +142,8 @@ CONFIG_X86_CMPXCHG=y
141CONFIG_X86_XADD=y 142CONFIG_X86_XADD=y
142CONFIG_X86_L1_CACHE_SHIFT=7 143CONFIG_X86_L1_CACHE_SHIFT=7
143CONFIG_RWSEM_XCHGADD_ALGORITHM=y 144CONFIG_RWSEM_XCHGADD_ALGORITHM=y
145# CONFIG_ARCH_HAS_ILOG2_U32 is not set
146# CONFIG_ARCH_HAS_ILOG2_U64 is not set
144CONFIG_GENERIC_CALIBRATE_DELAY=y 147CONFIG_GENERIC_CALIBRATE_DELAY=y
145CONFIG_X86_WP_WORKS_OK=y 148CONFIG_X86_WP_WORKS_OK=y
146CONFIG_X86_INVLPG=y 149CONFIG_X86_INVLPG=y
@@ -203,6 +206,7 @@ CONFIG_MTRR=y
203CONFIG_SECCOMP=y 206CONFIG_SECCOMP=y
204# CONFIG_HZ_100 is not set 207# CONFIG_HZ_100 is not set
205CONFIG_HZ_250=y 208CONFIG_HZ_250=y
209# CONFIG_HZ_300 is not set
206# CONFIG_HZ_1000 is not set 210# CONFIG_HZ_1000 is not set
207CONFIG_HZ=250 211CONFIG_HZ=250
208# CONFIG_KEXEC is not set 212# CONFIG_KEXEC is not set
@@ -563,6 +567,7 @@ CONFIG_IDEDMA_AUTO=y
563# 567#
564# CONFIG_RAID_ATTRS is not set 568# CONFIG_RAID_ATTRS is not set
565CONFIG_SCSI=y 569CONFIG_SCSI=y
570# CONFIG_SCSI_TGT is not set
566CONFIG_SCSI_NETLINK=y 571CONFIG_SCSI_NETLINK=y
567# CONFIG_SCSI_PROC_FS is not set 572# CONFIG_SCSI_PROC_FS is not set
568 573
@@ -583,6 +588,7 @@ CONFIG_CHR_DEV_SG=y
583# CONFIG_SCSI_MULTI_LUN is not set 588# CONFIG_SCSI_MULTI_LUN is not set
584# CONFIG_SCSI_CONSTANTS is not set 589# CONFIG_SCSI_CONSTANTS is not set
585# CONFIG_SCSI_LOGGING is not set 590# CONFIG_SCSI_LOGGING is not set
591# CONFIG_SCSI_SCAN_ASYNC is not set
586 592
587# 593#
588# SCSI Transports 594# SCSI Transports
@@ -642,6 +648,7 @@ CONFIG_AIC79XX_DEBUG_MASK=0
642# CONFIG_SCSI_DC390T is not set 648# CONFIG_SCSI_DC390T is not set
643# CONFIG_SCSI_NSP32 is not set 649# CONFIG_SCSI_NSP32 is not set
644# CONFIG_SCSI_DEBUG is not set 650# CONFIG_SCSI_DEBUG is not set
651# CONFIG_SCSI_SRP is not set
645 652
646# 653#
647# Serial ATA (prod) and Parallel ATA (experimental) drivers 654# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -1082,10 +1089,7 @@ CONFIG_SOUND=y
1082# Open Sound System 1089# Open Sound System
1083# 1090#
1084CONFIG_SOUND_PRIME=y 1091CONFIG_SOUND_PRIME=y
1085CONFIG_OSS_OBSOLETE_DRIVER=y
1086# CONFIG_SOUND_BT878 is not set 1092# CONFIG_SOUND_BT878 is not set
1087# CONFIG_SOUND_EMU10K1 is not set
1088# CONFIG_SOUND_FUSION is not set
1089# CONFIG_SOUND_ES1371 is not set 1093# CONFIG_SOUND_ES1371 is not set
1090CONFIG_SOUND_ICH=y 1094CONFIG_SOUND_ICH=y
1091# CONFIG_SOUND_TRIDENT is not set 1095# CONFIG_SOUND_TRIDENT is not set
@@ -1095,6 +1099,11 @@ CONFIG_SOUND_ICH=y
1095# CONFIG_SOUND_OSS is not set 1099# CONFIG_SOUND_OSS is not set
1096 1100
1097# 1101#
1102# HID Devices
1103#
1104CONFIG_HID=y
1105
1106#
1098# USB support 1107# USB support
1099# 1108#
1100CONFIG_USB_ARCH_HAS_HCD=y 1109CONFIG_USB_ARCH_HAS_HCD=y
@@ -1158,8 +1167,7 @@ CONFIG_USB_STORAGE=y
1158# USB Input Devices 1167# USB Input Devices
1159# 1168#
1160CONFIG_USB_HID=y 1169CONFIG_USB_HID=y
1161CONFIG_USB_HIDINPUT=y 1170# CONFIG_USB_HID_POWERBOOK is not set
1162# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1163# CONFIG_HID_FF is not set 1171# CONFIG_HID_FF is not set
1164# CONFIG_USB_HIDDEV is not set 1172# CONFIG_USB_HIDDEV is not set
1165# CONFIG_USB_AIPTEK is not set 1173# CONFIG_USB_AIPTEK is not set
@@ -1444,6 +1452,11 @@ CONFIG_NLS_ISO8859_15=y
1444CONFIG_NLS_UTF8=y 1452CONFIG_NLS_UTF8=y
1445 1453
1446# 1454#
1455# Distributed Lock Manager
1456#
1457# CONFIG_DLM is not set
1458
1459#
1447# Instrumentation Support 1460# Instrumentation Support
1448# 1461#
1449CONFIG_PROFILING=y 1462CONFIG_PROFILING=y
@@ -1509,6 +1522,7 @@ CONFIG_DOUBLEFAULT=y
1509# 1522#
1510# Library routines 1523# Library routines
1511# 1524#
1525CONFIG_BITREVERSE=y
1512# CONFIG_CRC_CCITT is not set 1526# CONFIG_CRC_CCITT is not set
1513# CONFIG_CRC16 is not set 1527# CONFIG_CRC16 is not set
1514CONFIG_CRC32=y 1528CONFIG_CRC32=y
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index e21dcde0790e..2424cc9c7b3d 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -2485,7 +2485,7 @@ device_initcall(ioapic_init_sysfs);
2485int create_irq(void) 2485int create_irq(void)
2486{ 2486{
2487 /* Allocate an unused irq */ 2487 /* Allocate an unused irq */
2488 int irq, new, vector; 2488 int irq, new, vector = 0;
2489 unsigned long flags; 2489 unsigned long flags;
2490 2490
2491 irq = -ENOSPC; 2491 irq = -ENOSPC;
diff --git a/arch/i386/kernel/nmi.c b/arch/i386/kernel/nmi.c
index f5bc7e1be801..a5e34d655965 100644
--- a/arch/i386/kernel/nmi.c
+++ b/arch/i386/kernel/nmi.c
@@ -195,6 +195,8 @@ static __cpuinit inline int nmi_known_cpu(void)
195 return 0; 195 return 0;
196} 196}
197 197
198static int endflag __initdata = 0;
199
198#ifdef CONFIG_SMP 200#ifdef CONFIG_SMP
199/* The performance counters used by NMI_LOCAL_APIC don't trigger when 201/* The performance counters used by NMI_LOCAL_APIC don't trigger when
200 * the CPU is idle. To make sure the NMI watchdog really ticks on all 202 * the CPU is idle. To make sure the NMI watchdog really ticks on all
@@ -202,7 +204,6 @@ static __cpuinit inline int nmi_known_cpu(void)
202 */ 204 */
203static __init void nmi_cpu_busy(void *data) 205static __init void nmi_cpu_busy(void *data)
204{ 206{
205 volatile int *endflag = data;
206 local_irq_enable_in_hardirq(); 207 local_irq_enable_in_hardirq();
207 /* Intentionally don't use cpu_relax here. This is 208 /* Intentionally don't use cpu_relax here. This is
208 to make sure that the performance counter really ticks, 209 to make sure that the performance counter really ticks,
@@ -210,14 +211,13 @@ static __init void nmi_cpu_busy(void *data)
210 pause instruction. On a real HT machine this is fine because 211 pause instruction. On a real HT machine this is fine because
211 all other CPUs are busy with "useless" delay loops and don't 212 all other CPUs are busy with "useless" delay loops and don't
212 care if they get somewhat less cycles. */ 213 care if they get somewhat less cycles. */
213 while (*endflag == 0) 214 while (endflag == 0)
214 barrier(); 215 mb();
215} 216}
216#endif 217#endif
217 218
218static int __init check_nmi_watchdog(void) 219static int __init check_nmi_watchdog(void)
219{ 220{
220 volatile int endflag = 0;
221 unsigned int *prev_nmi_count; 221 unsigned int *prev_nmi_count;
222 int cpu; 222 int cpu;
223 223
diff --git a/arch/i386/kernel/quirks.c b/arch/i386/kernel/quirks.c
index a01320a7b636..34874c398b44 100644
--- a/arch/i386/kernel/quirks.c
+++ b/arch/i386/kernel/quirks.c
@@ -10,13 +10,38 @@
10#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI) 10#if defined(CONFIG_X86_IO_APIC) && defined(CONFIG_SMP) && defined(CONFIG_PCI)
11static void __devinit verify_quirk_intel_irqbalance(struct pci_dev *dev) 11static void __devinit verify_quirk_intel_irqbalance(struct pci_dev *dev)
12{ 12{
13 u8 config, rev;
14 u32 word;
15
16 /* BIOS may enable hardware IRQ balancing for
17 * E7520/E7320/E7525(revision ID 0x9 and below)
18 * based platforms.
19 * For those platforms, make sure that the genapic is set to 'flat'
20 */
21 pci_read_config_byte(dev, PCI_CLASS_REVISION, &rev);
22 if (rev > 0x9)
23 return;
24
25 /* enable access to config space*/
26 pci_read_config_byte(dev, 0xf4, &config);
27 pci_write_config_byte(dev, 0xf4, config|0x2);
28
29 /* read xTPR register */
30 raw_pci_ops->read(0, 0, 0x40, 0x4c, 2, &word);
31
32 if (!(word & (1 << 13))) {
13#ifdef CONFIG_X86_64 33#ifdef CONFIG_X86_64
14 if (genapic != &apic_flat) 34 if (genapic != &apic_flat)
15 panic("APIC mode must be flat on this system\n"); 35 panic("APIC mode must be flat on this system\n");
16#elif defined(CONFIG_X86_GENERICARCH) 36#elif defined(CONFIG_X86_GENERICARCH)
17 if (genapic != &apic_default) 37 if (genapic != &apic_default)
18 panic("APIC mode must be default(flat) on this system. Use apic=default\n"); 38 panic("APIC mode must be default(flat) on this system. Use apic=default\n");
19#endif 39#endif
40 }
41
42 /* put back the original value for config space*/
43 if (!(config & 0x2))
44 pci_write_config_byte(dev, 0xf4, config);
20} 45}
21 46
22void __init quirk_intel_irqbalance(void) 47void __init quirk_intel_irqbalance(void)
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c
index 1e00b03163b9..b0f84e5778ad 100644
--- a/arch/i386/kernel/smpboot.c
+++ b/arch/i386/kernel/smpboot.c
@@ -69,7 +69,7 @@ static int __devinitdata smp_b_stepping;
69 69
70/* Number of siblings per CPU package */ 70/* Number of siblings per CPU package */
71int smp_num_siblings = 1; 71int smp_num_siblings = 1;
72#ifdef CONFIG_X86_HT 72#ifdef CONFIG_SMP
73EXPORT_SYMBOL(smp_num_siblings); 73EXPORT_SYMBOL(smp_num_siblings);
74#endif 74#endif
75 75
diff --git a/arch/i386/kernel/vmlinux.lds.S b/arch/i386/kernel/vmlinux.lds.S
index 16d3c7133ad7..a53c8b1854b5 100644
--- a/arch/i386/kernel/vmlinux.lds.S
+++ b/arch/i386/kernel/vmlinux.lds.S
@@ -26,6 +26,7 @@ OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
26OUTPUT_ARCH(i386) 26OUTPUT_ARCH(i386)
27ENTRY(phys_startup_32) 27ENTRY(phys_startup_32)
28jiffies = jiffies_64; 28jiffies = jiffies_64;
29_proxy_pda = 0;
29 30
30PHDRS { 31PHDRS {
31 text PT_LOAD FLAGS(5); /* R_E */ 32 text PT_LOAD FLAGS(5); /* R_E */
diff --git a/arch/x86_64/defconfig b/arch/x86_64/defconfig
index 96f226cfb339..1a1c6a1a299b 100644
--- a/arch/x86_64/defconfig
+++ b/arch/x86_64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.19-git7 3# Linux kernel version: 2.6.19-git14
4# Wed Dec 6 23:50:47 2006 4# Sat Dec 9 21:23:09 2006
5# 5#
6CONFIG_X86_64=y 6CONFIG_X86_64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -22,6 +22,9 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y
22CONFIG_ARCH_POPULATES_NODE_MAP=y 22CONFIG_ARCH_POPULATES_NODE_MAP=y
23CONFIG_DMI=y 23CONFIG_DMI=y
24CONFIG_AUDIT_ARCH=y 24CONFIG_AUDIT_ARCH=y
25CONFIG_GENERIC_BUG=y
26# CONFIG_ARCH_HAS_ILOG2_U32 is not set
27# CONFIG_ARCH_HAS_ILOG2_U64 is not set
25CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 28CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
26 29
27# 30#
@@ -170,6 +173,7 @@ CONFIG_SECCOMP=y
170# CONFIG_CC_STACKPROTECTOR is not set 173# CONFIG_CC_STACKPROTECTOR is not set
171# CONFIG_HZ_100 is not set 174# CONFIG_HZ_100 is not set
172CONFIG_HZ_250=y 175CONFIG_HZ_250=y
176# CONFIG_HZ_300 is not set
173# CONFIG_HZ_1000 is not set 177# CONFIG_HZ_1000 is not set
174CONFIG_HZ=250 178CONFIG_HZ=250
175# CONFIG_REORDER is not set 179# CONFIG_REORDER is not set
@@ -514,6 +518,7 @@ CONFIG_IDEDMA_AUTO=y
514# 518#
515# CONFIG_RAID_ATTRS is not set 519# CONFIG_RAID_ATTRS is not set
516CONFIG_SCSI=y 520CONFIG_SCSI=y
521# CONFIG_SCSI_TGT is not set
517CONFIG_SCSI_NETLINK=y 522CONFIG_SCSI_NETLINK=y
518# CONFIG_SCSI_PROC_FS is not set 523# CONFIG_SCSI_PROC_FS is not set
519 524
@@ -534,6 +539,7 @@ CONFIG_CHR_DEV_SG=y
534# CONFIG_SCSI_MULTI_LUN is not set 539# CONFIG_SCSI_MULTI_LUN is not set
535CONFIG_SCSI_CONSTANTS=y 540CONFIG_SCSI_CONSTANTS=y
536# CONFIG_SCSI_LOGGING is not set 541# CONFIG_SCSI_LOGGING is not set
542# CONFIG_SCSI_SCAN_ASYNC is not set
537 543
538# 544#
539# SCSI Transports 545# SCSI Transports
@@ -587,6 +593,7 @@ CONFIG_MEGARAID_SAS=y
587# CONFIG_SCSI_DC395x is not set 593# CONFIG_SCSI_DC395x is not set
588# CONFIG_SCSI_DC390T is not set 594# CONFIG_SCSI_DC390T is not set
589# CONFIG_SCSI_DEBUG is not set 595# CONFIG_SCSI_DEBUG is not set
596# CONFIG_SCSI_SRP is not set
590 597
591# 598#
592# Serial ATA (prod) and Parallel ATA (experimental) drivers 599# Serial ATA (prod) and Parallel ATA (experimental) drivers
@@ -1106,10 +1113,7 @@ CONFIG_SOUND=y
1106# Open Sound System 1113# Open Sound System
1107# 1114#
1108CONFIG_SOUND_PRIME=y 1115CONFIG_SOUND_PRIME=y
1109CONFIG_OSS_OBSOLETE_DRIVER=y
1110# CONFIG_SOUND_BT878 is not set 1116# CONFIG_SOUND_BT878 is not set
1111# CONFIG_SOUND_EMU10K1 is not set
1112# CONFIG_SOUND_FUSION is not set
1113# CONFIG_SOUND_ES1371 is not set 1117# CONFIG_SOUND_ES1371 is not set
1114CONFIG_SOUND_ICH=y 1118CONFIG_SOUND_ICH=y
1115# CONFIG_SOUND_TRIDENT is not set 1119# CONFIG_SOUND_TRIDENT is not set
@@ -1119,6 +1123,11 @@ CONFIG_SOUND_ICH=y
1119# CONFIG_SOUND_OSS is not set 1123# CONFIG_SOUND_OSS is not set
1120 1124
1121# 1125#
1126# HID Devices
1127#
1128CONFIG_HID=y
1129
1130#
1122# USB support 1131# USB support
1123# 1132#
1124CONFIG_USB_ARCH_HAS_HCD=y 1133CONFIG_USB_ARCH_HAS_HCD=y
@@ -1182,8 +1191,7 @@ CONFIG_USB_STORAGE=y
1182# USB Input Devices 1191# USB Input Devices
1183# 1192#
1184CONFIG_USB_HID=y 1193CONFIG_USB_HID=y
1185CONFIG_USB_HIDINPUT=y 1194# CONFIG_USB_HID_POWERBOOK is not set
1186# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1187# CONFIG_HID_FF is not set 1195# CONFIG_HID_FF is not set
1188# CONFIG_USB_HIDDEV is not set 1196# CONFIG_USB_HIDDEV is not set
1189# CONFIG_USB_AIPTEK is not set 1197# CONFIG_USB_AIPTEK is not set
@@ -1475,6 +1483,11 @@ CONFIG_NLS_ISO8859_15=y
1475CONFIG_NLS_UTF8=y 1483CONFIG_NLS_UTF8=y
1476 1484
1477# 1485#
1486# Distributed Lock Manager
1487#
1488# CONFIG_DLM is not set
1489
1490#
1478# Instrumentation Support 1491# Instrumentation Support
1479# 1492#
1480CONFIG_PROFILING=y 1493CONFIG_PROFILING=y
@@ -1504,6 +1517,7 @@ CONFIG_DETECT_SOFTLOCKUP=y
1504# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1517# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1505# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1518# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1506# CONFIG_DEBUG_KOBJECT is not set 1519# CONFIG_DEBUG_KOBJECT is not set
1520CONFIG_DEBUG_BUGVERBOSE=y
1507# CONFIG_DEBUG_INFO is not set 1521# CONFIG_DEBUG_INFO is not set
1508CONFIG_DEBUG_FS=y 1522CONFIG_DEBUG_FS=y
1509# CONFIG_DEBUG_VM is not set 1523# CONFIG_DEBUG_VM is not set
@@ -1534,6 +1548,7 @@ CONFIG_DEBUG_STACKOVERFLOW=y
1534# 1548#
1535# Library routines 1549# Library routines
1536# 1550#
1551CONFIG_BITREVERSE=y
1537# CONFIG_CRC_CCITT is not set 1552# CONFIG_CRC_CCITT is not set
1538# CONFIG_CRC16 is not set 1553# CONFIG_CRC16 is not set
1539CONFIG_CRC32=y 1554CONFIG_CRC32=y
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c
index 27e95e7922c1..186aebbae32d 100644
--- a/arch/x86_64/kernel/nmi.c
+++ b/arch/x86_64/kernel/nmi.c
@@ -193,6 +193,8 @@ void nmi_watchdog_default(void)
193 nmi_watchdog = NMI_IO_APIC; 193 nmi_watchdog = NMI_IO_APIC;
194} 194}
195 195
196static int endflag __initdata = 0;
197
196#ifdef CONFIG_SMP 198#ifdef CONFIG_SMP
197/* The performance counters used by NMI_LOCAL_APIC don't trigger when 199/* The performance counters used by NMI_LOCAL_APIC don't trigger when
198 * the CPU is idle. To make sure the NMI watchdog really ticks on all 200 * the CPU is idle. To make sure the NMI watchdog really ticks on all
@@ -200,7 +202,6 @@ void nmi_watchdog_default(void)
200 */ 202 */
201static __init void nmi_cpu_busy(void *data) 203static __init void nmi_cpu_busy(void *data)
202{ 204{
203 volatile int *endflag = data;
204 local_irq_enable_in_hardirq(); 205 local_irq_enable_in_hardirq();
205 /* Intentionally don't use cpu_relax here. This is 206 /* Intentionally don't use cpu_relax here. This is
206 to make sure that the performance counter really ticks, 207 to make sure that the performance counter really ticks,
@@ -208,14 +209,13 @@ static __init void nmi_cpu_busy(void *data)
208 pause instruction. On a real HT machine this is fine because 209 pause instruction. On a real HT machine this is fine because
209 all other CPUs are busy with "useless" delay loops and don't 210 all other CPUs are busy with "useless" delay loops and don't
210 care if they get somewhat less cycles. */ 211 care if they get somewhat less cycles. */
211 while (*endflag == 0) 212 while (endflag == 0)
212 barrier(); 213 mb();
213} 214}
214#endif 215#endif
215 216
216int __init check_nmi_watchdog (void) 217int __init check_nmi_watchdog (void)
217{ 218{
218 volatile int endflag = 0;
219 int *counts; 219 int *counts;
220 int cpu; 220 int cpu;
221 221
@@ -256,6 +256,7 @@ int __init check_nmi_watchdog (void)
256 if (!atomic_read(&nmi_active)) { 256 if (!atomic_read(&nmi_active)) {
257 kfree(counts); 257 kfree(counts);
258 atomic_set(&nmi_active, -1); 258 atomic_set(&nmi_active, -1);
259 endflag = 1;
259 return -1; 260 return -1;
260 } 261 }
261 endflag = 1; 262 endflag = 1;
diff --git a/arch/x86_64/kernel/vmlinux.lds.S b/arch/x86_64/kernel/vmlinux.lds.S
index 6c417788c54b..514be5dd2303 100644
--- a/arch/x86_64/kernel/vmlinux.lds.S
+++ b/arch/x86_64/kernel/vmlinux.lds.S
@@ -13,6 +13,7 @@ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
13OUTPUT_ARCH(i386:x86-64) 13OUTPUT_ARCH(i386:x86-64)
14ENTRY(phys_startup_64) 14ENTRY(phys_startup_64)
15jiffies_64 = jiffies; 15jiffies_64 = jiffies;
16_proxy_pda = 0;
16PHDRS { 17PHDRS {
17 text PT_LOAD FLAGS(5); /* R_E */ 18 text PT_LOAD FLAGS(5); /* R_E */
18 data PT_LOAD FLAGS(7); /* RWE */ 19 data PT_LOAD FLAGS(7); /* RWE */