diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/i386/kernel/Makefile | 1 | ||||
-rw-r--r-- | arch/i386/kernel/smp.c | 65 | ||||
-rw-r--r-- | arch/i386/kernel/smpboot.c | 22 | ||||
-rw-r--r-- | arch/i386/kernel/smpcommon.c | 79 | ||||
-rw-r--r-- | arch/i386/kernel/traps.c | 5 | ||||
-rw-r--r-- | arch/i386/mach-voyager/voyager_smp.c | 106 | ||||
-rw-r--r-- | arch/m68k/lib/uaccess.c | 4 | ||||
-rw-r--r-- | arch/sparc/defconfig | 151 | ||||
-rw-r--r-- | arch/sparc/kernel/head.S | 2 | ||||
-rw-r--r-- | arch/sparc64/defconfig | 26 | ||||
-rw-r--r-- | arch/sparc64/kernel/of_device.c | 7 | ||||
-rw-r--r-- | arch/sparc64/kernel/smp.c | 3 | ||||
-rw-r--r-- | arch/x86_64/kernel/traps.c | 3 |
13 files changed, 230 insertions, 244 deletions
diff --git a/arch/i386/kernel/Makefile b/arch/i386/kernel/Makefile index 91cff8dc9e1a..06da59f6f837 100644 --- a/arch/i386/kernel/Makefile +++ b/arch/i386/kernel/Makefile | |||
@@ -19,6 +19,7 @@ obj-$(CONFIG_X86_CPUID) += cpuid.o | |||
19 | obj-$(CONFIG_MICROCODE) += microcode.o | 19 | obj-$(CONFIG_MICROCODE) += microcode.o |
20 | obj-$(CONFIG_APM) += apm.o | 20 | obj-$(CONFIG_APM) += apm.o |
21 | obj-$(CONFIG_X86_SMP) += smp.o smpboot.o tsc_sync.o | 21 | obj-$(CONFIG_X86_SMP) += smp.o smpboot.o tsc_sync.o |
22 | obj-$(CONFIG_SMP) += smpcommon.o | ||
22 | obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o | 23 | obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o |
23 | obj-$(CONFIG_X86_MPPARSE) += mpparse.o | 24 | obj-$(CONFIG_X86_MPPARSE) += mpparse.o |
24 | obj-$(CONFIG_X86_LOCAL_APIC) += apic.o nmi.o | 25 | obj-$(CONFIG_X86_LOCAL_APIC) += apic.o nmi.o |
diff --git a/arch/i386/kernel/smp.c b/arch/i386/kernel/smp.c index 706bda72dc60..c9a7c9835aba 100644 --- a/arch/i386/kernel/smp.c +++ b/arch/i386/kernel/smp.c | |||
@@ -467,7 +467,7 @@ void flush_tlb_all(void) | |||
467 | * it goes straight through and wastes no time serializing | 467 | * it goes straight through and wastes no time serializing |
468 | * anything. Worst case is that we lose a reschedule ... | 468 | * anything. Worst case is that we lose a reschedule ... |
469 | */ | 469 | */ |
470 | void native_smp_send_reschedule(int cpu) | 470 | static void native_smp_send_reschedule(int cpu) |
471 | { | 471 | { |
472 | WARN_ON(cpu_is_offline(cpu)); | 472 | WARN_ON(cpu_is_offline(cpu)); |
473 | send_IPI_mask(cpumask_of_cpu(cpu), RESCHEDULE_VECTOR); | 473 | send_IPI_mask(cpumask_of_cpu(cpu), RESCHEDULE_VECTOR); |
@@ -546,9 +546,10 @@ static void __smp_call_function(void (*func) (void *info), void *info, | |||
546 | * You must not call this function with disabled interrupts or from a | 546 | * You must not call this function with disabled interrupts or from a |
547 | * hardware interrupt handler or from a bottom half handler. | 547 | * hardware interrupt handler or from a bottom half handler. |
548 | */ | 548 | */ |
549 | int native_smp_call_function_mask(cpumask_t mask, | 549 | static int |
550 | void (*func)(void *), void *info, | 550 | native_smp_call_function_mask(cpumask_t mask, |
551 | int wait) | 551 | void (*func)(void *), void *info, |
552 | int wait) | ||
552 | { | 553 | { |
553 | struct call_data_struct data; | 554 | struct call_data_struct data; |
554 | cpumask_t allbutself; | 555 | cpumask_t allbutself; |
@@ -599,60 +600,6 @@ int native_smp_call_function_mask(cpumask_t mask, | |||
599 | return 0; | 600 | return 0; |
600 | } | 601 | } |
601 | 602 | ||
602 | /** | ||
603 | * smp_call_function(): Run a function on all other CPUs. | ||
604 | * @func: The function to run. This must be fast and non-blocking. | ||
605 | * @info: An arbitrary pointer to pass to the function. | ||
606 | * @nonatomic: Unused. | ||
607 | * @wait: If true, wait (atomically) until function has completed on other CPUs. | ||
608 | * | ||
609 | * Returns 0 on success, else a negative status code. | ||
610 | * | ||
611 | * If @wait is true, then returns once @func has returned; otherwise | ||
612 | * it returns just before the target cpu calls @func. | ||
613 | * | ||
614 | * You must not call this function with disabled interrupts or from a | ||
615 | * hardware interrupt handler or from a bottom half handler. | ||
616 | */ | ||
617 | int smp_call_function(void (*func) (void *info), void *info, int nonatomic, | ||
618 | int wait) | ||
619 | { | ||
620 | return smp_call_function_mask(cpu_online_map, func, info, wait); | ||
621 | } | ||
622 | EXPORT_SYMBOL(smp_call_function); | ||
623 | |||
624 | /** | ||
625 | * smp_call_function_single - Run a function on another CPU | ||
626 | * @cpu: The target CPU. Cannot be the calling CPU. | ||
627 | * @func: The function to run. This must be fast and non-blocking. | ||
628 | * @info: An arbitrary pointer to pass to the function. | ||
629 | * @nonatomic: Unused. | ||
630 | * @wait: If true, wait until function has completed on other CPUs. | ||
631 | * | ||
632 | * Returns 0 on success, else a negative status code. | ||
633 | * | ||
634 | * If @wait is true, then returns once @func has returned; otherwise | ||
635 | * it returns just before the target cpu calls @func. | ||
636 | */ | ||
637 | int smp_call_function_single(int cpu, void (*func) (void *info), void *info, | ||
638 | int nonatomic, int wait) | ||
639 | { | ||
640 | /* prevent preemption and reschedule on another processor */ | ||
641 | int ret; | ||
642 | int me = get_cpu(); | ||
643 | if (cpu == me) { | ||
644 | WARN_ON(1); | ||
645 | put_cpu(); | ||
646 | return -EBUSY; | ||
647 | } | ||
648 | |||
649 | ret = smp_call_function_mask(cpumask_of_cpu(cpu), func, info, wait); | ||
650 | |||
651 | put_cpu(); | ||
652 | return ret; | ||
653 | } | ||
654 | EXPORT_SYMBOL(smp_call_function_single); | ||
655 | |||
656 | static void stop_this_cpu (void * dummy) | 603 | static void stop_this_cpu (void * dummy) |
657 | { | 604 | { |
658 | local_irq_disable(); | 605 | local_irq_disable(); |
@@ -670,7 +617,7 @@ static void stop_this_cpu (void * dummy) | |||
670 | * this function calls the 'stop' function on all other CPUs in the system. | 617 | * this function calls the 'stop' function on all other CPUs in the system. |
671 | */ | 618 | */ |
672 | 619 | ||
673 | void native_smp_send_stop(void) | 620 | static void native_smp_send_stop(void) |
674 | { | 621 | { |
675 | /* Don't deadlock on the call lock in panic */ | 622 | /* Don't deadlock on the call lock in panic */ |
676 | int nolock = !spin_trylock(&call_lock); | 623 | int nolock = !spin_trylock(&call_lock); |
diff --git a/arch/i386/kernel/smpboot.c b/arch/i386/kernel/smpboot.c index b92cc4e8b3bb..08f07a74a9d3 100644 --- a/arch/i386/kernel/smpboot.c +++ b/arch/i386/kernel/smpboot.c | |||
@@ -98,9 +98,6 @@ EXPORT_SYMBOL(x86_cpu_to_apicid); | |||
98 | 98 | ||
99 | u8 apicid_2_node[MAX_APICID]; | 99 | u8 apicid_2_node[MAX_APICID]; |
100 | 100 | ||
101 | DEFINE_PER_CPU(unsigned long, this_cpu_off); | ||
102 | EXPORT_PER_CPU_SYMBOL(this_cpu_off); | ||
103 | |||
104 | /* | 101 | /* |
105 | * Trampoline 80x86 program as an array. | 102 | * Trampoline 80x86 program as an array. |
106 | */ | 103 | */ |
@@ -763,25 +760,6 @@ static inline struct task_struct * alloc_idle_task(int cpu) | |||
763 | #define alloc_idle_task(cpu) fork_idle(cpu) | 760 | #define alloc_idle_task(cpu) fork_idle(cpu) |
764 | #endif | 761 | #endif |
765 | 762 | ||
766 | /* Initialize the CPU's GDT. This is either the boot CPU doing itself | ||
767 | (still using the master per-cpu area), or a CPU doing it for a | ||
768 | secondary which will soon come up. */ | ||
769 | static __cpuinit void init_gdt(int cpu) | ||
770 | { | ||
771 | struct desc_struct *gdt = get_cpu_gdt_table(cpu); | ||
772 | |||
773 | pack_descriptor((u32 *)&gdt[GDT_ENTRY_PERCPU].a, | ||
774 | (u32 *)&gdt[GDT_ENTRY_PERCPU].b, | ||
775 | __per_cpu_offset[cpu], 0xFFFFF, | ||
776 | 0x80 | DESCTYPE_S | 0x2, 0x8); | ||
777 | |||
778 | per_cpu(this_cpu_off, cpu) = __per_cpu_offset[cpu]; | ||
779 | per_cpu(cpu_number, cpu) = cpu; | ||
780 | } | ||
781 | |||
782 | /* Defined in head.S */ | ||
783 | extern struct Xgt_desc_struct early_gdt_descr; | ||
784 | |||
785 | static int __cpuinit do_boot_cpu(int apicid, int cpu) | 763 | static int __cpuinit do_boot_cpu(int apicid, int cpu) |
786 | /* | 764 | /* |
787 | * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad | 765 | * NOTE - on most systems this is a PHYSICAL apic ID, but on multiquad |
diff --git a/arch/i386/kernel/smpcommon.c b/arch/i386/kernel/smpcommon.c new file mode 100644 index 000000000000..1868ae18eb4d --- /dev/null +++ b/arch/i386/kernel/smpcommon.c | |||
@@ -0,0 +1,79 @@ | |||
1 | /* | ||
2 | * SMP stuff which is common to all sub-architectures. | ||
3 | */ | ||
4 | #include <linux/module.h> | ||
5 | #include <asm/smp.h> | ||
6 | |||
7 | DEFINE_PER_CPU(unsigned long, this_cpu_off); | ||
8 | EXPORT_PER_CPU_SYMBOL(this_cpu_off); | ||
9 | |||
10 | /* Initialize the CPU's GDT. This is either the boot CPU doing itself | ||
11 | (still using the master per-cpu area), or a CPU doing it for a | ||
12 | secondary which will soon come up. */ | ||
13 | __cpuinit void init_gdt(int cpu) | ||
14 | { | ||
15 | struct desc_struct *gdt = get_cpu_gdt_table(cpu); | ||
16 | |||
17 | pack_descriptor((u32 *)&gdt[GDT_ENTRY_PERCPU].a, | ||
18 | (u32 *)&gdt[GDT_ENTRY_PERCPU].b, | ||
19 | __per_cpu_offset[cpu], 0xFFFFF, | ||
20 | 0x80 | DESCTYPE_S | 0x2, 0x8); | ||
21 | |||
22 | per_cpu(this_cpu_off, cpu) = __per_cpu_offset[cpu]; | ||
23 | per_cpu(cpu_number, cpu) = cpu; | ||
24 | } | ||
25 | |||
26 | |||
27 | /** | ||
28 | * smp_call_function(): Run a function on all other CPUs. | ||
29 | * @func: The function to run. This must be fast and non-blocking. | ||
30 | * @info: An arbitrary pointer to pass to the function. | ||
31 | * @nonatomic: Unused. | ||
32 | * @wait: If true, wait (atomically) until function has completed on other CPUs. | ||
33 | * | ||
34 | * Returns 0 on success, else a negative status code. | ||
35 | * | ||
36 | * If @wait is true, then returns once @func has returned; otherwise | ||
37 | * it returns just before the target cpu calls @func. | ||
38 | * | ||
39 | * You must not call this function with disabled interrupts or from a | ||
40 | * hardware interrupt handler or from a bottom half handler. | ||
41 | */ | ||
42 | int smp_call_function(void (*func) (void *info), void *info, int nonatomic, | ||
43 | int wait) | ||
44 | { | ||
45 | return smp_call_function_mask(cpu_online_map, func, info, wait); | ||
46 | } | ||
47 | EXPORT_SYMBOL(smp_call_function); | ||
48 | |||
49 | /** | ||
50 | * smp_call_function_single - Run a function on another CPU | ||
51 | * @cpu: The target CPU. Cannot be the calling CPU. | ||
52 | * @func: The function to run. This must be fast and non-blocking. | ||
53 | * @info: An arbitrary pointer to pass to the function. | ||
54 | * @nonatomic: Unused. | ||
55 | * @wait: If true, wait until function has completed on other CPUs. | ||
56 | * | ||
57 | * Returns 0 on success, else a negative status code. | ||
58 | * | ||
59 | * If @wait is true, then returns once @func has returned; otherwise | ||
60 | * it returns just before the target cpu calls @func. | ||
61 | */ | ||
62 | int smp_call_function_single(int cpu, void (*func) (void *info), void *info, | ||
63 | int nonatomic, int wait) | ||
64 | { | ||
65 | /* prevent preemption and reschedule on another processor */ | ||
66 | int ret; | ||
67 | int me = get_cpu(); | ||
68 | if (cpu == me) { | ||
69 | WARN_ON(1); | ||
70 | put_cpu(); | ||
71 | return -EBUSY; | ||
72 | } | ||
73 | |||
74 | ret = smp_call_function_mask(cpumask_of_cpu(cpu), func, info, wait); | ||
75 | |||
76 | put_cpu(); | ||
77 | return ret; | ||
78 | } | ||
79 | EXPORT_SYMBOL(smp_call_function_single); | ||
diff --git a/arch/i386/kernel/traps.c b/arch/i386/kernel/traps.c index c05e7e861b29..90da0575fcff 100644 --- a/arch/i386/kernel/traps.c +++ b/arch/i386/kernel/traps.c | |||
@@ -733,11 +733,6 @@ static __kprobes void default_do_nmi(struct pt_regs * regs) | |||
733 | */ | 733 | */ |
734 | if (nmi_watchdog_tick(regs, reason)) | 734 | if (nmi_watchdog_tick(regs, reason)) |
735 | return; | 735 | return; |
736 | #endif | ||
737 | if (notify_die(DIE_NMI_POST, "nmi_post", regs, reason, 2, 0) | ||
738 | == NOTIFY_STOP) | ||
739 | return; | ||
740 | #ifdef CONFIG_X86_LOCAL_APIC | ||
741 | if (!do_nmi_callback(regs, smp_processor_id())) | 736 | if (!do_nmi_callback(regs, smp_processor_id())) |
742 | #endif | 737 | #endif |
743 | unknown_nmi_error(reason, regs); | 738 | unknown_nmi_error(reason, regs); |
diff --git a/arch/i386/mach-voyager/voyager_smp.c b/arch/i386/mach-voyager/voyager_smp.c index 50d9c52070b1..b87f8548e75a 100644 --- a/arch/i386/mach-voyager/voyager_smp.c +++ b/arch/i386/mach-voyager/voyager_smp.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/pgalloc.h> | 27 | #include <asm/pgalloc.h> |
28 | #include <asm/tlbflush.h> | 28 | #include <asm/tlbflush.h> |
29 | #include <asm/arch_hooks.h> | 29 | #include <asm/arch_hooks.h> |
30 | #include <asm/pda.h> | ||
31 | 30 | ||
32 | /* TLB state -- visible externally, indexed physically */ | 31 | /* TLB state -- visible externally, indexed physically */ |
33 | DEFINE_PER_CPU(struct tlb_state, cpu_tlbstate) ____cacheline_aligned = { &init_mm, 0 }; | 32 | DEFINE_PER_CPU(struct tlb_state, cpu_tlbstate) ____cacheline_aligned = { &init_mm, 0 }; |
@@ -422,7 +421,7 @@ find_smp_config(void) | |||
422 | VOYAGER_SUS_IN_CONTROL_PORT); | 421 | VOYAGER_SUS_IN_CONTROL_PORT); |
423 | 422 | ||
424 | current_thread_info()->cpu = boot_cpu_id; | 423 | current_thread_info()->cpu = boot_cpu_id; |
425 | write_pda(cpu_number, boot_cpu_id); | 424 | x86_write_percpu(cpu_number, boot_cpu_id); |
426 | } | 425 | } |
427 | 426 | ||
428 | /* | 427 | /* |
@@ -435,7 +434,7 @@ smp_store_cpu_info(int id) | |||
435 | 434 | ||
436 | *c = boot_cpu_data; | 435 | *c = boot_cpu_data; |
437 | 436 | ||
438 | identify_cpu(c); | 437 | identify_secondary_cpu(c); |
439 | } | 438 | } |
440 | 439 | ||
441 | /* set up the trampoline and return the physical address of the code */ | 440 | /* set up the trampoline and return the physical address of the code */ |
@@ -459,7 +458,7 @@ start_secondary(void *unused) | |||
459 | /* external functions not defined in the headers */ | 458 | /* external functions not defined in the headers */ |
460 | extern void calibrate_delay(void); | 459 | extern void calibrate_delay(void); |
461 | 460 | ||
462 | secondary_cpu_init(); | 461 | cpu_init(); |
463 | 462 | ||
464 | /* OK, we're in the routine */ | 463 | /* OK, we're in the routine */ |
465 | ack_CPI(VIC_CPU_BOOT_CPI); | 464 | ack_CPI(VIC_CPU_BOOT_CPI); |
@@ -572,7 +571,9 @@ do_boot_cpu(__u8 cpu) | |||
572 | /* init_tasks (in sched.c) is indexed logically */ | 571 | /* init_tasks (in sched.c) is indexed logically */ |
573 | stack_start.esp = (void *) idle->thread.esp; | 572 | stack_start.esp = (void *) idle->thread.esp; |
574 | 573 | ||
575 | init_gdt(cpu, idle); | 574 | init_gdt(cpu); |
575 | per_cpu(current_task, cpu) = idle; | ||
576 | early_gdt_descr.address = (unsigned long)get_cpu_gdt_table(cpu); | ||
576 | irq_ctx_init(cpu); | 577 | irq_ctx_init(cpu); |
577 | 578 | ||
578 | /* Note: Don't modify initial ss override */ | 579 | /* Note: Don't modify initial ss override */ |
@@ -859,8 +860,8 @@ smp_invalidate_interrupt(void) | |||
859 | 860 | ||
860 | /* This routine is called with a physical cpu mask */ | 861 | /* This routine is called with a physical cpu mask */ |
861 | static void | 862 | static void |
862 | flush_tlb_others (unsigned long cpumask, struct mm_struct *mm, | 863 | voyager_flush_tlb_others (unsigned long cpumask, struct mm_struct *mm, |
863 | unsigned long va) | 864 | unsigned long va) |
864 | { | 865 | { |
865 | int stuck = 50000; | 866 | int stuck = 50000; |
866 | 867 | ||
@@ -912,7 +913,7 @@ flush_tlb_current_task(void) | |||
912 | cpu_mask = cpus_addr(mm->cpu_vm_mask)[0] & ~(1 << smp_processor_id()); | 913 | cpu_mask = cpus_addr(mm->cpu_vm_mask)[0] & ~(1 << smp_processor_id()); |
913 | local_flush_tlb(); | 914 | local_flush_tlb(); |
914 | if (cpu_mask) | 915 | if (cpu_mask) |
915 | flush_tlb_others(cpu_mask, mm, FLUSH_ALL); | 916 | voyager_flush_tlb_others(cpu_mask, mm, FLUSH_ALL); |
916 | 917 | ||
917 | preempt_enable(); | 918 | preempt_enable(); |
918 | } | 919 | } |
@@ -934,7 +935,7 @@ flush_tlb_mm (struct mm_struct * mm) | |||
934 | leave_mm(smp_processor_id()); | 935 | leave_mm(smp_processor_id()); |
935 | } | 936 | } |
936 | if (cpu_mask) | 937 | if (cpu_mask) |
937 | flush_tlb_others(cpu_mask, mm, FLUSH_ALL); | 938 | voyager_flush_tlb_others(cpu_mask, mm, FLUSH_ALL); |
938 | 939 | ||
939 | preempt_enable(); | 940 | preempt_enable(); |
940 | } | 941 | } |
@@ -955,7 +956,7 @@ void flush_tlb_page(struct vm_area_struct * vma, unsigned long va) | |||
955 | } | 956 | } |
956 | 957 | ||
957 | if (cpu_mask) | 958 | if (cpu_mask) |
958 | flush_tlb_others(cpu_mask, mm, va); | 959 | voyager_flush_tlb_others(cpu_mask, mm, va); |
959 | 960 | ||
960 | preempt_enable(); | 961 | preempt_enable(); |
961 | } | 962 | } |
@@ -1044,10 +1045,12 @@ smp_call_function_interrupt(void) | |||
1044 | } | 1045 | } |
1045 | 1046 | ||
1046 | static int | 1047 | static int |
1047 | __smp_call_function_mask (void (*func) (void *info), void *info, int retry, | 1048 | voyager_smp_call_function_mask (cpumask_t cpumask, |
1048 | int wait, __u32 mask) | 1049 | void (*func) (void *info), void *info, |
1050 | int wait) | ||
1049 | { | 1051 | { |
1050 | struct call_data_struct data; | 1052 | struct call_data_struct data; |
1053 | u32 mask = cpus_addr(cpumask)[0]; | ||
1051 | 1054 | ||
1052 | mask &= ~(1<<smp_processor_id()); | 1055 | mask &= ~(1<<smp_processor_id()); |
1053 | 1056 | ||
@@ -1083,47 +1086,6 @@ __smp_call_function_mask (void (*func) (void *info), void *info, int retry, | |||
1083 | return 0; | 1086 | return 0; |
1084 | } | 1087 | } |
1085 | 1088 | ||
1086 | /* Call this function on all CPUs using the function_interrupt above | ||
1087 | <func> The function to run. This must be fast and non-blocking. | ||
1088 | <info> An arbitrary pointer to pass to the function. | ||
1089 | <retry> If true, keep retrying until ready. | ||
1090 | <wait> If true, wait until function has completed on other CPUs. | ||
1091 | [RETURNS] 0 on success, else a negative status code. Does not return until | ||
1092 | remote CPUs are nearly ready to execute <<func>> or are or have executed. | ||
1093 | */ | ||
1094 | int | ||
1095 | smp_call_function(void (*func) (void *info), void *info, int retry, | ||
1096 | int wait) | ||
1097 | { | ||
1098 | __u32 mask = cpus_addr(cpu_online_map)[0]; | ||
1099 | |||
1100 | return __smp_call_function_mask(func, info, retry, wait, mask); | ||
1101 | } | ||
1102 | EXPORT_SYMBOL(smp_call_function); | ||
1103 | |||
1104 | /* | ||
1105 | * smp_call_function_single - Run a function on another CPU | ||
1106 | * @func: The function to run. This must be fast and non-blocking. | ||
1107 | * @info: An arbitrary pointer to pass to the function. | ||
1108 | * @nonatomic: Currently unused. | ||
1109 | * @wait: If true, wait until function has completed on other CPUs. | ||
1110 | * | ||
1111 | * Retrurns 0 on success, else a negative status code. | ||
1112 | * | ||
1113 | * Does not return until the remote CPU is nearly ready to execute <func> | ||
1114 | * or is or has executed. | ||
1115 | */ | ||
1116 | |||
1117 | int | ||
1118 | smp_call_function_single(int cpu, void (*func) (void *info), void *info, | ||
1119 | int nonatomic, int wait) | ||
1120 | { | ||
1121 | __u32 mask = 1 << cpu; | ||
1122 | |||
1123 | return __smp_call_function_mask(func, info, nonatomic, wait, mask); | ||
1124 | } | ||
1125 | EXPORT_SYMBOL(smp_call_function_single); | ||
1126 | |||
1127 | /* Sorry about the name. In an APIC based system, the APICs | 1089 | /* Sorry about the name. In an APIC based system, the APICs |
1128 | * themselves are programmed to send a timer interrupt. This is used | 1090 | * themselves are programmed to send a timer interrupt. This is used |
1129 | * by linux to reschedule the processor. Voyager doesn't have this, | 1091 | * by linux to reschedule the processor. Voyager doesn't have this, |
@@ -1237,8 +1199,8 @@ smp_alloc_memory(void) | |||
1237 | } | 1199 | } |
1238 | 1200 | ||
1239 | /* send a reschedule CPI to one CPU by physical CPU number*/ | 1201 | /* send a reschedule CPI to one CPU by physical CPU number*/ |
1240 | void | 1202 | static void |
1241 | smp_send_reschedule(int cpu) | 1203 | voyager_smp_send_reschedule(int cpu) |
1242 | { | 1204 | { |
1243 | send_one_CPI(cpu, VIC_RESCHEDULE_CPI); | 1205 | send_one_CPI(cpu, VIC_RESCHEDULE_CPI); |
1244 | } | 1206 | } |
@@ -1267,8 +1229,8 @@ safe_smp_processor_id(void) | |||
1267 | } | 1229 | } |
1268 | 1230 | ||
1269 | /* broadcast a halt to all other CPUs */ | 1231 | /* broadcast a halt to all other CPUs */ |
1270 | void | 1232 | static void |
1271 | smp_send_stop(void) | 1233 | voyager_smp_send_stop(void) |
1272 | { | 1234 | { |
1273 | smp_call_function(smp_stop_cpu_function, NULL, 1, 1); | 1235 | smp_call_function(smp_stop_cpu_function, NULL, 1, 1); |
1274 | } | 1236 | } |
@@ -1930,23 +1892,26 @@ smp_voyager_power_off(void *dummy) | |||
1930 | smp_stop_cpu_function(NULL); | 1892 | smp_stop_cpu_function(NULL); |
1931 | } | 1893 | } |
1932 | 1894 | ||
1933 | void __init | 1895 | static void __init |
1934 | smp_prepare_cpus(unsigned int max_cpus) | 1896 | voyager_smp_prepare_cpus(unsigned int max_cpus) |
1935 | { | 1897 | { |
1936 | /* FIXME: ignore max_cpus for now */ | 1898 | /* FIXME: ignore max_cpus for now */ |
1937 | smp_boot_cpus(); | 1899 | smp_boot_cpus(); |
1938 | } | 1900 | } |
1939 | 1901 | ||
1940 | void __devinit smp_prepare_boot_cpu(void) | 1902 | static void __devinit voyager_smp_prepare_boot_cpu(void) |
1941 | { | 1903 | { |
1904 | init_gdt(smp_processor_id()); | ||
1905 | switch_to_new_gdt(); | ||
1906 | |||
1942 | cpu_set(smp_processor_id(), cpu_online_map); | 1907 | cpu_set(smp_processor_id(), cpu_online_map); |
1943 | cpu_set(smp_processor_id(), cpu_callout_map); | 1908 | cpu_set(smp_processor_id(), cpu_callout_map); |
1944 | cpu_set(smp_processor_id(), cpu_possible_map); | 1909 | cpu_set(smp_processor_id(), cpu_possible_map); |
1945 | cpu_set(smp_processor_id(), cpu_present_map); | 1910 | cpu_set(smp_processor_id(), cpu_present_map); |
1946 | } | 1911 | } |
1947 | 1912 | ||
1948 | int __devinit | 1913 | static int __devinit |
1949 | __cpu_up(unsigned int cpu) | 1914 | voyager_cpu_up(unsigned int cpu) |
1950 | { | 1915 | { |
1951 | /* This only works at boot for x86. See "rewrite" above. */ | 1916 | /* This only works at boot for x86. See "rewrite" above. */ |
1952 | if (cpu_isset(cpu, smp_commenced_mask)) | 1917 | if (cpu_isset(cpu, smp_commenced_mask)) |
@@ -1962,8 +1927,8 @@ __cpu_up(unsigned int cpu) | |||
1962 | return 0; | 1927 | return 0; |
1963 | } | 1928 | } |
1964 | 1929 | ||
1965 | void __init | 1930 | static void __init |
1966 | smp_cpus_done(unsigned int max_cpus) | 1931 | voyager_smp_cpus_done(unsigned int max_cpus) |
1967 | { | 1932 | { |
1968 | zap_low_mappings(); | 1933 | zap_low_mappings(); |
1969 | } | 1934 | } |
@@ -1972,5 +1937,16 @@ void __init | |||
1972 | smp_setup_processor_id(void) | 1937 | smp_setup_processor_id(void) |
1973 | { | 1938 | { |
1974 | current_thread_info()->cpu = hard_smp_processor_id(); | 1939 | current_thread_info()->cpu = hard_smp_processor_id(); |
1975 | write_pda(cpu_number, hard_smp_processor_id()); | 1940 | x86_write_percpu(cpu_number, hard_smp_processor_id()); |
1976 | } | 1941 | } |
1942 | |||
1943 | struct smp_ops smp_ops = { | ||
1944 | .smp_prepare_boot_cpu = voyager_smp_prepare_boot_cpu, | ||
1945 | .smp_prepare_cpus = voyager_smp_prepare_cpus, | ||
1946 | .cpu_up = voyager_cpu_up, | ||
1947 | .smp_cpus_done = voyager_smp_cpus_done, | ||
1948 | |||
1949 | .smp_send_stop = voyager_smp_send_stop, | ||
1950 | .smp_send_reschedule = voyager_smp_send_reschedule, | ||
1951 | .smp_call_function_mask = voyager_smp_call_function_mask, | ||
1952 | }; | ||
diff --git a/arch/m68k/lib/uaccess.c b/arch/m68k/lib/uaccess.c index 865f9fb9e686..13854ed8cd9a 100644 --- a/arch/m68k/lib/uaccess.c +++ b/arch/m68k/lib/uaccess.c | |||
@@ -181,7 +181,7 @@ EXPORT_SYMBOL(strnlen_user); | |||
181 | * Zero Userspace | 181 | * Zero Userspace |
182 | */ | 182 | */ |
183 | 183 | ||
184 | unsigned long clear_user(void __user *to, unsigned long n) | 184 | unsigned long __clear_user(void __user *to, unsigned long n) |
185 | { | 185 | { |
186 | unsigned long res; | 186 | unsigned long res; |
187 | 187 | ||
@@ -219,4 +219,4 @@ unsigned long clear_user(void __user *to, unsigned long n) | |||
219 | 219 | ||
220 | return res; | 220 | return res; |
221 | } | 221 | } |
222 | EXPORT_SYMBOL(clear_user); | 222 | EXPORT_SYMBOL(__clear_user); |
diff --git a/arch/sparc/defconfig b/arch/sparc/defconfig index 79e54894529d..38bd79fe6e75 100644 --- a/arch/sparc/defconfig +++ b/arch/sparc/defconfig | |||
@@ -1,10 +1,11 @@ | |||
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-rc1 | 3 | # Linux kernel version: 2.6.22-rc1 |
4 | # Sun Dec 17 14:20:47 2006 | 4 | # Mon May 14 03:25:14 2007 |
5 | # | 5 | # |
6 | CONFIG_MMU=y | 6 | CONFIG_MMU=y |
7 | CONFIG_HIGHMEM=y | 7 | CONFIG_HIGHMEM=y |
8 | CONFIG_ZONE_DMA=y | ||
8 | CONFIG_GENERIC_ISA_DMA=y | 9 | CONFIG_GENERIC_ISA_DMA=y |
9 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 10 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
10 | 11 | ||
@@ -23,14 +24,17 @@ CONFIG_LOCALVERSION_AUTO=y | |||
23 | CONFIG_SWAP=y | 24 | CONFIG_SWAP=y |
24 | CONFIG_SYSVIPC=y | 25 | CONFIG_SYSVIPC=y |
25 | # CONFIG_IPC_NS is not set | 26 | # CONFIG_IPC_NS is not set |
27 | CONFIG_SYSVIPC_SYSCTL=y | ||
26 | CONFIG_POSIX_MQUEUE=y | 28 | CONFIG_POSIX_MQUEUE=y |
27 | # CONFIG_BSD_PROCESS_ACCT is not set | 29 | # CONFIG_BSD_PROCESS_ACCT is not set |
28 | # CONFIG_TASKSTATS is not set | 30 | # CONFIG_TASKSTATS is not set |
29 | # CONFIG_UTS_NS is not set | 31 | # CONFIG_UTS_NS is not set |
30 | # CONFIG_AUDIT is not set | 32 | # CONFIG_AUDIT is not set |
31 | # CONFIG_IKCONFIG is not set | 33 | # CONFIG_IKCONFIG is not set |
34 | CONFIG_LOG_BUF_SHIFT=14 | ||
32 | CONFIG_SYSFS_DEPRECATED=y | 35 | CONFIG_SYSFS_DEPRECATED=y |
33 | # CONFIG_RELAY is not set | 36 | # CONFIG_RELAY is not set |
37 | CONFIG_BLK_DEV_INITRD=y | ||
34 | CONFIG_INITRAMFS_SOURCE="" | 38 | CONFIG_INITRAMFS_SOURCE="" |
35 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 39 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
36 | CONFIG_SYSCTL=y | 40 | CONFIG_SYSCTL=y |
@@ -46,14 +50,19 @@ CONFIG_BUG=y | |||
46 | CONFIG_ELF_CORE=y | 50 | CONFIG_ELF_CORE=y |
47 | CONFIG_BASE_FULL=y | 51 | CONFIG_BASE_FULL=y |
48 | CONFIG_FUTEX=y | 52 | CONFIG_FUTEX=y |
53 | CONFIG_ANON_INODES=y | ||
49 | CONFIG_EPOLL=y | 54 | CONFIG_EPOLL=y |
55 | CONFIG_SIGNALFD=y | ||
56 | CONFIG_TIMERFD=y | ||
57 | CONFIG_EVENTFD=y | ||
50 | CONFIG_SHMEM=y | 58 | CONFIG_SHMEM=y |
51 | CONFIG_SLAB=y | ||
52 | CONFIG_VM_EVENT_COUNTERS=y | 59 | CONFIG_VM_EVENT_COUNTERS=y |
60 | CONFIG_SLAB=y | ||
61 | # CONFIG_SLUB is not set | ||
62 | # CONFIG_SLOB is not set | ||
53 | CONFIG_RT_MUTEXES=y | 63 | CONFIG_RT_MUTEXES=y |
54 | # CONFIG_TINY_SHMEM is not set | 64 | # CONFIG_TINY_SHMEM is not set |
55 | CONFIG_BASE_SMALL=0 | 65 | CONFIG_BASE_SMALL=0 |
56 | # CONFIG_SLOB is not set | ||
57 | 66 | ||
58 | # | 67 | # |
59 | # Loadable module support | 68 | # Loadable module support |
@@ -107,7 +116,7 @@ CONFIG_ARCH_MAY_HAVE_PC_FDC=y | |||
107 | CONFIG_SUN_PM=y | 116 | CONFIG_SUN_PM=y |
108 | # CONFIG_SUN4 is not set | 117 | # CONFIG_SUN4 is not set |
109 | CONFIG_PCI=y | 118 | CONFIG_PCI=y |
110 | # CONFIG_PCI_MULTITHREAD_PROBE is not set | 119 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
111 | # CONFIG_PCI_DEBUG is not set | 120 | # CONFIG_PCI_DEBUG is not set |
112 | CONFIG_SUN_OPENPROMFS=m | 121 | CONFIG_SUN_OPENPROMFS=m |
113 | # CONFIG_SPARC_LED is not set | 122 | # CONFIG_SPARC_LED is not set |
@@ -124,6 +133,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
124 | # CONFIG_SPARSEMEM_STATIC is not set | 133 | # CONFIG_SPARSEMEM_STATIC is not set |
125 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 134 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
126 | # CONFIG_RESOURCES_64BIT is not set | 135 | # CONFIG_RESOURCES_64BIT is not set |
136 | CONFIG_ZONE_DMA_FLAG=1 | ||
127 | 137 | ||
128 | # | 138 | # |
129 | # Networking | 139 | # Networking |
@@ -133,14 +143,15 @@ CONFIG_NET=y | |||
133 | # | 143 | # |
134 | # Networking options | 144 | # Networking options |
135 | # | 145 | # |
136 | # CONFIG_NETDEBUG is not set | ||
137 | CONFIG_PACKET=y | 146 | CONFIG_PACKET=y |
138 | # CONFIG_PACKET_MMAP is not set | 147 | # CONFIG_PACKET_MMAP is not set |
139 | CONFIG_UNIX=y | 148 | CONFIG_UNIX=y |
140 | CONFIG_XFRM=y | 149 | CONFIG_XFRM=y |
141 | CONFIG_XFRM_USER=m | 150 | CONFIG_XFRM_USER=m |
142 | # CONFIG_XFRM_SUB_POLICY is not set | 151 | # CONFIG_XFRM_SUB_POLICY is not set |
152 | # CONFIG_XFRM_MIGRATE is not set | ||
143 | CONFIG_NET_KEY=m | 153 | CONFIG_NET_KEY=m |
154 | # CONFIG_NET_KEY_MIGRATE is not set | ||
144 | CONFIG_INET=y | 155 | CONFIG_INET=y |
145 | # CONFIG_IP_MULTICAST is not set | 156 | # CONFIG_IP_MULTICAST is not set |
146 | # CONFIG_IP_ADVANCED_ROUTER is not set | 157 | # CONFIG_IP_ADVANCED_ROUTER is not set |
@@ -170,6 +181,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
170 | CONFIG_IPV6=m | 181 | CONFIG_IPV6=m |
171 | CONFIG_IPV6_PRIVACY=y | 182 | CONFIG_IPV6_PRIVACY=y |
172 | # CONFIG_IPV6_ROUTER_PREF is not set | 183 | # CONFIG_IPV6_ROUTER_PREF is not set |
184 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
173 | CONFIG_INET6_AH=m | 185 | CONFIG_INET6_AH=m |
174 | CONFIG_INET6_ESP=m | 186 | CONFIG_INET6_ESP=m |
175 | CONFIG_INET6_IPCOMP=m | 187 | CONFIG_INET6_IPCOMP=m |
@@ -229,7 +241,18 @@ CONFIG_NET_PKTGEN=m | |||
229 | # CONFIG_HAMRADIO is not set | 241 | # CONFIG_HAMRADIO is not set |
230 | # CONFIG_IRDA is not set | 242 | # CONFIG_IRDA is not set |
231 | # CONFIG_BT is not set | 243 | # CONFIG_BT is not set |
244 | CONFIG_AF_RXRPC=m | ||
245 | # CONFIG_AF_RXRPC_DEBUG is not set | ||
246 | # CONFIG_RXKAD is not set | ||
247 | |||
248 | # | ||
249 | # Wireless | ||
250 | # | ||
251 | # CONFIG_CFG80211 is not set | ||
252 | # CONFIG_WIRELESS_EXT is not set | ||
253 | # CONFIG_MAC80211 is not set | ||
232 | # CONFIG_IEEE80211 is not set | 254 | # CONFIG_IEEE80211 is not set |
255 | # CONFIG_RFKILL is not set | ||
233 | 256 | ||
234 | # | 257 | # |
235 | # Device Drivers | 258 | # Device Drivers |
@@ -242,16 +265,13 @@ CONFIG_STANDALONE=y | |||
242 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 265 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
243 | # CONFIG_FW_LOADER is not set | 266 | # CONFIG_FW_LOADER is not set |
244 | # CONFIG_DEBUG_DRIVER is not set | 267 | # CONFIG_DEBUG_DRIVER is not set |
268 | # CONFIG_DEBUG_DEVRES is not set | ||
245 | # CONFIG_SYS_HYPERVISOR is not set | 269 | # CONFIG_SYS_HYPERVISOR is not set |
246 | 270 | ||
247 | # | 271 | # |
248 | # Connector - unified userspace <-> kernelspace linker | 272 | # Connector - unified userspace <-> kernelspace linker |
249 | # | 273 | # |
250 | # CONFIG_CONNECTOR is not set | 274 | # CONFIG_CONNECTOR is not set |
251 | |||
252 | # | ||
253 | # Memory Technology Devices (MTD) | ||
254 | # | ||
255 | # CONFIG_MTD is not set | 275 | # CONFIG_MTD is not set |
256 | 276 | ||
257 | # | 277 | # |
@@ -262,6 +282,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
262 | # | 282 | # |
263 | # Plug and Play support | 283 | # Plug and Play support |
264 | # | 284 | # |
285 | # CONFIG_PNPACPI is not set | ||
265 | 286 | ||
266 | # | 287 | # |
267 | # Block devices | 288 | # Block devices |
@@ -280,15 +301,16 @@ CONFIG_BLK_DEV_RAM=y | |||
280 | CONFIG_BLK_DEV_RAM_COUNT=16 | 301 | CONFIG_BLK_DEV_RAM_COUNT=16 |
281 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 302 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
282 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 303 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
283 | CONFIG_BLK_DEV_INITRD=y | ||
284 | # CONFIG_CDROM_PKTCDVD is not set | 304 | # CONFIG_CDROM_PKTCDVD is not set |
285 | # CONFIG_ATA_OVER_ETH is not set | 305 | # CONFIG_ATA_OVER_ETH is not set |
286 | 306 | ||
287 | # | 307 | # |
288 | # Misc devices | 308 | # Misc devices |
289 | # | 309 | # |
310 | # CONFIG_PHANTOM is not set | ||
290 | # CONFIG_SGI_IOC4 is not set | 311 | # CONFIG_SGI_IOC4 is not set |
291 | # CONFIG_TIFM_CORE is not set | 312 | # CONFIG_TIFM_CORE is not set |
313 | # CONFIG_BLINK is not set | ||
292 | 314 | ||
293 | # | 315 | # |
294 | # ATA/ATAPI/MFM/RLL support | 316 | # ATA/ATAPI/MFM/RLL support |
@@ -322,11 +344,12 @@ CONFIG_CHR_DEV_SG=m | |||
322 | # CONFIG_SCSI_CONSTANTS is not set | 344 | # CONFIG_SCSI_CONSTANTS is not set |
323 | # CONFIG_SCSI_LOGGING is not set | 345 | # CONFIG_SCSI_LOGGING is not set |
324 | # CONFIG_SCSI_SCAN_ASYNC is not set | 346 | # CONFIG_SCSI_SCAN_ASYNC is not set |
347 | CONFIG_SCSI_WAIT_SCAN=m | ||
325 | 348 | ||
326 | # | 349 | # |
327 | # SCSI Transports | 350 | # SCSI Transports |
328 | # | 351 | # |
329 | CONFIG_SCSI_SPI_ATTRS=m | 352 | CONFIG_SCSI_SPI_ATTRS=y |
330 | # CONFIG_SCSI_FC_ATTRS is not set | 353 | # CONFIG_SCSI_FC_ATTRS is not set |
331 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 354 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
332 | # CONFIG_SCSI_SAS_ATTRS is not set | 355 | # CONFIG_SCSI_SAS_ATTRS is not set |
@@ -366,12 +389,9 @@ CONFIG_SCSI_QLOGICPTI=m | |||
366 | # CONFIG_SCSI_DC390T is not set | 389 | # CONFIG_SCSI_DC390T is not set |
367 | # CONFIG_SCSI_NSP32 is not set | 390 | # CONFIG_SCSI_NSP32 is not set |
368 | # CONFIG_SCSI_DEBUG is not set | 391 | # CONFIG_SCSI_DEBUG is not set |
392 | CONFIG_SCSI_ESP_CORE=y | ||
369 | CONFIG_SCSI_SUNESP=y | 393 | CONFIG_SCSI_SUNESP=y |
370 | # CONFIG_SCSI_SRP is not set | 394 | # CONFIG_SCSI_SRP is not set |
371 | |||
372 | # | ||
373 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
374 | # | ||
375 | # CONFIG_ATA is not set | 395 | # CONFIG_ATA is not set |
376 | 396 | ||
377 | # | 397 | # |
@@ -390,6 +410,7 @@ CONFIG_SCSI_SUNESP=y | |||
390 | # | 410 | # |
391 | # IEEE 1394 (FireWire) support | 411 | # IEEE 1394 (FireWire) support |
392 | # | 412 | # |
413 | # CONFIG_FIREWIRE is not set | ||
393 | # CONFIG_IEEE1394 is not set | 414 | # CONFIG_IEEE1394 is not set |
394 | 415 | ||
395 | # | 416 | # |
@@ -410,10 +431,6 @@ CONFIG_TUN=m | |||
410 | # ARCnet devices | 431 | # ARCnet devices |
411 | # | 432 | # |
412 | # CONFIG_ARCNET is not set | 433 | # CONFIG_ARCNET is not set |
413 | |||
414 | # | ||
415 | # PHY device support | ||
416 | # | ||
417 | # CONFIG_PHYLIB is not set | 434 | # CONFIG_PHYLIB is not set |
418 | 435 | ||
419 | # | 436 | # |
@@ -435,10 +452,7 @@ CONFIG_SUNQE=m | |||
435 | # CONFIG_NET_TULIP is not set | 452 | # CONFIG_NET_TULIP is not set |
436 | # CONFIG_HP100 is not set | 453 | # CONFIG_HP100 is not set |
437 | # CONFIG_NET_PCI is not set | 454 | # CONFIG_NET_PCI is not set |
438 | 455 | CONFIG_NETDEV_1000=y | |
439 | # | ||
440 | # Ethernet (1000 Mbit) | ||
441 | # | ||
442 | # CONFIG_ACENIC is not set | 456 | # CONFIG_ACENIC is not set |
443 | # CONFIG_DL2K is not set | 457 | # CONFIG_DL2K is not set |
444 | # CONFIG_E1000 is not set | 458 | # CONFIG_E1000 is not set |
@@ -454,15 +468,16 @@ CONFIG_SUNQE=m | |||
454 | # CONFIG_TIGON3 is not set | 468 | # CONFIG_TIGON3 is not set |
455 | # CONFIG_BNX2 is not set | 469 | # CONFIG_BNX2 is not set |
456 | # CONFIG_QLA3XXX is not set | 470 | # CONFIG_QLA3XXX is not set |
457 | 471 | # CONFIG_ATL1 is not set | |
458 | # | 472 | CONFIG_NETDEV_10000=y |
459 | # Ethernet (10000 Mbit) | ||
460 | # | ||
461 | # CONFIG_CHELSIO_T1 is not set | 473 | # CONFIG_CHELSIO_T1 is not set |
474 | # CONFIG_CHELSIO_T3 is not set | ||
462 | # CONFIG_IXGB is not set | 475 | # CONFIG_IXGB is not set |
463 | # CONFIG_S2IO is not set | 476 | # CONFIG_S2IO is not set |
464 | # CONFIG_MYRI10GE is not set | 477 | # CONFIG_MYRI10GE is not set |
465 | # CONFIG_NETXEN_NIC is not set | 478 | # CONFIG_NETXEN_NIC is not set |
479 | # CONFIG_MLX4_CORE is not set | ||
480 | CONFIG_MLX4_DEBUG=y | ||
466 | 481 | ||
467 | # | 482 | # |
468 | # Token Ring devices | 483 | # Token Ring devices |
@@ -470,13 +485,10 @@ CONFIG_SUNQE=m | |||
470 | # CONFIG_TR is not set | 485 | # CONFIG_TR is not set |
471 | 486 | ||
472 | # | 487 | # |
473 | # Wireless LAN (non-hamradio) | 488 | # Wireless LAN |
474 | # | ||
475 | # CONFIG_NET_RADIO is not set | ||
476 | |||
477 | # | ||
478 | # Wan interfaces | ||
479 | # | 489 | # |
490 | # CONFIG_WLAN_PRE80211 is not set | ||
491 | # CONFIG_WLAN_80211 is not set | ||
480 | # CONFIG_WAN is not set | 492 | # CONFIG_WAN is not set |
481 | # CONFIG_FDDI is not set | 493 | # CONFIG_FDDI is not set |
482 | # CONFIG_HIPPI is not set | 494 | # CONFIG_HIPPI is not set |
@@ -528,9 +540,17 @@ CONFIG_KEYBOARD_SUNKBD=m | |||
528 | # CONFIG_KEYBOARD_STOWAWAY is not set | 540 | # CONFIG_KEYBOARD_STOWAWAY is not set |
529 | CONFIG_INPUT_MOUSE=y | 541 | CONFIG_INPUT_MOUSE=y |
530 | CONFIG_MOUSE_PS2=m | 542 | CONFIG_MOUSE_PS2=m |
543 | CONFIG_MOUSE_PS2_ALPS=y | ||
544 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
545 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
546 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
547 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
548 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
531 | CONFIG_MOUSE_SERIAL=m | 549 | CONFIG_MOUSE_SERIAL=m |
550 | # CONFIG_MOUSE_APPLETOUCH is not set | ||
532 | # CONFIG_MOUSE_VSXXXAA is not set | 551 | # CONFIG_MOUSE_VSXXXAA is not set |
533 | # CONFIG_INPUT_JOYSTICK is not set | 552 | # CONFIG_INPUT_JOYSTICK is not set |
553 | # CONFIG_INPUT_TABLET is not set | ||
534 | # CONFIG_INPUT_TOUCHSCREEN is not set | 554 | # CONFIG_INPUT_TOUCHSCREEN is not set |
535 | # CONFIG_INPUT_MISC is not set | 555 | # CONFIG_INPUT_MISC is not set |
536 | 556 | ||
@@ -578,14 +598,9 @@ CONFIG_LEGACY_PTY_COUNT=256 | |||
578 | # IPMI | 598 | # IPMI |
579 | # | 599 | # |
580 | # CONFIG_IPMI_HANDLER is not set | 600 | # CONFIG_IPMI_HANDLER is not set |
581 | |||
582 | # | ||
583 | # Watchdog Cards | ||
584 | # | ||
585 | # CONFIG_WATCHDOG is not set | 601 | # CONFIG_WATCHDOG is not set |
586 | CONFIG_HW_RANDOM=m | 602 | CONFIG_HW_RANDOM=m |
587 | CONFIG_RTC=m | 603 | CONFIG_RTC=m |
588 | # CONFIG_DTLK is not set | ||
589 | # CONFIG_R3964 is not set | 604 | # CONFIG_R3964 is not set |
590 | # CONFIG_APPLICOM is not set | 605 | # CONFIG_APPLICOM is not set |
591 | # CONFIG_DRM is not set | 606 | # CONFIG_DRM is not set |
@@ -595,10 +610,7 @@ CONFIG_RTC=m | |||
595 | # TPM devices | 610 | # TPM devices |
596 | # | 611 | # |
597 | # CONFIG_TCG_TPM is not set | 612 | # CONFIG_TCG_TPM is not set |
598 | 613 | CONFIG_DEVPORT=y | |
599 | # | ||
600 | # I2C support | ||
601 | # | ||
602 | # CONFIG_I2C is not set | 614 | # CONFIG_I2C is not set |
603 | 615 | ||
604 | # | 616 | # |
@@ -611,32 +623,39 @@ CONFIG_RTC=m | |||
611 | # Dallas's 1-wire bus | 623 | # Dallas's 1-wire bus |
612 | # | 624 | # |
613 | # CONFIG_W1 is not set | 625 | # CONFIG_W1 is not set |
614 | |||
615 | # | ||
616 | # Hardware Monitoring support | ||
617 | # | ||
618 | CONFIG_HWMON=y | 626 | CONFIG_HWMON=y |
619 | # CONFIG_HWMON_VID is not set | 627 | # CONFIG_HWMON_VID is not set |
620 | # CONFIG_SENSORS_ABITUGURU is not set | 628 | # CONFIG_SENSORS_ABITUGURU is not set |
621 | # CONFIG_SENSORS_F71805F is not set | 629 | # CONFIG_SENSORS_F71805F is not set |
622 | # CONFIG_SENSORS_PC87427 is not set | 630 | # CONFIG_SENSORS_PC87427 is not set |
631 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
632 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
623 | # CONFIG_SENSORS_VT1211 is not set | 633 | # CONFIG_SENSORS_VT1211 is not set |
634 | # CONFIG_SENSORS_W83627HF is not set | ||
624 | # CONFIG_HWMON_DEBUG_CHIP is not set | 635 | # CONFIG_HWMON_DEBUG_CHIP is not set |
625 | 636 | ||
626 | # | 637 | # |
638 | # Multifunction device drivers | ||
639 | # | ||
640 | # CONFIG_MFD_SM501 is not set | ||
641 | |||
642 | # | ||
627 | # Multimedia devices | 643 | # Multimedia devices |
628 | # | 644 | # |
629 | # CONFIG_VIDEO_DEV is not set | 645 | # CONFIG_VIDEO_DEV is not set |
646 | # CONFIG_DVB_CORE is not set | ||
647 | # CONFIG_DAB is not set | ||
630 | 648 | ||
631 | # | 649 | # |
632 | # Digital Video Broadcasting Devices | 650 | # Graphics support |
633 | # | 651 | # |
634 | # CONFIG_DVB is not set | 652 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
635 | 653 | ||
636 | # | 654 | # |
637 | # Graphics support | 655 | # Display device support |
638 | # | 656 | # |
639 | CONFIG_FIRMWARE_EDID=y | 657 | # CONFIG_DISPLAY_SUPPORT is not set |
658 | # CONFIG_VGASTATE is not set | ||
640 | # CONFIG_FB is not set | 659 | # CONFIG_FB is not set |
641 | 660 | ||
642 | # | 661 | # |
@@ -644,7 +663,6 @@ CONFIG_FIRMWARE_EDID=y | |||
644 | # | 663 | # |
645 | # CONFIG_PROM_CONSOLE is not set | 664 | # CONFIG_PROM_CONSOLE is not set |
646 | CONFIG_DUMMY_CONSOLE=y | 665 | CONFIG_DUMMY_CONSOLE=y |
647 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
648 | 666 | ||
649 | # | 667 | # |
650 | # Sound | 668 | # Sound |
@@ -655,6 +673,7 @@ CONFIG_DUMMY_CONSOLE=y | |||
655 | # HID Devices | 673 | # HID Devices |
656 | # | 674 | # |
657 | CONFIG_HID=y | 675 | CONFIG_HID=y |
676 | # CONFIG_HID_DEBUG is not set | ||
658 | 677 | ||
659 | # | 678 | # |
660 | # USB support | 679 | # USB support |
@@ -672,10 +691,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
672 | # USB Gadget Support | 691 | # USB Gadget Support |
673 | # | 692 | # |
674 | # CONFIG_USB_GADGET is not set | 693 | # CONFIG_USB_GADGET is not set |
675 | |||
676 | # | ||
677 | # MMC/SD Card support | ||
678 | # | ||
679 | # CONFIG_MMC is not set | 694 | # CONFIG_MMC is not set |
680 | 695 | ||
681 | # | 696 | # |
@@ -719,10 +734,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y | |||
719 | # | 734 | # |
720 | 735 | ||
721 | # | 736 | # |
722 | # Virtualization | ||
723 | # | ||
724 | |||
725 | # | ||
726 | # Misc Linux/SPARC drivers | 737 | # Misc Linux/SPARC drivers |
727 | # | 738 | # |
728 | CONFIG_SUN_OPENPROMIO=m | 739 | CONFIG_SUN_OPENPROMIO=m |
@@ -801,6 +812,7 @@ CONFIG_RAMFS=y | |||
801 | # | 812 | # |
802 | # CONFIG_ADFS_FS is not set | 813 | # CONFIG_ADFS_FS is not set |
803 | # CONFIG_AFFS_FS is not set | 814 | # CONFIG_AFFS_FS is not set |
815 | # CONFIG_ECRYPT_FS is not set | ||
804 | # CONFIG_HFS_FS is not set | 816 | # CONFIG_HFS_FS is not set |
805 | # CONFIG_HFSPLUS_FS is not set | 817 | # CONFIG_HFSPLUS_FS is not set |
806 | CONFIG_BEFS_FS=m | 818 | CONFIG_BEFS_FS=m |
@@ -827,6 +839,7 @@ CONFIG_LOCKD=y | |||
827 | CONFIG_NFS_COMMON=y | 839 | CONFIG_NFS_COMMON=y |
828 | CONFIG_SUNRPC=y | 840 | CONFIG_SUNRPC=y |
829 | CONFIG_SUNRPC_GSS=m | 841 | CONFIG_SUNRPC_GSS=m |
842 | # CONFIG_SUNRPC_BIND34 is not set | ||
830 | CONFIG_RPCSEC_GSS_KRB5=m | 843 | CONFIG_RPCSEC_GSS_KRB5=m |
831 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | 844 | # CONFIG_RPCSEC_GSS_SPKM3 is not set |
832 | # CONFIG_SMB_FS is not set | 845 | # CONFIG_SMB_FS is not set |
@@ -839,7 +852,7 @@ CONFIG_CIFS=m | |||
839 | # CONFIG_NCP_FS is not set | 852 | # CONFIG_NCP_FS is not set |
840 | # CONFIG_CODA_FS is not set | 853 | # CONFIG_CODA_FS is not set |
841 | CONFIG_AFS_FS=m | 854 | CONFIG_AFS_FS=m |
842 | CONFIG_RXRPC=m | 855 | # CONFIG_AFS_DEBUG is not set |
843 | # CONFIG_9P_FS is not set | 856 | # CONFIG_9P_FS is not set |
844 | 857 | ||
845 | # | 858 | # |
@@ -913,15 +926,14 @@ CONFIG_MAGIC_SYSRQ=y | |||
913 | # CONFIG_DEBUG_FS is not set | 926 | # CONFIG_DEBUG_FS is not set |
914 | # CONFIG_HEADERS_CHECK is not set | 927 | # CONFIG_HEADERS_CHECK is not set |
915 | CONFIG_DEBUG_KERNEL=y | 928 | CONFIG_DEBUG_KERNEL=y |
916 | CONFIG_LOG_BUF_SHIFT=14 | ||
917 | CONFIG_DETECT_SOFTLOCKUP=y | 929 | CONFIG_DETECT_SOFTLOCKUP=y |
918 | # CONFIG_SCHEDSTATS is not set | 930 | # CONFIG_SCHEDSTATS is not set |
931 | # CONFIG_TIMER_STATS is not set | ||
919 | # CONFIG_DEBUG_SLAB is not set | 932 | # CONFIG_DEBUG_SLAB is not set |
920 | # CONFIG_DEBUG_RT_MUTEXES is not set | 933 | # CONFIG_DEBUG_RT_MUTEXES is not set |
921 | # CONFIG_RT_MUTEX_TESTER is not set | 934 | # CONFIG_RT_MUTEX_TESTER is not set |
922 | # CONFIG_DEBUG_SPINLOCK is not set | 935 | # CONFIG_DEBUG_SPINLOCK is not set |
923 | # CONFIG_DEBUG_MUTEXES is not set | 936 | # CONFIG_DEBUG_MUTEXES is not set |
924 | # CONFIG_DEBUG_RWSEMS is not set | ||
925 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 937 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
926 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 938 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
927 | # CONFIG_DEBUG_KOBJECT is not set | 939 | # CONFIG_DEBUG_KOBJECT is not set |
@@ -932,12 +944,14 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
932 | # CONFIG_DEBUG_LIST is not set | 944 | # CONFIG_DEBUG_LIST is not set |
933 | CONFIG_FORCED_INLINING=y | 945 | CONFIG_FORCED_INLINING=y |
934 | # CONFIG_RCU_TORTURE_TEST is not set | 946 | # CONFIG_RCU_TORTURE_TEST is not set |
947 | # CONFIG_FAULT_INJECTION is not set | ||
935 | # CONFIG_DEBUG_STACK_USAGE is not set | 948 | # CONFIG_DEBUG_STACK_USAGE is not set |
936 | 949 | ||
937 | # | 950 | # |
938 | # Security options | 951 | # Security options |
939 | # | 952 | # |
940 | # CONFIG_KEYS is not set | 953 | CONFIG_KEYS=y |
954 | # CONFIG_KEYS_DEBUG_PROC_KEYS is not set | ||
941 | # CONFIG_SECURITY is not set | 955 | # CONFIG_SECURITY is not set |
942 | 956 | ||
943 | # | 957 | # |
@@ -961,8 +975,11 @@ CONFIG_CRYPTO_SHA512=m | |||
961 | # CONFIG_CRYPTO_GF128MUL is not set | 975 | # CONFIG_CRYPTO_GF128MUL is not set |
962 | CONFIG_CRYPTO_ECB=m | 976 | CONFIG_CRYPTO_ECB=m |
963 | CONFIG_CRYPTO_CBC=y | 977 | CONFIG_CRYPTO_CBC=y |
978 | CONFIG_CRYPTO_PCBC=m | ||
964 | # CONFIG_CRYPTO_LRW is not set | 979 | # CONFIG_CRYPTO_LRW is not set |
980 | # CONFIG_CRYPTO_CRYPTD is not set | ||
965 | CONFIG_CRYPTO_DES=y | 981 | CONFIG_CRYPTO_DES=y |
982 | # CONFIG_CRYPTO_FCRYPT is not set | ||
966 | CONFIG_CRYPTO_BLOWFISH=m | 983 | CONFIG_CRYPTO_BLOWFISH=m |
967 | CONFIG_CRYPTO_TWOFISH=m | 984 | CONFIG_CRYPTO_TWOFISH=m |
968 | CONFIG_CRYPTO_TWOFISH_COMMON=m | 985 | CONFIG_CRYPTO_TWOFISH_COMMON=m |
@@ -977,6 +994,7 @@ CONFIG_CRYPTO_ARC4=m | |||
977 | CONFIG_CRYPTO_DEFLATE=y | 994 | CONFIG_CRYPTO_DEFLATE=y |
978 | CONFIG_CRYPTO_MICHAEL_MIC=m | 995 | CONFIG_CRYPTO_MICHAEL_MIC=m |
979 | CONFIG_CRYPTO_CRC32C=m | 996 | CONFIG_CRYPTO_CRC32C=m |
997 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
980 | # CONFIG_CRYPTO_TEST is not set | 998 | # CONFIG_CRYPTO_TEST is not set |
981 | 999 | ||
982 | # | 1000 | # |
@@ -989,9 +1007,12 @@ CONFIG_CRYPTO_CRC32C=m | |||
989 | CONFIG_BITREVERSE=y | 1007 | CONFIG_BITREVERSE=y |
990 | # CONFIG_CRC_CCITT is not set | 1008 | # CONFIG_CRC_CCITT is not set |
991 | # CONFIG_CRC16 is not set | 1009 | # CONFIG_CRC16 is not set |
1010 | # CONFIG_CRC_ITU_T is not set | ||
992 | CONFIG_CRC32=y | 1011 | CONFIG_CRC32=y |
993 | CONFIG_LIBCRC32C=m | 1012 | CONFIG_LIBCRC32C=m |
994 | CONFIG_ZLIB_INFLATE=y | 1013 | CONFIG_ZLIB_INFLATE=y |
995 | CONFIG_ZLIB_DEFLATE=y | 1014 | CONFIG_ZLIB_DEFLATE=y |
996 | CONFIG_PLIST=y | 1015 | CONFIG_PLIST=y |
997 | CONFIG_IOMAP_COPY=y | 1016 | CONFIG_HAS_IOMEM=y |
1017 | CONFIG_HAS_IOPORT=y | ||
1018 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/sparc/kernel/head.S b/arch/sparc/kernel/head.S index 97da13c52563..9a219e8b5ddb 100644 --- a/arch/sparc/kernel/head.S +++ b/arch/sparc/kernel/head.S | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/psr.h> | 20 | #include <asm/psr.h> |
21 | #include <asm/page.h> | 21 | #include <asm/page.h> |
22 | #include <linux/kdebug.h> | 22 | #include <asm/kdebug.h> |
23 | #include <asm/winmacro.h> | 23 | #include <asm/winmacro.h> |
24 | #include <asm/thread_info.h> /* TI_UWINMASK */ | 24 | #include <asm/thread_info.h> /* TI_UWINMASK */ |
25 | #include <asm/errno.h> | 25 | #include <asm/errno.h> |
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index 585ef4fb7591..65840a62bb9c 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/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.21 | 3 | # Linux kernel version: 2.6.22-rc1 |
4 | # Fri May 11 14:31:45 2007 | 4 | # Mon May 14 04:17:48 2007 |
5 | # | 5 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -508,10 +508,6 @@ CONFIG_ISCSI_TCP=m | |||
508 | # CONFIG_SCSI_ESP_CORE is not set | 508 | # CONFIG_SCSI_ESP_CORE is not set |
509 | # CONFIG_SCSI_SUNESP is not set | 509 | # CONFIG_SCSI_SUNESP is not set |
510 | # CONFIG_SCSI_SRP is not set | 510 | # CONFIG_SCSI_SRP is not set |
511 | |||
512 | # | ||
513 | # Serial ATA (prod) and Parallel ATA (experimental) drivers | ||
514 | # | ||
515 | # CONFIG_ATA is not set | 511 | # CONFIG_ATA is not set |
516 | 512 | ||
517 | # | 513 | # |
@@ -568,10 +564,6 @@ CONFIG_DUMMY=m | |||
568 | # ARCnet devices | 564 | # ARCnet devices |
569 | # | 565 | # |
570 | # CONFIG_ARCNET is not set | 566 | # CONFIG_ARCNET is not set |
571 | |||
572 | # | ||
573 | # PHY device support | ||
574 | # | ||
575 | # CONFIG_PHYLIB is not set | 567 | # CONFIG_PHYLIB is not set |
576 | 568 | ||
577 | # | 569 | # |
@@ -611,10 +603,7 @@ CONFIG_NET_PCI=y | |||
611 | # CONFIG_SUNDANCE is not set | 603 | # CONFIG_SUNDANCE is not set |
612 | # CONFIG_VIA_RHINE is not set | 604 | # CONFIG_VIA_RHINE is not set |
613 | # CONFIG_SC92031 is not set | 605 | # CONFIG_SC92031 is not set |
614 | 606 | CONFIG_NETDEV_1000=y | |
615 | # | ||
616 | # Ethernet (1000 Mbit) | ||
617 | # | ||
618 | # CONFIG_ACENIC is not set | 607 | # CONFIG_ACENIC is not set |
619 | # CONFIG_DL2K is not set | 608 | # CONFIG_DL2K is not set |
620 | CONFIG_E1000=m | 609 | CONFIG_E1000=m |
@@ -634,10 +623,7 @@ CONFIG_TIGON3=m | |||
634 | CONFIG_BNX2=m | 623 | CONFIG_BNX2=m |
635 | # CONFIG_QLA3XXX is not set | 624 | # CONFIG_QLA3XXX is not set |
636 | # CONFIG_ATL1 is not set | 625 | # CONFIG_ATL1 is not set |
637 | 626 | CONFIG_NETDEV_10000=y | |
638 | # | ||
639 | # Ethernet (10000 Mbit) | ||
640 | # | ||
641 | # CONFIG_CHELSIO_T1 is not set | 627 | # CONFIG_CHELSIO_T1 is not set |
642 | # CONFIG_CHELSIO_T3 is not set | 628 | # CONFIG_CHELSIO_T3 is not set |
643 | # CONFIG_IXGB is not set | 629 | # CONFIG_IXGB is not set |
@@ -667,10 +653,6 @@ CONFIG_MLX4_DEBUG=y | |||
667 | # CONFIG_USB_RTL8150 is not set | 653 | # CONFIG_USB_RTL8150 is not set |
668 | # CONFIG_USB_USBNET_MII is not set | 654 | # CONFIG_USB_USBNET_MII is not set |
669 | # CONFIG_USB_USBNET is not set | 655 | # CONFIG_USB_USBNET is not set |
670 | |||
671 | # | ||
672 | # Wan interfaces | ||
673 | # | ||
674 | # CONFIG_WAN is not set | 656 | # CONFIG_WAN is not set |
675 | # CONFIG_FDDI is not set | 657 | # CONFIG_FDDI is not set |
676 | # CONFIG_HIPPI is not set | 658 | # CONFIG_HIPPI is not set |
diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c index 7455f5d05519..16cc46a71872 100644 --- a/arch/sparc64/kernel/of_device.c +++ b/arch/sparc64/kernel/of_device.c | |||
@@ -537,6 +537,13 @@ static int __init build_one_resource(struct device_node *parent, | |||
537 | return 0; | 537 | return 0; |
538 | } | 538 | } |
539 | 539 | ||
540 | /* When we miss an I/O space match on PCI, just pass it up | ||
541 | * to the next PCI bridge and/or controller. | ||
542 | */ | ||
543 | if (!strcmp(bus->name, "pci") && | ||
544 | (addr[0] & 0x03000000) == 0x01000000) | ||
545 | return 0; | ||
546 | |||
540 | return 1; | 547 | return 1; |
541 | } | 548 | } |
542 | 549 | ||
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 8087d67a0cf8..24fdf1d0adc5 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -561,6 +561,9 @@ static void hypervisor_xcall_deliver(u64 data0, u64 data1, u64 data2, cpumask_t | |||
561 | unsigned long flags, status; | 561 | unsigned long flags, status; |
562 | int cnt, retries, this_cpu, prev_sent, i; | 562 | int cnt, retries, this_cpu, prev_sent, i; |
563 | 563 | ||
564 | if (cpus_empty(mask)) | ||
565 | return; | ||
566 | |||
564 | /* We have to do this whole thing with interrupts fully disabled. | 567 | /* We have to do this whole thing with interrupts fully disabled. |
565 | * Otherwise if we send an xcall from interrupt context it will | 568 | * Otherwise if we send an xcall from interrupt context it will |
566 | * corrupt both our mondo block and cpu list state. | 569 | * corrupt both our mondo block and cpu list state. |
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c index d28f01379b9b..cb29fb96948d 100644 --- a/arch/x86_64/kernel/traps.c +++ b/arch/x86_64/kernel/traps.c | |||
@@ -776,9 +776,6 @@ asmlinkage __kprobes void default_do_nmi(struct pt_regs *regs) | |||
776 | */ | 776 | */ |
777 | if (nmi_watchdog_tick(regs,reason)) | 777 | if (nmi_watchdog_tick(regs,reason)) |
778 | return; | 778 | return; |
779 | if (notify_die(DIE_NMI_POST, "nmi_post", regs, reason, 2, 0) | ||
780 | == NOTIFY_STOP) | ||
781 | return; | ||
782 | if (!do_nmi_callback(regs,cpu)) | 779 | if (!do_nmi_callback(regs,cpu)) |
783 | unknown_nmi_error(reason, regs); | 780 | unknown_nmi_error(reason, regs); |
784 | 781 | ||