diff options
author | Paul Mackerras <paulus@samba.org> | 2007-04-12 13:50:03 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-04-12 13:50:03 -0400 |
commit | e049d1ca3094f3d1d94617f456a9961202f96e3a (patch) | |
tree | a30397ad22f2fbea268bd28fa69c60aad9dfa62a /arch/x86_64 | |
parent | edfac96a92b88d3b0b53e3f8231b74beee9ecd1d (diff) | |
parent | 80584ff3b99c36ead7e130e453b3a48b18072d18 (diff) |
Merge branch 'linux-2.6' into for-2.6.22
Diffstat (limited to 'arch/x86_64')
-rw-r--r-- | arch/x86_64/boot/video.S | 14 | ||||
-rw-r--r-- | arch/x86_64/defconfig | 53 | ||||
-rw-r--r-- | arch/x86_64/ia32/ia32entry.S | 2 | ||||
-rw-r--r-- | arch/x86_64/ia32/ptrace32.c | 1 | ||||
-rw-r--r-- | arch/x86_64/kernel/acpi/sleep.c | 4 | ||||
-rw-r--r-- | arch/x86_64/kernel/apic.c | 19 | ||||
-rw-r--r-- | arch/x86_64/kernel/cpufreq/Kconfig | 1 | ||||
-rw-r--r-- | arch/x86_64/kernel/e820.c | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/early-quirks.c | 17 | ||||
-rw-r--r-- | arch/x86_64/kernel/i8259.c | 6 | ||||
-rw-r--r-- | arch/x86_64/kernel/mpparse.c | 4 | ||||
-rw-r--r-- | arch/x86_64/kernel/nmi.c | 125 | ||||
-rw-r--r-- | arch/x86_64/kernel/pci-gart.c | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/process.c | 13 | ||||
-rw-r--r-- | arch/x86_64/kernel/smpboot.c | 5 | ||||
-rw-r--r-- | arch/x86_64/kernel/vsyscall.c | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/x8664_ksyms.c | 1 |
17 files changed, 195 insertions, 76 deletions
diff --git a/arch/x86_64/boot/video.S b/arch/x86_64/boot/video.S index d6ff88f35135..6090516c9c7f 100644 --- a/arch/x86_64/boot/video.S +++ b/arch/x86_64/boot/video.S | |||
@@ -571,6 +571,16 @@ setr1: lodsw | |||
571 | jmp _m_s | 571 | jmp _m_s |
572 | 572 | ||
573 | check_vesa: | 573 | check_vesa: |
574 | #ifdef CONFIG_FIRMWARE_EDID | ||
575 | leaw modelist+1024, %di | ||
576 | movw $0x4f00, %ax | ||
577 | int $0x10 | ||
578 | cmpw $0x004f, %ax | ||
579 | jnz setbad | ||
580 | |||
581 | movw 4(%di), %ax | ||
582 | movw %ax, vbe_version | ||
583 | #endif | ||
574 | leaw modelist+1024, %di | 584 | leaw modelist+1024, %di |
575 | subb $VIDEO_FIRST_VESA>>8, %bh | 585 | subb $VIDEO_FIRST_VESA>>8, %bh |
576 | movw %bx, %cx # Get mode information structure | 586 | movw %bx, %cx # Get mode information structure |
@@ -1945,6 +1955,9 @@ store_edid: | |||
1945 | rep | 1955 | rep |
1946 | stosl | 1956 | stosl |
1947 | 1957 | ||
1958 | cmpw $0x0200, vbe_version # only do EDID on >= VBE2.0 | ||
1959 | jl no_edid | ||
1960 | |||
1948 | pushw %es # save ES | 1961 | pushw %es # save ES |
1949 | xorw %di, %di # Report Capability | 1962 | xorw %di, %di # Report Capability |
1950 | pushw %di | 1963 | pushw %di |
@@ -1987,6 +2000,7 @@ do_restore: .byte 0 # Screen contents altered during mode change | |||
1987 | svga_prefix: .byte VIDEO_FIRST_BIOS>>8 # Default prefix for BIOS modes | 2000 | svga_prefix: .byte VIDEO_FIRST_BIOS>>8 # Default prefix for BIOS modes |
1988 | graphic_mode: .byte 0 # Graphic mode with a linear frame buffer | 2001 | graphic_mode: .byte 0 # Graphic mode with a linear frame buffer |
1989 | dac_size: .byte 6 # DAC bit depth | 2002 | dac_size: .byte 6 # DAC bit depth |
2003 | vbe_version: .word 0 # VBE bios version | ||
1990 | 2004 | ||
1991 | # Status messages | 2005 | # Status messages |
1992 | keymsg: .ascii "Press <RETURN> to see video modes available, " | 2006 | keymsg: .ascii "Press <RETURN> to see video modes available, " |
diff --git a/arch/x86_64/defconfig b/arch/x86_64/defconfig index 293a4a4c609e..7a1e251e333d 100644 --- a/arch/x86_64/defconfig +++ b/arch/x86_64/defconfig | |||
@@ -1,11 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.20-git8 | 3 | # Linux kernel version: 2.6.21-rc3 |
4 | # Tue Feb 13 11:25:16 2007 | 4 | # Wed Mar 7 15:29:47 2007 |
5 | # | 5 | # |
6 | CONFIG_X86_64=y | 6 | CONFIG_X86_64=y |
7 | CONFIG_64BIT=y | 7 | CONFIG_64BIT=y |
8 | CONFIG_X86=y | 8 | CONFIG_X86=y |
9 | CONFIG_GENERIC_TIME=y | ||
10 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
9 | CONFIG_ZONE_DMA32=y | 11 | CONFIG_ZONE_DMA32=y |
10 | CONFIG_LOCKDEP_SUPPORT=y | 12 | CONFIG_LOCKDEP_SUPPORT=y |
11 | CONFIG_STACKTRACE_SUPPORT=y | 13 | CONFIG_STACKTRACE_SUPPORT=y |
@@ -43,6 +45,7 @@ CONFIG_LOCALVERSION_AUTO=y | |||
43 | CONFIG_SWAP=y | 45 | CONFIG_SWAP=y |
44 | CONFIG_SYSVIPC=y | 46 | CONFIG_SYSVIPC=y |
45 | # CONFIG_IPC_NS is not set | 47 | # CONFIG_IPC_NS is not set |
48 | CONFIG_SYSVIPC_SYSCTL=y | ||
46 | CONFIG_POSIX_MQUEUE=y | 49 | CONFIG_POSIX_MQUEUE=y |
47 | # CONFIG_BSD_PROCESS_ACCT is not set | 50 | # CONFIG_BSD_PROCESS_ACCT is not set |
48 | # CONFIG_TASKSTATS is not set | 51 | # CONFIG_TASKSTATS is not set |
@@ -53,6 +56,7 @@ CONFIG_IKCONFIG_PROC=y | |||
53 | # CONFIG_CPUSETS is not set | 56 | # CONFIG_CPUSETS is not set |
54 | CONFIG_SYSFS_DEPRECATED=y | 57 | CONFIG_SYSFS_DEPRECATED=y |
55 | # CONFIG_RELAY is not set | 58 | # CONFIG_RELAY is not set |
59 | CONFIG_BLK_DEV_INITRD=y | ||
56 | CONFIG_INITRAMFS_SOURCE="" | 60 | CONFIG_INITRAMFS_SOURCE="" |
57 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 61 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
58 | CONFIG_SYSCTL=y | 62 | CONFIG_SYSCTL=y |
@@ -114,11 +118,11 @@ CONFIG_X86_PC=y | |||
114 | # CONFIG_X86_VSMP is not set | 118 | # CONFIG_X86_VSMP is not set |
115 | # CONFIG_MK8 is not set | 119 | # CONFIG_MK8 is not set |
116 | # CONFIG_MPSC is not set | 120 | # CONFIG_MPSC is not set |
117 | CONFIG_MCORE2=y | 121 | # CONFIG_MCORE2 is not set |
118 | # CONFIG_GENERIC_CPU is not set | 122 | CONFIG_GENERIC_CPU=y |
119 | CONFIG_X86_L1_CACHE_BYTES=64 | 123 | CONFIG_X86_L1_CACHE_BYTES=128 |
120 | CONFIG_X86_L1_CACHE_SHIFT=6 | 124 | CONFIG_X86_L1_CACHE_SHIFT=7 |
121 | CONFIG_X86_INTERNODE_CACHE_BYTES=64 | 125 | CONFIG_X86_INTERNODE_CACHE_BYTES=128 |
122 | CONFIG_X86_TSC=y | 126 | CONFIG_X86_TSC=y |
123 | CONFIG_X86_GOOD_APIC=y | 127 | CONFIG_X86_GOOD_APIC=y |
124 | # CONFIG_MICROCODE is not set | 128 | # CONFIG_MICROCODE is not set |
@@ -207,10 +211,8 @@ CONFIG_ACPI_PROCFS=y | |||
207 | CONFIG_ACPI_AC=y | 211 | CONFIG_ACPI_AC=y |
208 | CONFIG_ACPI_BATTERY=y | 212 | CONFIG_ACPI_BATTERY=y |
209 | CONFIG_ACPI_BUTTON=y | 213 | CONFIG_ACPI_BUTTON=y |
210 | # CONFIG_ACPI_HOTKEY is not set | ||
211 | CONFIG_ACPI_FAN=y | 214 | CONFIG_ACPI_FAN=y |
212 | # CONFIG_ACPI_DOCK is not set | 215 | # CONFIG_ACPI_DOCK is not set |
213 | # CONFIG_ACPI_BAY is not set | ||
214 | CONFIG_ACPI_PROCESSOR=y | 216 | CONFIG_ACPI_PROCESSOR=y |
215 | CONFIG_ACPI_HOTPLUG_CPU=y | 217 | CONFIG_ACPI_HOTPLUG_CPU=y |
216 | CONFIG_ACPI_THERMAL=y | 218 | CONFIG_ACPI_THERMAL=y |
@@ -319,7 +321,7 @@ CONFIG_IP_PNP_DHCP=y | |||
319 | # CONFIG_INET_ESP is not set | 321 | # CONFIG_INET_ESP is not set |
320 | # CONFIG_INET_IPCOMP is not set | 322 | # CONFIG_INET_IPCOMP is not set |
321 | # CONFIG_INET_XFRM_TUNNEL is not set | 323 | # CONFIG_INET_XFRM_TUNNEL is not set |
322 | # CONFIG_INET_TUNNEL is not set | 324 | CONFIG_INET_TUNNEL=y |
323 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | 325 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set |
324 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | 326 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set |
325 | # CONFIG_INET_XFRM_MODE_BEET is not set | 327 | # CONFIG_INET_XFRM_MODE_BEET is not set |
@@ -421,7 +423,13 @@ CONFIG_FW_LOADER=y | |||
421 | # | 423 | # |
422 | # Plug and Play support | 424 | # Plug and Play support |
423 | # | 425 | # |
424 | # CONFIG_PNP is not set | 426 | CONFIG_PNP=y |
427 | # CONFIG_PNP_DEBUG is not set | ||
428 | |||
429 | # | ||
430 | # Protocols | ||
431 | # | ||
432 | CONFIG_PNPACPI=y | ||
425 | 433 | ||
426 | # | 434 | # |
427 | # Block devices | 435 | # Block devices |
@@ -441,7 +449,6 @@ CONFIG_BLK_DEV_RAM=y | |||
441 | CONFIG_BLK_DEV_RAM_COUNT=16 | 449 | CONFIG_BLK_DEV_RAM_COUNT=16 |
442 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 450 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
443 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 451 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
444 | CONFIG_BLK_DEV_INITRD=y | ||
445 | # CONFIG_CDROM_PKTCDVD is not set | 452 | # CONFIG_CDROM_PKTCDVD is not set |
446 | # CONFIG_ATA_OVER_ETH is not set | 453 | # CONFIG_ATA_OVER_ETH is not set |
447 | 454 | ||
@@ -451,6 +458,7 @@ CONFIG_BLK_DEV_INITRD=y | |||
451 | # CONFIG_IBM_ASM is not set | 458 | # CONFIG_IBM_ASM is not set |
452 | # CONFIG_SGI_IOC4 is not set | 459 | # CONFIG_SGI_IOC4 is not set |
453 | # CONFIG_TIFM_CORE is not set | 460 | # CONFIG_TIFM_CORE is not set |
461 | # CONFIG_SONY_LAPTOP is not set | ||
454 | 462 | ||
455 | # | 463 | # |
456 | # ATA/ATAPI/MFM/RLL support | 464 | # ATA/ATAPI/MFM/RLL support |
@@ -477,6 +485,7 @@ CONFIG_BLK_DEV_IDEACPI=y | |||
477 | # | 485 | # |
478 | CONFIG_IDE_GENERIC=y | 486 | CONFIG_IDE_GENERIC=y |
479 | # CONFIG_BLK_DEV_CMD640 is not set | 487 | # CONFIG_BLK_DEV_CMD640 is not set |
488 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
480 | CONFIG_BLK_DEV_IDEPCI=y | 489 | CONFIG_BLK_DEV_IDEPCI=y |
481 | # CONFIG_IDEPCI_SHARE_IRQ is not set | 490 | # CONFIG_IDEPCI_SHARE_IRQ is not set |
482 | # CONFIG_BLK_DEV_OFFBOARD is not set | 491 | # CONFIG_BLK_DEV_OFFBOARD is not set |
@@ -623,6 +632,7 @@ CONFIG_SATA_VIA=y | |||
623 | # CONFIG_SATA_VITESSE is not set | 632 | # CONFIG_SATA_VITESSE is not set |
624 | # CONFIG_SATA_INIC162X is not set | 633 | # CONFIG_SATA_INIC162X is not set |
625 | CONFIG_SATA_INTEL_COMBINED=y | 634 | CONFIG_SATA_INTEL_COMBINED=y |
635 | CONFIG_SATA_ACPI=y | ||
626 | # CONFIG_PATA_ALI is not set | 636 | # CONFIG_PATA_ALI is not set |
627 | # CONFIG_PATA_AMD is not set | 637 | # CONFIG_PATA_AMD is not set |
628 | # CONFIG_PATA_ARTOP is not set | 638 | # CONFIG_PATA_ARTOP is not set |
@@ -726,6 +736,7 @@ CONFIG_NETDEVICES=y | |||
726 | # CONFIG_BONDING is not set | 736 | # CONFIG_BONDING is not set |
727 | # CONFIG_EQUALIZER is not set | 737 | # CONFIG_EQUALIZER is not set |
728 | CONFIG_TUN=y | 738 | CONFIG_TUN=y |
739 | # CONFIG_NET_SB1000 is not set | ||
729 | 740 | ||
730 | # | 741 | # |
731 | # ARCnet devices | 742 | # ARCnet devices |
@@ -920,6 +931,7 @@ CONFIG_HW_CONSOLE=y | |||
920 | CONFIG_SERIAL_8250=y | 931 | CONFIG_SERIAL_8250=y |
921 | CONFIG_SERIAL_8250_CONSOLE=y | 932 | CONFIG_SERIAL_8250_CONSOLE=y |
922 | CONFIG_SERIAL_8250_PCI=y | 933 | CONFIG_SERIAL_8250_PCI=y |
934 | CONFIG_SERIAL_8250_PNP=y | ||
923 | CONFIG_SERIAL_8250_NR_UARTS=4 | 935 | CONFIG_SERIAL_8250_NR_UARTS=4 |
924 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 | 936 | CONFIG_SERIAL_8250_RUNTIME_UARTS=4 |
925 | # CONFIG_SERIAL_8250_EXTENDED is not set | 937 | # CONFIG_SERIAL_8250_EXTENDED is not set |
@@ -1001,6 +1013,7 @@ CONFIG_I2C_ISA=m | |||
1001 | # CONFIG_I2C_NFORCE2 is not set | 1013 | # CONFIG_I2C_NFORCE2 is not set |
1002 | # CONFIG_I2C_OCORES is not set | 1014 | # CONFIG_I2C_OCORES is not set |
1003 | # CONFIG_I2C_PARPORT_LIGHT is not set | 1015 | # CONFIG_I2C_PARPORT_LIGHT is not set |
1016 | # CONFIG_I2C_PASEMI is not set | ||
1004 | # CONFIG_I2C_PROSAVAGE is not set | 1017 | # CONFIG_I2C_PROSAVAGE is not set |
1005 | # CONFIG_I2C_SAVAGE4 is not set | 1018 | # CONFIG_I2C_SAVAGE4 is not set |
1006 | # CONFIG_I2C_SIS5595 is not set | 1019 | # CONFIG_I2C_SIS5595 is not set |
@@ -1047,6 +1060,7 @@ CONFIG_HWMON=y | |||
1047 | # CONFIG_SENSORS_ADM1021 is not set | 1060 | # CONFIG_SENSORS_ADM1021 is not set |
1048 | # CONFIG_SENSORS_ADM1025 is not set | 1061 | # CONFIG_SENSORS_ADM1025 is not set |
1049 | # CONFIG_SENSORS_ADM1026 is not set | 1062 | # CONFIG_SENSORS_ADM1026 is not set |
1063 | # CONFIG_SENSORS_ADM1029 is not set | ||
1050 | # CONFIG_SENSORS_ADM1031 is not set | 1064 | # CONFIG_SENSORS_ADM1031 is not set |
1051 | # CONFIG_SENSORS_ADM9240 is not set | 1065 | # CONFIG_SENSORS_ADM9240 is not set |
1052 | # CONFIG_SENSORS_K8TEMP is not set | 1066 | # CONFIG_SENSORS_K8TEMP is not set |
@@ -1090,6 +1104,11 @@ CONFIG_SENSORS_SMSC47B397=m | |||
1090 | # CONFIG_HWMON_DEBUG_CHIP is not set | 1104 | # CONFIG_HWMON_DEBUG_CHIP is not set |
1091 | 1105 | ||
1092 | # | 1106 | # |
1107 | # Multifunction device drivers | ||
1108 | # | ||
1109 | # CONFIG_MFD_SM501 is not set | ||
1110 | |||
1111 | # | ||
1093 | # Multimedia devices | 1112 | # Multimedia devices |
1094 | # | 1113 | # |
1095 | # CONFIG_VIDEO_DEV is not set | 1114 | # CONFIG_VIDEO_DEV is not set |
@@ -1103,7 +1122,7 @@ CONFIG_SENSORS_SMSC47B397=m | |||
1103 | # | 1122 | # |
1104 | # Graphics support | 1123 | # Graphics support |
1105 | # | 1124 | # |
1106 | # CONFIG_FIRMWARE_EDID is not set | 1125 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
1107 | # CONFIG_FB is not set | 1126 | # CONFIG_FB is not set |
1108 | 1127 | ||
1109 | # | 1128 | # |
@@ -1114,7 +1133,6 @@ CONFIG_VGACON_SOFT_SCROLLBACK=y | |||
1114 | CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=256 | 1133 | CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=256 |
1115 | CONFIG_VIDEO_SELECT=y | 1134 | CONFIG_VIDEO_SELECT=y |
1116 | CONFIG_DUMMY_CONSOLE=y | 1135 | CONFIG_DUMMY_CONSOLE=y |
1117 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
1118 | 1136 | ||
1119 | # | 1137 | # |
1120 | # Sound | 1138 | # Sound |
@@ -1130,9 +1148,8 @@ CONFIG_SOUND=y | |||
1130 | # Open Sound System | 1148 | # Open Sound System |
1131 | # | 1149 | # |
1132 | CONFIG_SOUND_PRIME=y | 1150 | CONFIG_SOUND_PRIME=y |
1133 | CONFIG_OBSOLETE_OSS=y | 1151 | # CONFIG_OBSOLETE_OSS is not set |
1134 | # CONFIG_SOUND_BT878 is not set | 1152 | # CONFIG_SOUND_BT878 is not set |
1135 | # CONFIG_SOUND_ES1371 is not set | ||
1136 | CONFIG_SOUND_ICH=y | 1153 | CONFIG_SOUND_ICH=y |
1137 | # CONFIG_SOUND_TRIDENT is not set | 1154 | # CONFIG_SOUND_TRIDENT is not set |
1138 | # CONFIG_SOUND_MSNDCLAS is not set | 1155 | # CONFIG_SOUND_MSNDCLAS is not set |
@@ -1263,6 +1280,7 @@ CONFIG_USB_MON=y | |||
1263 | # CONFIG_USB_RIO500 is not set | 1280 | # CONFIG_USB_RIO500 is not set |
1264 | # CONFIG_USB_LEGOTOWER is not set | 1281 | # CONFIG_USB_LEGOTOWER is not set |
1265 | # CONFIG_USB_LCD is not set | 1282 | # CONFIG_USB_LCD is not set |
1283 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1266 | # CONFIG_USB_LED is not set | 1284 | # CONFIG_USB_LED is not set |
1267 | # CONFIG_USB_CYPRESS_CY7C63 is not set | 1285 | # CONFIG_USB_CYPRESS_CY7C63 is not set |
1268 | # CONFIG_USB_CYTHERM is not set | 1286 | # CONFIG_USB_CYTHERM is not set |
@@ -1273,6 +1291,7 @@ CONFIG_USB_MON=y | |||
1273 | # CONFIG_USB_SISUSBVGA is not set | 1291 | # CONFIG_USB_SISUSBVGA is not set |
1274 | # CONFIG_USB_LD is not set | 1292 | # CONFIG_USB_LD is not set |
1275 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1293 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1294 | # CONFIG_USB_IOWARRIOR is not set | ||
1276 | # CONFIG_USB_TEST is not set | 1295 | # CONFIG_USB_TEST is not set |
1277 | 1296 | ||
1278 | # | 1297 | # |
@@ -1538,6 +1557,7 @@ CONFIG_DEBUG_KERNEL=y | |||
1538 | CONFIG_LOG_BUF_SHIFT=18 | 1557 | CONFIG_LOG_BUF_SHIFT=18 |
1539 | CONFIG_DETECT_SOFTLOCKUP=y | 1558 | CONFIG_DETECT_SOFTLOCKUP=y |
1540 | # CONFIG_SCHEDSTATS is not set | 1559 | # CONFIG_SCHEDSTATS is not set |
1560 | # CONFIG_TIMER_STATS is not set | ||
1541 | # CONFIG_DEBUG_SLAB is not set | 1561 | # CONFIG_DEBUG_SLAB is not set |
1542 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1562 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1543 | # CONFIG_RT_MUTEX_TESTER is not set | 1563 | # CONFIG_RT_MUTEX_TESTER is not set |
@@ -1556,6 +1576,7 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1556 | # CONFIG_FORCED_INLINING is not set | 1576 | # CONFIG_FORCED_INLINING is not set |
1557 | # CONFIG_RCU_TORTURE_TEST is not set | 1577 | # CONFIG_RCU_TORTURE_TEST is not set |
1558 | # CONFIG_LKDTM is not set | 1578 | # CONFIG_LKDTM is not set |
1579 | # CONFIG_FAULT_INJECTION is not set | ||
1559 | # CONFIG_DEBUG_RODATA is not set | 1580 | # CONFIG_DEBUG_RODATA is not set |
1560 | # CONFIG_IOMMU_DEBUG is not set | 1581 | # CONFIG_IOMMU_DEBUG is not set |
1561 | CONFIG_DEBUG_STACKOVERFLOW=y | 1582 | CONFIG_DEBUG_STACKOVERFLOW=y |
diff --git a/arch/x86_64/ia32/ia32entry.S b/arch/x86_64/ia32/ia32entry.S index eda7a0d4dc15..796df6992f62 100644 --- a/arch/x86_64/ia32/ia32entry.S +++ b/arch/x86_64/ia32/ia32entry.S | |||
@@ -560,7 +560,7 @@ ia32_sys_call_table: | |||
560 | .quad sys_sched_yield | 560 | .quad sys_sched_yield |
561 | .quad sys_sched_get_priority_max | 561 | .quad sys_sched_get_priority_max |
562 | .quad sys_sched_get_priority_min /* 160 */ | 562 | .quad sys_sched_get_priority_min /* 160 */ |
563 | .quad sys_sched_rr_get_interval | 563 | .quad sys32_sched_rr_get_interval |
564 | .quad compat_sys_nanosleep | 564 | .quad compat_sys_nanosleep |
565 | .quad sys_mremap | 565 | .quad sys_mremap |
566 | .quad sys_setresuid16 | 566 | .quad sys_setresuid16 |
diff --git a/arch/x86_64/ia32/ptrace32.c b/arch/x86_64/ia32/ptrace32.c index 04566fe5de49..4de3a54318f4 100644 --- a/arch/x86_64/ia32/ptrace32.c +++ b/arch/x86_64/ia32/ptrace32.c | |||
@@ -243,6 +243,7 @@ asmlinkage long sys32_ptrace(long request, u32 pid, u32 addr, u32 data) | |||
243 | case PTRACE_SINGLESTEP: | 243 | case PTRACE_SINGLESTEP: |
244 | case PTRACE_DETACH: | 244 | case PTRACE_DETACH: |
245 | case PTRACE_SYSCALL: | 245 | case PTRACE_SYSCALL: |
246 | case PTRACE_OLDSETOPTIONS: | ||
246 | case PTRACE_SETOPTIONS: | 247 | case PTRACE_SETOPTIONS: |
247 | case PTRACE_SET_THREAD_AREA: | 248 | case PTRACE_SET_THREAD_AREA: |
248 | case PTRACE_GET_THREAD_AREA: | 249 | case PTRACE_GET_THREAD_AREA: |
diff --git a/arch/x86_64/kernel/acpi/sleep.c b/arch/x86_64/kernel/acpi/sleep.c index 23178ce6c783..e1548fbe95ae 100644 --- a/arch/x86_64/kernel/acpi/sleep.c +++ b/arch/x86_64/kernel/acpi/sleep.c | |||
@@ -66,8 +66,10 @@ static void init_low_mapping(void) | |||
66 | { | 66 | { |
67 | pgd_t *slot0 = pgd_offset(current->mm, 0UL); | 67 | pgd_t *slot0 = pgd_offset(current->mm, 0UL); |
68 | low_ptr = *slot0; | 68 | low_ptr = *slot0; |
69 | /* FIXME: We're playing with the current task's page tables here, which | ||
70 | * is potentially dangerous on SMP systems. | ||
71 | */ | ||
69 | set_pgd(slot0, *pgd_offset(current->mm, PAGE_OFFSET)); | 72 | set_pgd(slot0, *pgd_offset(current->mm, PAGE_OFFSET)); |
70 | WARN_ON(num_online_cpus() != 1); | ||
71 | local_flush_tlb(); | 73 | local_flush_tlb(); |
72 | } | 74 | } |
73 | 75 | ||
diff --git a/arch/x86_64/kernel/apic.c b/arch/x86_64/kernel/apic.c index 723417d924c0..bd3e45d47c37 100644 --- a/arch/x86_64/kernel/apic.c +++ b/arch/x86_64/kernel/apic.c | |||
@@ -47,6 +47,10 @@ int apic_calibrate_pmtmr __initdata; | |||
47 | 47 | ||
48 | int disable_apic_timer __initdata; | 48 | int disable_apic_timer __initdata; |
49 | 49 | ||
50 | /* Local APIC timer works in C2? */ | ||
51 | int local_apic_timer_c2_ok; | ||
52 | EXPORT_SYMBOL_GPL(local_apic_timer_c2_ok); | ||
53 | |||
50 | static struct resource *ioapic_resources; | 54 | static struct resource *ioapic_resources; |
51 | static struct resource lapic_resource = { | 55 | static struct resource lapic_resource = { |
52 | .name = "Local APIC", | 56 | .name = "Local APIC", |
@@ -930,9 +934,17 @@ EXPORT_SYMBOL(switch_APIC_timer_to_ipi); | |||
930 | 934 | ||
931 | void smp_send_timer_broadcast_ipi(void) | 935 | void smp_send_timer_broadcast_ipi(void) |
932 | { | 936 | { |
937 | int cpu = smp_processor_id(); | ||
933 | cpumask_t mask; | 938 | cpumask_t mask; |
934 | 939 | ||
935 | cpus_and(mask, cpu_online_map, timer_interrupt_broadcast_ipi_mask); | 940 | cpus_and(mask, cpu_online_map, timer_interrupt_broadcast_ipi_mask); |
941 | |||
942 | if (cpu_isset(cpu, mask)) { | ||
943 | cpu_clear(cpu, mask); | ||
944 | add_pda(apic_timer_irqs, 1); | ||
945 | smp_local_timer_interrupt(); | ||
946 | } | ||
947 | |||
936 | if (!cpus_empty(mask)) { | 948 | if (!cpus_empty(mask)) { |
937 | send_IPI_mask(mask, LOCAL_TIMER_VECTOR); | 949 | send_IPI_mask(mask, LOCAL_TIMER_VECTOR); |
938 | } | 950 | } |
@@ -1192,6 +1204,13 @@ static __init int setup_nolapic(char *str) | |||
1192 | } | 1204 | } |
1193 | early_param("nolapic", setup_nolapic); | 1205 | early_param("nolapic", setup_nolapic); |
1194 | 1206 | ||
1207 | static int __init parse_lapic_timer_c2_ok(char *arg) | ||
1208 | { | ||
1209 | local_apic_timer_c2_ok = 1; | ||
1210 | return 0; | ||
1211 | } | ||
1212 | early_param("lapic_timer_c2_ok", parse_lapic_timer_c2_ok); | ||
1213 | |||
1195 | static __init int setup_noapictimer(char *str) | 1214 | static __init int setup_noapictimer(char *str) |
1196 | { | 1215 | { |
1197 | if (str[0] != ' ' && str[0] != 0) | 1216 | if (str[0] != ' ' && str[0] != 0) |
diff --git a/arch/x86_64/kernel/cpufreq/Kconfig b/arch/x86_64/kernel/cpufreq/Kconfig index ced15d06f0f3..40acb67fb882 100644 --- a/arch/x86_64/kernel/cpufreq/Kconfig +++ b/arch/x86_64/kernel/cpufreq/Kconfig | |||
@@ -75,6 +75,7 @@ config X86_ACPI_CPUFREQ_PROC_INTF | |||
75 | config X86_P4_CLOCKMOD | 75 | config X86_P4_CLOCKMOD |
76 | tristate "Intel Pentium 4 clock modulation" | 76 | tristate "Intel Pentium 4 clock modulation" |
77 | depends on EMBEDDED | 77 | depends on EMBEDDED |
78 | select CPU_FREQ_TABLE | ||
78 | help | 79 | help |
79 | This adds the clock modulation driver for Intel Pentium 4 / XEON | 80 | This adds the clock modulation driver for Intel Pentium 4 / XEON |
80 | processors. When enabled it will lower CPU temperature by skipping | 81 | processors. When enabled it will lower CPU temperature by skipping |
diff --git a/arch/x86_64/kernel/e820.c b/arch/x86_64/kernel/e820.c index 4651fd22b213..a490fabfcf47 100644 --- a/arch/x86_64/kernel/e820.c +++ b/arch/x86_64/kernel/e820.c | |||
@@ -662,7 +662,7 @@ static int __init parse_memmap_opt(char *p) | |||
662 | } | 662 | } |
663 | early_param("memmap", parse_memmap_opt); | 663 | early_param("memmap", parse_memmap_opt); |
664 | 664 | ||
665 | void finish_e820_parsing(void) | 665 | void __init finish_e820_parsing(void) |
666 | { | 666 | { |
667 | if (userdef) { | 667 | if (userdef) { |
668 | printk(KERN_INFO "user-defined physical RAM map:\n"); | 668 | printk(KERN_INFO "user-defined physical RAM map:\n"); |
diff --git a/arch/x86_64/kernel/early-quirks.c b/arch/x86_64/kernel/early-quirks.c index 8047ea8c2ab2..fede55a53995 100644 --- a/arch/x86_64/kernel/early-quirks.c +++ b/arch/x86_64/kernel/early-quirks.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <asm/proto.h> | 16 | #include <asm/proto.h> |
17 | #include <asm/dma.h> | 17 | #include <asm/dma.h> |
18 | 18 | ||
19 | static void via_bugs(void) | 19 | static void __init via_bugs(void) |
20 | { | 20 | { |
21 | #ifdef CONFIG_IOMMU | 21 | #ifdef CONFIG_IOMMU |
22 | if ((end_pfn > MAX_DMA32_PFN || force_iommu) && | 22 | if ((end_pfn > MAX_DMA32_PFN || force_iommu) && |
@@ -30,16 +30,13 @@ static void via_bugs(void) | |||
30 | 30 | ||
31 | #ifdef CONFIG_ACPI | 31 | #ifdef CONFIG_ACPI |
32 | 32 | ||
33 | static int nvidia_hpet_detected __initdata; | ||
34 | |||
35 | static int __init nvidia_hpet_check(struct acpi_table_header *header) | 33 | static int __init nvidia_hpet_check(struct acpi_table_header *header) |
36 | { | 34 | { |
37 | nvidia_hpet_detected = 1; | ||
38 | return 0; | 35 | return 0; |
39 | } | 36 | } |
40 | #endif | 37 | #endif |
41 | 38 | ||
42 | static void nvidia_bugs(void) | 39 | static void __init nvidia_bugs(void) |
43 | { | 40 | { |
44 | #ifdef CONFIG_ACPI | 41 | #ifdef CONFIG_ACPI |
45 | /* | 42 | /* |
@@ -52,11 +49,7 @@ static void nvidia_bugs(void) | |||
52 | if (acpi_use_timer_override) | 49 | if (acpi_use_timer_override) |
53 | return; | 50 | return; |
54 | 51 | ||
55 | nvidia_hpet_detected = 0; | 52 | if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check)) { |
56 | if (acpi_table_parse(ACPI_SIG_HPET, nvidia_hpet_check)) | ||
57 | return; | ||
58 | |||
59 | if (nvidia_hpet_detected == 0) { | ||
60 | acpi_skip_timer_override = 1; | 53 | acpi_skip_timer_override = 1; |
61 | printk(KERN_INFO "Nvidia board " | 54 | printk(KERN_INFO "Nvidia board " |
62 | "detected. Ignoring ACPI " | 55 | "detected. Ignoring ACPI " |
@@ -69,7 +62,7 @@ static void nvidia_bugs(void) | |||
69 | 62 | ||
70 | } | 63 | } |
71 | 64 | ||
72 | static void ati_bugs(void) | 65 | static void __init ati_bugs(void) |
73 | { | 66 | { |
74 | if (timer_over_8254 == 1) { | 67 | if (timer_over_8254 == 1) { |
75 | timer_over_8254 = 0; | 68 | timer_over_8254 = 0; |
@@ -95,7 +88,7 @@ struct chipset { | |||
95 | void (*f)(void); | 88 | void (*f)(void); |
96 | }; | 89 | }; |
97 | 90 | ||
98 | static struct chipset early_qrk[] = { | 91 | static struct chipset early_qrk[] __initdata = { |
99 | { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, | 92 | { PCI_VENDOR_ID_NVIDIA, nvidia_bugs }, |
100 | { PCI_VENDOR_ID_VIA, via_bugs }, | 93 | { PCI_VENDOR_ID_VIA, via_bugs }, |
101 | { PCI_VENDOR_ID_ATI, ati_bugs }, | 94 | { PCI_VENDOR_ID_ATI, ati_bugs }, |
diff --git a/arch/x86_64/kernel/i8259.c b/arch/x86_64/kernel/i8259.c index 21d95b747437..489426682772 100644 --- a/arch/x86_64/kernel/i8259.c +++ b/arch/x86_64/kernel/i8259.c | |||
@@ -45,7 +45,7 @@ | |||
45 | 45 | ||
46 | /* | 46 | /* |
47 | * ISA PIC or low IO-APIC triggered (INTA-cycle or APIC) interrupts: | 47 | * ISA PIC or low IO-APIC triggered (INTA-cycle or APIC) interrupts: |
48 | * (these are usually mapped to vectors 0x20-0x2f) | 48 | * (these are usually mapped to vectors 0x30-0x3f) |
49 | */ | 49 | */ |
50 | 50 | ||
51 | /* | 51 | /* |
@@ -299,7 +299,7 @@ void init_8259A(int auto_eoi) | |||
299 | * outb_p - this has to work on a wide range of PC hardware. | 299 | * outb_p - this has to work on a wide range of PC hardware. |
300 | */ | 300 | */ |
301 | outb_p(0x11, 0x20); /* ICW1: select 8259A-1 init */ | 301 | outb_p(0x11, 0x20); /* ICW1: select 8259A-1 init */ |
302 | outb_p(IRQ0_VECTOR, 0x21); /* ICW2: 8259A-1 IR0-7 mapped to 0x20-0x27 */ | 302 | outb_p(IRQ0_VECTOR, 0x21); /* ICW2: 8259A-1 IR0-7 mapped to 0x30-0x37 */ |
303 | outb_p(0x04, 0x21); /* 8259A-1 (the master) has a slave on IR2 */ | 303 | outb_p(0x04, 0x21); /* 8259A-1 (the master) has a slave on IR2 */ |
304 | if (auto_eoi) | 304 | if (auto_eoi) |
305 | outb_p(0x03, 0x21); /* master does Auto EOI */ | 305 | outb_p(0x03, 0x21); /* master does Auto EOI */ |
@@ -307,7 +307,7 @@ void init_8259A(int auto_eoi) | |||
307 | outb_p(0x01, 0x21); /* master expects normal EOI */ | 307 | outb_p(0x01, 0x21); /* master expects normal EOI */ |
308 | 308 | ||
309 | outb_p(0x11, 0xA0); /* ICW1: select 8259A-2 init */ | 309 | outb_p(0x11, 0xA0); /* ICW1: select 8259A-2 init */ |
310 | outb_p(IRQ8_VECTOR, 0xA1); /* ICW2: 8259A-2 IR0-7 mapped to 0x28-0x2f */ | 310 | outb_p(IRQ8_VECTOR, 0xA1); /* ICW2: 8259A-2 IR0-7 mapped to 0x38-0x3f */ |
311 | outb_p(0x02, 0xA1); /* 8259A-2 is a slave on master's IR2 */ | 311 | outb_p(0x02, 0xA1); /* 8259A-2 is a slave on master's IR2 */ |
312 | outb_p(0x01, 0xA1); /* (slave's support for AEOI in flat mode | 312 | outb_p(0x01, 0xA1); /* (slave's support for AEOI in flat mode |
313 | is to be investigated) */ | 313 | is to be investigated) */ |
diff --git a/arch/x86_64/kernel/mpparse.c b/arch/x86_64/kernel/mpparse.c index 50dd8bef850e..455aa0b932f0 100644 --- a/arch/x86_64/kernel/mpparse.c +++ b/arch/x86_64/kernel/mpparse.c | |||
@@ -60,9 +60,9 @@ unsigned long mp_lapic_addr = 0; | |||
60 | /* Processor that is doing the boot up */ | 60 | /* Processor that is doing the boot up */ |
61 | unsigned int boot_cpu_id = -1U; | 61 | unsigned int boot_cpu_id = -1U; |
62 | /* Internal processor count */ | 62 | /* Internal processor count */ |
63 | unsigned int num_processors __initdata = 0; | 63 | unsigned int num_processors __cpuinitdata = 0; |
64 | 64 | ||
65 | unsigned disabled_cpus __initdata; | 65 | unsigned disabled_cpus __cpuinitdata; |
66 | 66 | ||
67 | /* Bitmask of physically existing CPUs */ | 67 | /* Bitmask of physically existing CPUs */ |
68 | physid_mask_t phys_cpu_present_map = PHYSID_MASK_NONE; | 68 | physid_mask_t phys_cpu_present_map = PHYSID_MASK_NONE; |
diff --git a/arch/x86_64/kernel/nmi.c b/arch/x86_64/kernel/nmi.c index 486f4c61a948..a90996c27dc8 100644 --- a/arch/x86_64/kernel/nmi.c +++ b/arch/x86_64/kernel/nmi.c | |||
@@ -108,64 +108,128 @@ static inline unsigned int nmi_evntsel_msr_to_bit(unsigned int msr) | |||
108 | /* checks for a bit availability (hack for oprofile) */ | 108 | /* checks for a bit availability (hack for oprofile) */ |
109 | int avail_to_resrv_perfctr_nmi_bit(unsigned int counter) | 109 | int avail_to_resrv_perfctr_nmi_bit(unsigned int counter) |
110 | { | 110 | { |
111 | int cpu; | ||
111 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 112 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
112 | 113 | for_each_possible_cpu (cpu) { | |
113 | return (!test_bit(counter, &__get_cpu_var(perfctr_nmi_owner))); | 114 | if (test_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) |
115 | return 0; | ||
116 | } | ||
117 | return 1; | ||
114 | } | 118 | } |
115 | 119 | ||
116 | /* checks the an msr for availability */ | 120 | /* checks the an msr for availability */ |
117 | int avail_to_resrv_perfctr_nmi(unsigned int msr) | 121 | int avail_to_resrv_perfctr_nmi(unsigned int msr) |
118 | { | 122 | { |
119 | unsigned int counter; | 123 | unsigned int counter; |
124 | int cpu; | ||
120 | 125 | ||
121 | counter = nmi_perfctr_msr_to_bit(msr); | 126 | counter = nmi_perfctr_msr_to_bit(msr); |
122 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 127 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
123 | 128 | ||
124 | return (!test_bit(counter, &__get_cpu_var(perfctr_nmi_owner))); | 129 | for_each_possible_cpu (cpu) { |
130 | if (test_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) | ||
131 | return 0; | ||
132 | } | ||
133 | return 1; | ||
125 | } | 134 | } |
126 | 135 | ||
127 | int reserve_perfctr_nmi(unsigned int msr) | 136 | static int __reserve_perfctr_nmi(int cpu, unsigned int msr) |
128 | { | 137 | { |
129 | unsigned int counter; | 138 | unsigned int counter; |
139 | if (cpu < 0) | ||
140 | cpu = smp_processor_id(); | ||
130 | 141 | ||
131 | counter = nmi_perfctr_msr_to_bit(msr); | 142 | counter = nmi_perfctr_msr_to_bit(msr); |
132 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 143 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
133 | 144 | ||
134 | if (!test_and_set_bit(counter, &__get_cpu_var(perfctr_nmi_owner))) | 145 | if (!test_and_set_bit(counter, &per_cpu(perfctr_nmi_owner, cpu))) |
135 | return 1; | 146 | return 1; |
136 | return 0; | 147 | return 0; |
137 | } | 148 | } |
138 | 149 | ||
139 | void release_perfctr_nmi(unsigned int msr) | 150 | static void __release_perfctr_nmi(int cpu, unsigned int msr) |
140 | { | 151 | { |
141 | unsigned int counter; | 152 | unsigned int counter; |
153 | if (cpu < 0) | ||
154 | cpu = smp_processor_id(); | ||
142 | 155 | ||
143 | counter = nmi_perfctr_msr_to_bit(msr); | 156 | counter = nmi_perfctr_msr_to_bit(msr); |
144 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 157 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
145 | 158 | ||
146 | clear_bit(counter, &__get_cpu_var(perfctr_nmi_owner)); | 159 | clear_bit(counter, &per_cpu(perfctr_nmi_owner, cpu)); |
147 | } | 160 | } |
148 | 161 | ||
149 | int reserve_evntsel_nmi(unsigned int msr) | 162 | int reserve_perfctr_nmi(unsigned int msr) |
163 | { | ||
164 | int cpu, i; | ||
165 | for_each_possible_cpu (cpu) { | ||
166 | if (!__reserve_perfctr_nmi(cpu, msr)) { | ||
167 | for_each_possible_cpu (i) { | ||
168 | if (i >= cpu) | ||
169 | break; | ||
170 | __release_perfctr_nmi(i, msr); | ||
171 | } | ||
172 | return 0; | ||
173 | } | ||
174 | } | ||
175 | return 1; | ||
176 | } | ||
177 | |||
178 | void release_perfctr_nmi(unsigned int msr) | ||
179 | { | ||
180 | int cpu; | ||
181 | for_each_possible_cpu (cpu) | ||
182 | __release_perfctr_nmi(cpu, msr); | ||
183 | } | ||
184 | |||
185 | int __reserve_evntsel_nmi(int cpu, unsigned int msr) | ||
150 | { | 186 | { |
151 | unsigned int counter; | 187 | unsigned int counter; |
188 | if (cpu < 0) | ||
189 | cpu = smp_processor_id(); | ||
152 | 190 | ||
153 | counter = nmi_evntsel_msr_to_bit(msr); | 191 | counter = nmi_evntsel_msr_to_bit(msr); |
154 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 192 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
155 | 193 | ||
156 | if (!test_and_set_bit(counter, &__get_cpu_var(evntsel_nmi_owner))) | 194 | if (!test_and_set_bit(counter, &per_cpu(evntsel_nmi_owner, cpu)[0])) |
157 | return 1; | 195 | return 1; |
158 | return 0; | 196 | return 0; |
159 | } | 197 | } |
160 | 198 | ||
161 | void release_evntsel_nmi(unsigned int msr) | 199 | static void __release_evntsel_nmi(int cpu, unsigned int msr) |
162 | { | 200 | { |
163 | unsigned int counter; | 201 | unsigned int counter; |
202 | if (cpu < 0) | ||
203 | cpu = smp_processor_id(); | ||
164 | 204 | ||
165 | counter = nmi_evntsel_msr_to_bit(msr); | 205 | counter = nmi_evntsel_msr_to_bit(msr); |
166 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); | 206 | BUG_ON(counter > NMI_MAX_COUNTER_BITS); |
167 | 207 | ||
168 | clear_bit(counter, &__get_cpu_var(evntsel_nmi_owner)); | 208 | clear_bit(counter, &per_cpu(evntsel_nmi_owner, cpu)[0]); |
209 | } | ||
210 | |||
211 | int reserve_evntsel_nmi(unsigned int msr) | ||
212 | { | ||
213 | int cpu, i; | ||
214 | for_each_possible_cpu (cpu) { | ||
215 | if (!__reserve_evntsel_nmi(cpu, msr)) { | ||
216 | for_each_possible_cpu (i) { | ||
217 | if (i >= cpu) | ||
218 | break; | ||
219 | __release_evntsel_nmi(i, msr); | ||
220 | } | ||
221 | return 0; | ||
222 | } | ||
223 | } | ||
224 | return 1; | ||
225 | } | ||
226 | |||
227 | void release_evntsel_nmi(unsigned int msr) | ||
228 | { | ||
229 | int cpu; | ||
230 | for_each_possible_cpu (cpu) { | ||
231 | __release_evntsel_nmi(cpu, msr); | ||
232 | } | ||
169 | } | 233 | } |
170 | 234 | ||
171 | static __cpuinit inline int nmi_known_cpu(void) | 235 | static __cpuinit inline int nmi_known_cpu(void) |
@@ -187,10 +251,7 @@ void nmi_watchdog_default(void) | |||
187 | { | 251 | { |
188 | if (nmi_watchdog != NMI_DEFAULT) | 252 | if (nmi_watchdog != NMI_DEFAULT) |
189 | return; | 253 | return; |
190 | if (nmi_known_cpu()) | 254 | nmi_watchdog = NMI_NONE; |
191 | nmi_watchdog = NMI_LOCAL_APIC; | ||
192 | else | ||
193 | nmi_watchdog = NMI_IO_APIC; | ||
194 | } | 255 | } |
195 | 256 | ||
196 | static int endflag __initdata = 0; | 257 | static int endflag __initdata = 0; |
@@ -256,7 +317,7 @@ int __init check_nmi_watchdog (void) | |||
256 | for (cpu = 0; cpu < NR_CPUS; cpu++) | 317 | for (cpu = 0; cpu < NR_CPUS; cpu++) |
257 | counts[cpu] = cpu_pda(cpu)->__nmi_count; | 318 | counts[cpu] = cpu_pda(cpu)->__nmi_count; |
258 | local_irq_enable(); | 319 | local_irq_enable(); |
259 | mdelay((10*1000)/nmi_hz); // wait 10 ticks | 320 | mdelay((20*1000)/nmi_hz); // wait 20 ticks |
260 | 321 | ||
261 | for_each_online_cpu(cpu) { | 322 | for_each_online_cpu(cpu) { |
262 | if (!per_cpu(nmi_watchdog_ctlblk, cpu).enabled) | 323 | if (!per_cpu(nmi_watchdog_ctlblk, cpu).enabled) |
@@ -475,10 +536,10 @@ static int setup_k7_watchdog(void) | |||
475 | 536 | ||
476 | perfctr_msr = MSR_K7_PERFCTR0; | 537 | perfctr_msr = MSR_K7_PERFCTR0; |
477 | evntsel_msr = MSR_K7_EVNTSEL0; | 538 | evntsel_msr = MSR_K7_EVNTSEL0; |
478 | if (!reserve_perfctr_nmi(perfctr_msr)) | 539 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
479 | goto fail; | 540 | goto fail; |
480 | 541 | ||
481 | if (!reserve_evntsel_nmi(evntsel_msr)) | 542 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
482 | goto fail1; | 543 | goto fail1; |
483 | 544 | ||
484 | /* Simulator may not support it */ | 545 | /* Simulator may not support it */ |
@@ -504,9 +565,9 @@ static int setup_k7_watchdog(void) | |||
504 | wd->check_bit = 1ULL<<63; | 565 | wd->check_bit = 1ULL<<63; |
505 | return 1; | 566 | return 1; |
506 | fail2: | 567 | fail2: |
507 | release_evntsel_nmi(evntsel_msr); | 568 | __release_evntsel_nmi(-1, evntsel_msr); |
508 | fail1: | 569 | fail1: |
509 | release_perfctr_nmi(perfctr_msr); | 570 | __release_perfctr_nmi(-1, perfctr_msr); |
510 | fail: | 571 | fail: |
511 | return 0; | 572 | return 0; |
512 | } | 573 | } |
@@ -517,8 +578,8 @@ static void stop_k7_watchdog(void) | |||
517 | 578 | ||
518 | wrmsr(wd->evntsel_msr, 0, 0); | 579 | wrmsr(wd->evntsel_msr, 0, 0); |
519 | 580 | ||
520 | release_evntsel_nmi(wd->evntsel_msr); | 581 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
521 | release_perfctr_nmi(wd->perfctr_msr); | 582 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
522 | } | 583 | } |
523 | 584 | ||
524 | /* Note that these events don't tick when the CPU idles. This means | 585 | /* Note that these events don't tick when the CPU idles. This means |
@@ -584,10 +645,10 @@ static int setup_p4_watchdog(void) | |||
584 | cccr_val = P4_CCCR_OVF_PMI1 | P4_CCCR_ESCR_SELECT(4); | 645 | cccr_val = P4_CCCR_OVF_PMI1 | P4_CCCR_ESCR_SELECT(4); |
585 | } | 646 | } |
586 | 647 | ||
587 | if (!reserve_perfctr_nmi(perfctr_msr)) | 648 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
588 | goto fail; | 649 | goto fail; |
589 | 650 | ||
590 | if (!reserve_evntsel_nmi(evntsel_msr)) | 651 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
591 | goto fail1; | 652 | goto fail1; |
592 | 653 | ||
593 | evntsel = P4_ESCR_EVENT_SELECT(0x3F) | 654 | evntsel = P4_ESCR_EVENT_SELECT(0x3F) |
@@ -612,7 +673,7 @@ static int setup_p4_watchdog(void) | |||
612 | wd->check_bit = 1ULL<<39; | 673 | wd->check_bit = 1ULL<<39; |
613 | return 1; | 674 | return 1; |
614 | fail1: | 675 | fail1: |
615 | release_perfctr_nmi(perfctr_msr); | 676 | __release_perfctr_nmi(-1, perfctr_msr); |
616 | fail: | 677 | fail: |
617 | return 0; | 678 | return 0; |
618 | } | 679 | } |
@@ -624,8 +685,8 @@ static void stop_p4_watchdog(void) | |||
624 | wrmsr(wd->cccr_msr, 0, 0); | 685 | wrmsr(wd->cccr_msr, 0, 0); |
625 | wrmsr(wd->evntsel_msr, 0, 0); | 686 | wrmsr(wd->evntsel_msr, 0, 0); |
626 | 687 | ||
627 | release_evntsel_nmi(wd->evntsel_msr); | 688 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
628 | release_perfctr_nmi(wd->perfctr_msr); | 689 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
629 | } | 690 | } |
630 | 691 | ||
631 | #define ARCH_PERFMON_NMI_EVENT_SEL ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL | 692 | #define ARCH_PERFMON_NMI_EVENT_SEL ARCH_PERFMON_UNHALTED_CORE_CYCLES_SEL |
@@ -653,10 +714,10 @@ static int setup_intel_arch_watchdog(void) | |||
653 | perfctr_msr = MSR_ARCH_PERFMON_PERFCTR0; | 714 | perfctr_msr = MSR_ARCH_PERFMON_PERFCTR0; |
654 | evntsel_msr = MSR_ARCH_PERFMON_EVENTSEL0; | 715 | evntsel_msr = MSR_ARCH_PERFMON_EVENTSEL0; |
655 | 716 | ||
656 | if (!reserve_perfctr_nmi(perfctr_msr)) | 717 | if (!__reserve_perfctr_nmi(-1, perfctr_msr)) |
657 | goto fail; | 718 | goto fail; |
658 | 719 | ||
659 | if (!reserve_evntsel_nmi(evntsel_msr)) | 720 | if (!__reserve_evntsel_nmi(-1, evntsel_msr)) |
660 | goto fail1; | 721 | goto fail1; |
661 | 722 | ||
662 | wrmsrl(perfctr_msr, 0UL); | 723 | wrmsrl(perfctr_msr, 0UL); |
@@ -683,7 +744,7 @@ static int setup_intel_arch_watchdog(void) | |||
683 | wd->check_bit = 1ULL << (eax.split.bit_width - 1); | 744 | wd->check_bit = 1ULL << (eax.split.bit_width - 1); |
684 | return 1; | 745 | return 1; |
685 | fail1: | 746 | fail1: |
686 | release_perfctr_nmi(perfctr_msr); | 747 | __release_perfctr_nmi(-1, perfctr_msr); |
687 | fail: | 748 | fail: |
688 | return 0; | 749 | return 0; |
689 | } | 750 | } |
@@ -707,8 +768,8 @@ static void stop_intel_arch_watchdog(void) | |||
707 | 768 | ||
708 | wrmsr(wd->evntsel_msr, 0, 0); | 769 | wrmsr(wd->evntsel_msr, 0, 0); |
709 | 770 | ||
710 | release_evntsel_nmi(wd->evntsel_msr); | 771 | __release_evntsel_nmi(-1, wd->evntsel_msr); |
711 | release_perfctr_nmi(wd->perfctr_msr); | 772 | __release_perfctr_nmi(-1, wd->perfctr_msr); |
712 | } | 773 | } |
713 | 774 | ||
714 | void setup_apic_nmi_watchdog(void *unused) | 775 | void setup_apic_nmi_watchdog(void *unused) |
diff --git a/arch/x86_64/kernel/pci-gart.c b/arch/x86_64/kernel/pci-gart.c index 030eb3753358..2bac8c60ad61 100644 --- a/arch/x86_64/kernel/pci-gart.c +++ b/arch/x86_64/kernel/pci-gart.c | |||
@@ -675,7 +675,7 @@ void __init gart_iommu_init(void) | |||
675 | dma_ops = &gart_dma_ops; | 675 | dma_ops = &gart_dma_ops; |
676 | } | 676 | } |
677 | 677 | ||
678 | void gart_parse_options(char *p) | 678 | void __init gart_parse_options(char *p) |
679 | { | 679 | { |
680 | int arg; | 680 | int arg; |
681 | 681 | ||
diff --git a/arch/x86_64/kernel/process.c b/arch/x86_64/kernel/process.c index cbbc6adc1a92..d8d5ccc245c8 100644 --- a/arch/x86_64/kernel/process.c +++ b/arch/x86_64/kernel/process.c | |||
@@ -382,14 +382,17 @@ void exit_thread(void) | |||
382 | void flush_thread(void) | 382 | void flush_thread(void) |
383 | { | 383 | { |
384 | struct task_struct *tsk = current; | 384 | struct task_struct *tsk = current; |
385 | struct thread_info *t = current_thread_info(); | ||
386 | 385 | ||
387 | if (t->flags & _TIF_ABI_PENDING) { | 386 | if (test_tsk_thread_flag(tsk, TIF_ABI_PENDING)) { |
388 | t->flags ^= (_TIF_ABI_PENDING | _TIF_IA32); | 387 | clear_tsk_thread_flag(tsk, TIF_ABI_PENDING); |
389 | if (t->flags & _TIF_IA32) | 388 | if (test_tsk_thread_flag(tsk, TIF_IA32)) { |
389 | clear_tsk_thread_flag(tsk, TIF_IA32); | ||
390 | } else { | ||
391 | set_tsk_thread_flag(tsk, TIF_IA32); | ||
390 | current_thread_info()->status |= TS_COMPAT; | 392 | current_thread_info()->status |= TS_COMPAT; |
393 | } | ||
391 | } | 394 | } |
392 | t->flags &= ~_TIF_DEBUG; | 395 | clear_tsk_thread_flag(tsk, TIF_DEBUG); |
393 | 396 | ||
394 | tsk->thread.debugreg0 = 0; | 397 | tsk->thread.debugreg0 = 0; |
395 | tsk->thread.debugreg1 = 0; | 398 | tsk->thread.debugreg1 = 0; |
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c index 35443729aad8..cd4643a37022 100644 --- a/arch/x86_64/kernel/smpboot.c +++ b/arch/x86_64/kernel/smpboot.c | |||
@@ -923,8 +923,9 @@ void __init smp_prepare_boot_cpu(void) | |||
923 | */ | 923 | */ |
924 | int __cpuinit __cpu_up(unsigned int cpu) | 924 | int __cpuinit __cpu_up(unsigned int cpu) |
925 | { | 925 | { |
926 | int err; | ||
927 | int apicid = cpu_present_to_apicid(cpu); | 926 | int apicid = cpu_present_to_apicid(cpu); |
927 | unsigned long flags; | ||
928 | int err; | ||
928 | 929 | ||
929 | WARN_ON(irqs_disabled()); | 930 | WARN_ON(irqs_disabled()); |
930 | 931 | ||
@@ -958,7 +959,9 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
958 | /* | 959 | /* |
959 | * Make sure and check TSC sync: | 960 | * Make sure and check TSC sync: |
960 | */ | 961 | */ |
962 | local_irq_save(flags); | ||
961 | check_tsc_sync_source(cpu); | 963 | check_tsc_sync_source(cpu); |
964 | local_irq_restore(flags); | ||
962 | 965 | ||
963 | while (!cpu_isset(cpu, cpu_online_map)) | 966 | while (!cpu_isset(cpu, cpu_online_map)) |
964 | cpu_relax(); | 967 | cpu_relax(); |
diff --git a/arch/x86_64/kernel/vsyscall.c b/arch/x86_64/kernel/vsyscall.c index 180ff919eaf9..b43c698cf7d3 100644 --- a/arch/x86_64/kernel/vsyscall.c +++ b/arch/x86_64/kernel/vsyscall.c | |||
@@ -112,7 +112,7 @@ static __always_inline void do_vgettimeofday(struct timeval * tv) | |||
112 | 112 | ||
113 | vread = __vsyscall_gtod_data.clock.vread; | 113 | vread = __vsyscall_gtod_data.clock.vread; |
114 | if (unlikely(!__vsyscall_gtod_data.sysctl_enabled || !vread)) { | 114 | if (unlikely(!__vsyscall_gtod_data.sysctl_enabled || !vread)) { |
115 | gettimeofday(tv,0); | 115 | gettimeofday(tv,NULL); |
116 | return; | 116 | return; |
117 | } | 117 | } |
118 | now = vread(); | 118 | now = vread(); |
diff --git a/arch/x86_64/kernel/x8664_ksyms.c b/arch/x86_64/kernel/x8664_ksyms.c index 0dffae69f4ad..77c25b307635 100644 --- a/arch/x86_64/kernel/x8664_ksyms.c +++ b/arch/x86_64/kernel/x8664_ksyms.c | |||
@@ -59,3 +59,4 @@ EXPORT_SYMBOL(empty_zero_page); | |||
59 | EXPORT_SYMBOL(init_level4_pgt); | 59 | EXPORT_SYMBOL(init_level4_pgt); |
60 | EXPORT_SYMBOL(load_gs_index); | 60 | EXPORT_SYMBOL(load_gs_index); |
61 | 61 | ||
62 | EXPORT_SYMBOL(_proxy_pda); | ||