diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-17 11:36:10 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-17 11:36:10 -0500 |
| commit | 2ffbb8377c7a0713baf6644e285adc27a5654582 (patch) | |
| tree | 055f1fad06e1dba8c2e782786a7cfc2ea448a7f3 | |
| parent | 6840999b192b1b57d713ddee3761c457a2779036 (diff) | |
| parent | 80ef88d6d23bf1b94d65db0ac32334d01b9f7350 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86
* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:
x86: simplify "make ARCH=x86" and fix kconfig all.config
x86: reboot fixup for wrap2c board
x86: check boundary in count setup resource
x86: fix reboot with no keyboard attached
x86: add hpet sanity checks
x86: on x86_64, correct reading of PC RTC when update in progress in time_64.c
x86: fix freeze in x86_64 RTC update code in time_64.c
ntp: fix typo that makes sync_cmos_clock erratic
Remove x86 merge artifact from top Makefile
x86: fixup cpu_info array conversion
x86: show cpuinfo only for online CPUs
x86: fix cpu-hotplug regression
x86: ignore the sys_getcpu() tcache parameter
x86: voyager use correct header file name
x86: fix smp init sections
x86: fix voyager_cat_init section
x86: fix bogus memcpy in es7000_check_dsdt()
| -rw-r--r-- | Makefile | 7 | ||||
| -rw-r--r-- | arch/x86/kernel/acpi/boot.c | 32 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/mcheck/mce_64.c | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/cpu/proc.c | 8 | ||||
| -rw-r--r-- | arch/x86/kernel/reboot_fixups_32.c | 1 | ||||
| -rw-r--r-- | arch/x86/kernel/setup_64.c | 9 | ||||
| -rw-r--r-- | arch/x86/kernel/time_64.c | 41 | ||||
| -rw-r--r-- | arch/x86/mach-voyager/voyager_cat.c | 2 | ||||
| -rw-r--r-- | arch/x86/mach-voyager/voyager_smp.c | 4 | ||||
| -rw-r--r-- | arch/x86/pci/acpi.c | 6 | ||||
| -rw-r--r-- | arch/x86/vdso/vgetcpu.c | 19 | ||||
| -rw-r--r-- | include/asm-x86/mach-default/mach_reboot.h | 2 | ||||
| -rw-r--r-- | include/asm-x86/mach-es7000/mach_mpparse.h | 6 | ||||
| -rw-r--r-- | include/asm-x86/mach-voyager/setup_arch.h | 2 | ||||
| -rw-r--r-- | kernel/sys.c | 20 | ||||
| -rw-r--r-- | kernel/time/ntp.c | 2 |
16 files changed, 81 insertions, 82 deletions
| @@ -1332,12 +1332,7 @@ else | |||
| 1332 | ALLINCLUDE_ARCHS := $(ALLSOURCE_ARCHS) | 1332 | ALLINCLUDE_ARCHS := $(ALLSOURCE_ARCHS) |
| 1333 | endif | 1333 | endif |
| 1334 | 1334 | ||
| 1335 | # Take care of arch/x86 | 1335 | ALLSOURCE_ARCHS := $(SRCARCH) |
| 1336 | ifeq ($(ARCH), $(SRCARCH)) | ||
| 1337 | ALLSOURCE_ARCHS := $(ARCH) | ||
| 1338 | else | ||
| 1339 | ALLSOURCE_ARCHS := $(ARCH) $(SRCARCH) | ||
| 1340 | endif | ||
| 1341 | 1336 | ||
| 1342 | define find-sources | 1337 | define find-sources |
| 1343 | ( for arch in $(ALLSOURCE_ARCHS) ; do \ | 1338 | ( for arch in $(ALLSOURCE_ARCHS) ; do \ |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 289247d974c6..0ca27c7b0e8d 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
| @@ -637,6 +637,38 @@ static int __init acpi_parse_hpet(struct acpi_table_header *table) | |||
| 637 | } | 637 | } |
| 638 | 638 | ||
| 639 | hpet_address = hpet_tbl->address.address; | 639 | hpet_address = hpet_tbl->address.address; |
| 640 | |||
| 641 | /* | ||
| 642 | * Some broken BIOSes advertise HPET at 0x0. We really do not | ||
| 643 | * want to allocate a resource there. | ||
| 644 | */ | ||
| 645 | if (!hpet_address) { | ||
| 646 | printk(KERN_WARNING PREFIX | ||
| 647 | "HPET id: %#x base: %#lx is invalid\n", | ||
| 648 | hpet_tbl->id, hpet_address); | ||
| 649 | return 0; | ||
| 650 | } | ||
| 651 | #ifdef CONFIG_X86_64 | ||
| 652 | /* | ||
| 653 | * Some even more broken BIOSes advertise HPET at | ||
| 654 | * 0xfed0000000000000 instead of 0xfed00000. Fix it up and add | ||
| 655 | * some noise: | ||
| 656 | */ | ||
| 657 | if (hpet_address == 0xfed0000000000000UL) { | ||
| 658 | if (!hpet_force_user) { | ||
| 659 | printk(KERN_WARNING PREFIX "HPET id: %#x " | ||
| 660 | "base: 0xfed0000000000000 is bogus\n " | ||
| 661 | "try hpet=force on the kernel command line to " | ||
| 662 | "fix it up to 0xfed00000.\n", hpet_tbl->id); | ||
| 663 | hpet_address = 0; | ||
| 664 | return 0; | ||
| 665 | } | ||
| 666 | printk(KERN_WARNING PREFIX | ||
| 667 | "HPET id: %#x base: 0xfed0000000000000 fixed up " | ||
| 668 | "to 0xfed00000.\n", hpet_tbl->id); | ||
| 669 | hpet_address >>= 32; | ||
| 670 | } | ||
| 671 | #endif | ||
| 640 | printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", | 672 | printk(KERN_INFO PREFIX "HPET id: %#x base: %#lx\n", |
| 641 | hpet_tbl->id, hpet_address); | 673 | hpet_tbl->id, hpet_address); |
| 642 | 674 | ||
diff --git a/arch/x86/kernel/cpu/mcheck/mce_64.c b/arch/x86/kernel/cpu/mcheck/mce_64.c index 447b351f1f2a..4b21d29fb5aa 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_64.c +++ b/arch/x86/kernel/cpu/mcheck/mce_64.c | |||
| @@ -810,7 +810,7 @@ static __cpuinit int mce_create_device(unsigned int cpu) | |||
| 810 | int err; | 810 | int err; |
| 811 | int i; | 811 | int i; |
| 812 | 812 | ||
| 813 | if (!mce_available(&cpu_data(cpu))) | 813 | if (!mce_available(&boot_cpu_data)) |
| 814 | return -EIO; | 814 | return -EIO; |
| 815 | 815 | ||
| 816 | memset(&per_cpu(device_mce, cpu).kobj, 0, sizeof(struct kobject)); | 816 | memset(&per_cpu(device_mce, cpu).kobj, 0, sizeof(struct kobject)); |
diff --git a/arch/x86/kernel/cpu/proc.c b/arch/x86/kernel/cpu/proc.c index 066f8c6af4df..3900e46d66db 100644 --- a/arch/x86/kernel/cpu/proc.c +++ b/arch/x86/kernel/cpu/proc.c | |||
| @@ -89,8 +89,6 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 89 | int fpu_exception; | 89 | int fpu_exception; |
| 90 | 90 | ||
| 91 | #ifdef CONFIG_SMP | 91 | #ifdef CONFIG_SMP |
| 92 | if (!cpu_online(n)) | ||
| 93 | return 0; | ||
| 94 | n = c->cpu_index; | 92 | n = c->cpu_index; |
| 95 | #endif | 93 | #endif |
| 96 | seq_printf(m, "processor\t: %d\n" | 94 | seq_printf(m, "processor\t: %d\n" |
| @@ -177,14 +175,14 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 177 | static void *c_start(struct seq_file *m, loff_t *pos) | 175 | static void *c_start(struct seq_file *m, loff_t *pos) |
| 178 | { | 176 | { |
| 179 | if (*pos == 0) /* just in case, cpu 0 is not the first */ | 177 | if (*pos == 0) /* just in case, cpu 0 is not the first */ |
| 180 | *pos = first_cpu(cpu_possible_map); | 178 | *pos = first_cpu(cpu_online_map); |
| 181 | if ((*pos) < NR_CPUS && cpu_possible(*pos)) | 179 | if ((*pos) < NR_CPUS && cpu_online(*pos)) |
| 182 | return &cpu_data(*pos); | 180 | return &cpu_data(*pos); |
| 183 | return NULL; | 181 | return NULL; |
| 184 | } | 182 | } |
| 185 | static void *c_next(struct seq_file *m, void *v, loff_t *pos) | 183 | static void *c_next(struct seq_file *m, void *v, loff_t *pos) |
| 186 | { | 184 | { |
| 187 | *pos = next_cpu(*pos, cpu_possible_map); | 185 | *pos = next_cpu(*pos, cpu_online_map); |
| 188 | return c_start(m, pos); | 186 | return c_start(m, pos); |
| 189 | } | 187 | } |
| 190 | static void c_stop(struct seq_file *m, void *v) | 188 | static void c_stop(struct seq_file *m, void *v) |
diff --git a/arch/x86/kernel/reboot_fixups_32.c b/arch/x86/kernel/reboot_fixups_32.c index 1a07bbea7be3..f452726c0fe2 100644 --- a/arch/x86/kernel/reboot_fixups_32.c +++ b/arch/x86/kernel/reboot_fixups_32.c | |||
| @@ -39,6 +39,7 @@ struct device_fixup { | |||
| 39 | static struct device_fixup fixups_table[] = { | 39 | static struct device_fixup fixups_table[] = { |
| 40 | { PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset }, | 40 | { PCI_VENDOR_ID_CYRIX, PCI_DEVICE_ID_CYRIX_5530_LEGACY, cs5530a_warm_reset }, |
| 41 | { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset }, | 41 | { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, cs5536_warm_reset }, |
| 42 | { PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_SC1100_BRIDGE, cs5530a_warm_reset }, | ||
| 42 | }; | 43 | }; |
| 43 | 44 | ||
| 44 | /* | 45 | /* |
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c index 238633d3d09a..30d94d1d5f5f 100644 --- a/arch/x86/kernel/setup_64.c +++ b/arch/x86/kernel/setup_64.c | |||
| @@ -892,7 +892,6 @@ void __cpuinit early_identify_cpu(struct cpuinfo_x86 *c) | |||
| 892 | 892 | ||
| 893 | #ifdef CONFIG_SMP | 893 | #ifdef CONFIG_SMP |
| 894 | c->phys_proc_id = (cpuid_ebx(1) >> 24) & 0xff; | 894 | c->phys_proc_id = (cpuid_ebx(1) >> 24) & 0xff; |
| 895 | c->cpu_index = 0; | ||
| 896 | #endif | 895 | #endif |
| 897 | } | 896 | } |
| 898 | 897 | ||
| @@ -1078,8 +1077,6 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 1078 | 1077 | ||
| 1079 | 1078 | ||
| 1080 | #ifdef CONFIG_SMP | 1079 | #ifdef CONFIG_SMP |
| 1081 | if (!cpu_online(c->cpu_index)) | ||
| 1082 | return 0; | ||
| 1083 | cpu = c->cpu_index; | 1080 | cpu = c->cpu_index; |
| 1084 | #endif | 1081 | #endif |
| 1085 | 1082 | ||
| @@ -1171,15 +1168,15 @@ static int show_cpuinfo(struct seq_file *m, void *v) | |||
| 1171 | static void *c_start(struct seq_file *m, loff_t *pos) | 1168 | static void *c_start(struct seq_file *m, loff_t *pos) |
| 1172 | { | 1169 | { |
| 1173 | if (*pos == 0) /* just in case, cpu 0 is not the first */ | 1170 | if (*pos == 0) /* just in case, cpu 0 is not the first */ |
| 1174 | *pos = first_cpu(cpu_possible_map); | 1171 | *pos = first_cpu(cpu_online_map); |
| 1175 | if ((*pos) < NR_CPUS && cpu_possible(*pos)) | 1172 | if ((*pos) < NR_CPUS && cpu_online(*pos)) |
| 1176 | return &cpu_data(*pos); | 1173 | return &cpu_data(*pos); |
| 1177 | return NULL; | 1174 | return NULL; |
| 1178 | } | 1175 | } |
| 1179 | 1176 | ||
| 1180 | static void *c_next(struct seq_file *m, void *v, loff_t *pos) | 1177 | static void *c_next(struct seq_file *m, void *v, loff_t *pos) |
| 1181 | { | 1178 | { |
| 1182 | *pos = next_cpu(*pos, cpu_possible_map); | 1179 | *pos = next_cpu(*pos, cpu_online_map); |
| 1183 | return c_start(m, pos); | ||
