Magellan Linux

Annotation of /trunk/kernel26-xen/patches-2.6.25-r1/1042-2.6.25-xen-x86-consistent-nmi.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 609 - (hide annotations) (download)
Fri May 23 17:35:37 2008 UTC (16 years ago) by niro
File size: 10029 byte(s)
-using opensuse xen patchset, updated kernel configs

1 niro 609 From: jbeulich@novell.com
2     Subject: make i386 and x86 NMI code consistent, disable all APIC-related stuff
3     Patch-mainline: obsolete
4     References: 191115
5    
6     Index: head-2008-03-06/arch/x86/kernel/cpu/Makefile
7     ===================================================================
8     --- head-2008-03-06.orig/arch/x86/kernel/cpu/Makefile 2008-03-05 16:14:58.000000000 +0100
9     +++ head-2008-03-06/arch/x86/kernel/cpu/Makefile 2008-03-06 10:52:57.000000000 +0100
10     @@ -18,4 +18,6 @@ obj-$(CONFIG_X86_MCE) += mcheck/
11     obj-$(CONFIG_MTRR) += mtrr/
12     obj-$(CONFIG_CPU_FREQ) += cpufreq/
13    
14     +ifneq ($(CONFIG_XEN),y)
15     obj-$(CONFIG_X86_LOCAL_APIC) += perfctr-watchdog.o
16     +endif
17     Index: head-2008-03-06/arch/x86/kernel/nmi_32.c
18     ===================================================================
19     --- head-2008-03-06.orig/arch/x86/kernel/nmi_32.c 2008-03-05 16:14:58.000000000 +0100
20     +++ head-2008-03-06/arch/x86/kernel/nmi_32.c 2008-03-06 10:52:57.000000000 +0100
21     @@ -28,7 +28,10 @@
22    
23     #include "mach_traps.h"
24    
25     -int unknown_nmi_panic;
26     +extern void die_nmi(struct pt_regs *, const char *msg);
27     +
28     +#ifndef CONFIG_XEN
29     +
30     int nmi_watchdog_enabled;
31    
32     static cpumask_t backtrace_mask = CPU_MASK_NONE;
33     @@ -315,8 +318,6 @@ void touch_nmi_watchdog(void)
34     }
35     EXPORT_SYMBOL(touch_nmi_watchdog);
36    
37     -extern void die_nmi(struct pt_regs *, const char *msg);
38     -
39     __kprobes int nmi_watchdog_tick(struct pt_regs * regs, unsigned reason)
40     {
41    
42     @@ -388,8 +389,12 @@ __kprobes int nmi_watchdog_tick(struct p
43     return rc;
44     }
45    
46     +#endif /* CONFIG_XEN */
47     +
48     #ifdef CONFIG_SYSCTL
49    
50     +int unknown_nmi_panic;
51     +
52     static int unknown_nmi_panic_callback(struct pt_regs *regs, int cpu)
53     {
54     unsigned char reason = get_nmi_reason();
55     @@ -400,6 +405,7 @@ static int unknown_nmi_panic_callback(st
56     return 0;
57     }
58    
59     +#ifndef CONFIG_XEN
60     /*
61     * proc handler for /proc/sys/kernel/nmi
62     */
63     @@ -438,6 +444,7 @@ int proc_nmi_enabled(struct ctl_table *t
64     }
65     return 0;
66     }
67     +#endif
68    
69     #endif
70    
71     @@ -450,6 +457,7 @@ int do_nmi_callback(struct pt_regs *regs
72     return 0;
73     }
74    
75     +#ifndef CONFIG_XEN
76     void __trigger_all_cpu_backtrace(void)
77     {
78     int i;
79     @@ -465,3 +473,4 @@ void __trigger_all_cpu_backtrace(void)
80    
81     EXPORT_SYMBOL(nmi_active);
82     EXPORT_SYMBOL(nmi_watchdog);
83     +#endif
84     Index: head-2008-03-06/arch/x86/kernel/nmi_64.c
85     ===================================================================
86     --- head-2008-03-06.orig/arch/x86/kernel/nmi_64.c 2008-03-05 16:14:58.000000000 +0100
87     +++ head-2008-03-06/arch/x86/kernel/nmi_64.c 2008-03-06 10:52:57.000000000 +0100
88     @@ -26,10 +26,12 @@
89     #include <asm/proto.h>
90     #include <asm/mce.h>
91    
92     -int unknown_nmi_panic;
93     -int nmi_watchdog_enabled;
94     int panic_on_unrecovered_nmi;
95    
96     +#ifndef CONFIG_XEN
97     +
98     +int nmi_watchdog_enabled;
99     +
100     static cpumask_t backtrace_mask = CPU_MASK_NONE;
101    
102     /* nmi_active:
103     @@ -380,6 +382,8 @@ int __kprobes nmi_watchdog_tick(struct p
104     return rc;
105     }
106    
107     +#endif /* CONFIG_XEN */
108     +
109     static unsigned ignore_nmis;
110    
111     asmlinkage __kprobes void do_nmi(struct pt_regs * regs, long error_code)
112     @@ -405,6 +409,8 @@ void restart_nmi(void)
113    
114     #ifdef CONFIG_SYSCTL
115    
116     +int unknown_nmi_panic;
117     +
118     static int unknown_nmi_panic_callback(struct pt_regs *regs, int cpu)
119     {
120     unsigned char reason = get_nmi_reason();
121     @@ -415,6 +421,7 @@ static int unknown_nmi_panic_callback(st
122     return 0;
123     }
124    
125     +#ifndef CONFIG_XEN
126     /*
127     * proc handler for /proc/sys/kernel/nmi
128     */
129     @@ -449,6 +456,7 @@ int proc_nmi_enabled(struct ctl_table *t
130     }
131     return 0;
132     }
133     +#endif
134    
135     #endif
136    
137     @@ -461,6 +469,7 @@ int do_nmi_callback(struct pt_regs *regs
138     return 0;
139     }
140    
141     +#ifndef CONFIG_XEN
142     void __trigger_all_cpu_backtrace(void)
143     {
144     int i;
145     @@ -476,3 +485,4 @@ void __trigger_all_cpu_backtrace(void)
146    
147     EXPORT_SYMBOL(nmi_active);
148     EXPORT_SYMBOL(nmi_watchdog);
149     +#endif
150     Index: head-2008-03-06/arch/x86/kernel/traps_32-xen.c
151     ===================================================================
152     --- head-2008-03-06.orig/arch/x86/kernel/traps_32-xen.c 2008-03-06 10:52:48.000000000 +0100
153     +++ head-2008-03-06/arch/x86/kernel/traps_32-xen.c 2008-03-06 10:52:57.000000000 +0100
154     @@ -806,12 +806,14 @@ static __kprobes void default_do_nmi(str
155     == NOTIFY_STOP)
156     return;
157     #ifdef CONFIG_X86_LOCAL_APIC
158     +#ifndef CONFIG_XEN
159     /*
160     * Ok, so this is none of the documented NMI sources,
161     * so it must be the NMI watchdog.
162     */
163     if (nmi_watchdog_tick(regs, reason))
164     return;
165     +#endif
166     if (!do_nmi_callback(regs, smp_processor_id()))
167     #endif
168     unknown_nmi_error(reason, regs);
169     Index: head-2008-03-06/arch/x86/kernel/traps_64-xen.c
170     ===================================================================
171     --- head-2008-03-06.orig/arch/x86/kernel/traps_64-xen.c 2008-03-06 10:52:39.000000000 +0100
172     +++ head-2008-03-06/arch/x86/kernel/traps_64-xen.c 2008-03-06 10:52:57.000000000 +0100
173     @@ -895,7 +895,7 @@ asmlinkage __kprobes void default_do_nmi
174     if (notify_die(DIE_NMI_IPI, "nmi_ipi", regs, reason, 2, SIGINT)
175     == NOTIFY_STOP)
176     return;
177     -#ifdef CONFIG_X86_LOCAL_APIC
178     +#if defined(CONFIG_X86_LOCAL_APIC) && !defined(CONFIG_XEN)
179     /*
180     * Ok, so this is none of the documented NMI sources,
181     * so it must be the NMI watchdog.
182     Index: head-2008-03-06/include/asm-x86/irq_32.h
183     ===================================================================
184     --- head-2008-03-06.orig/include/asm-x86/irq_32.h 2008-01-24 23:58:37.000000000 +0100
185     +++ head-2008-03-06/include/asm-x86/irq_32.h 2008-03-06 10:52:57.000000000 +0100
186     @@ -20,7 +20,7 @@ static __inline__ int irq_canonicalize(i
187     return ((irq == 2) ? 9 : irq);
188     }
189    
190     -#ifdef CONFIG_X86_LOCAL_APIC
191     +#if defined(CONFIG_X86_LOCAL_APIC) && !defined(CONFIG_XEN)
192     # define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */
193     #endif
194    
195     Index: head-2008-03-06/include/asm-x86/nmi_32.h
196     ===================================================================
197     --- head-2008-03-06.orig/include/asm-x86/nmi_32.h 2008-03-05 16:14:58.000000000 +0100
198     +++ head-2008-03-06/include/asm-x86/nmi_32.h 2008-03-06 10:52:57.000000000 +0100
199     @@ -4,8 +4,6 @@
200     #include <linux/pm.h>
201     #include <asm/irq.h>
202    
203     -#ifdef ARCH_HAS_NMI_WATCHDOG
204     -
205     /**
206     * do_nmi_callback
207     *
208     @@ -14,6 +12,8 @@
209     */
210     int do_nmi_callback(struct pt_regs *regs, int cpu);
211    
212     +#ifdef ARCH_HAS_NMI_WATCHDOG
213     +
214     extern int nmi_watchdog_enabled;
215     extern int avail_to_resrv_perfctr_nmi_bit(unsigned int);
216     extern int avail_to_resrv_perfctr_nmi(unsigned int);
217     @@ -41,13 +41,10 @@ struct ctl_table;
218     struct file;
219     extern int proc_nmi_enabled(struct ctl_table *, int , struct file *,
220     void __user *, size_t *, loff_t *);
221     -extern int unknown_nmi_panic;
222    
223     void __trigger_all_cpu_backtrace(void);
224     #define trigger_all_cpu_backtrace() __trigger_all_cpu_backtrace()
225    
226     -#endif
227     -
228     void lapic_watchdog_stop(void);
229     int lapic_watchdog_init(unsigned nmi_hz);
230     int lapic_wd_event(unsigned nmi_hz);
231     @@ -55,7 +52,12 @@ unsigned lapic_adjust_nmi_hz(unsigned hz
232     int lapic_watchdog_ok(void);
233     void disable_lapic_nmi_watchdog(void);
234     void enable_lapic_nmi_watchdog(void);
235     +
236     +#endif
237     +
238     void stop_nmi(void);
239     void restart_nmi(void);
240    
241     +extern int unknown_nmi_panic;
242     +
243     #endif /* ASM_NMI_H */
244     Index: head-2008-03-06/include/asm-x86/nmi_64.h
245     ===================================================================
246     --- head-2008-03-06.orig/include/asm-x86/nmi_64.h 2008-03-05 16:14:58.000000000 +0100
247     +++ head-2008-03-06/include/asm-x86/nmi_64.h 2008-03-06 10:52:57.000000000 +0100
248     @@ -39,6 +39,9 @@ extern void die_nmi(char *str, struct pt
249     #define get_nmi_reason() inb(0x61)
250    
251     extern int unknown_nmi_panic;
252     +
253     +#ifndef CONFIG_XEN
254     +
255     extern int nmi_watchdog_enabled;
256    
257     extern int check_nmi_watchdog(void);
258     @@ -84,6 +87,9 @@ unsigned lapic_adjust_nmi_hz(unsigned hz
259     int lapic_watchdog_ok(void);
260     void disable_lapic_nmi_watchdog(void);
261     void enable_lapic_nmi_watchdog(void);
262     +
263     +#endif
264     +
265     void stop_nmi(void);
266     void restart_nmi(void);
267    
268     Index: head-2008-03-06/include/asm-x86/mach-xen/asm/irq_64.h
269     ===================================================================
270     --- head-2008-03-06.orig/include/asm-x86/mach-xen/asm/irq_64.h 2007-06-12 13:14:13.000000000 +0200
271     +++ head-2008-03-06/include/asm-x86/mach-xen/asm/irq_64.h 2008-03-06 10:52:57.000000000 +0100
272     @@ -20,7 +20,7 @@ static __inline__ int irq_canonicalize(i
273     return ((irq == 2) ? 9 : irq);
274     }
275    
276     -#ifdef CONFIG_X86_LOCAL_APIC
277     +#ifndef CONFIG_XEN
278     #define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */
279     #endif
280    
281     Index: head-2008-03-06/include/asm-x86/mach-xen/setup_arch_post.h
282     ===================================================================
283     --- head-2008-03-06.orig/include/asm-x86/mach-xen/setup_arch_post.h 2007-06-12 13:14:13.000000000 +0200
284     +++ head-2008-03-06/include/asm-x86/mach-xen/setup_arch_post.h 2008-03-06 10:52:57.000000000 +0100
285     @@ -27,12 +27,10 @@ static void __init machine_specific_arch
286     .type = CALLBACKTYPE_syscall,
287     .address = (unsigned long)system_call,
288     };
289     -#ifdef CONFIG_X86_LOCAL_APIC
290     static struct callback_register __initdata nmi_cb = {
291     .type = CALLBACKTYPE_nmi,
292     .address = (unsigned long)nmi,
293     };
294     -#endif
295    
296     ret = HYPERVISOR_callback_op(CALLBACKOP_register, &event);
297     if (ret == 0)
298     @@ -48,7 +46,6 @@ static void __init machine_specific_arch
299     #endif
300     BUG_ON(ret);
301    
302     -#ifdef CONFIG_X86_LOCAL_APIC
303     ret = HYPERVISOR_callback_op(CALLBACKOP_register, &nmi_cb);
304     #if CONFIG_XEN_COMPAT <= 0x030002
305     if (ret == -ENOSYS) {
306     @@ -59,5 +56,4 @@ static void __init machine_specific_arch
307     HYPERVISOR_nmi_op(XENNMI_register_callback, &cb);
308     }
309     #endif
310     -#endif
311     }
312     Index: head-2008-03-06/kernel/sysctl.c
313     ===================================================================
314     --- head-2008-03-06.orig/kernel/sysctl.c 2008-03-06 09:51:06.000000000 +0100
315     +++ head-2008-03-06/kernel/sysctl.c 2008-03-06 10:52:57.000000000 +0100
316     @@ -672,6 +672,7 @@ static struct ctl_table kern_table[] = {
317     .mode = 0644,
318     .proc_handler = &proc_dointvec,
319     },
320     +#ifndef CONFIG_XEN
321     {
322     .procname = "nmi_watchdog",
323     .data = &nmi_watchdog_enabled,
324     @@ -680,6 +681,7 @@ static struct ctl_table kern_table[] = {
325     .proc_handler = &proc_nmi_enabled,
326     },
327     #endif
328     +#endif
329     #if defined(CONFIG_X86)
330     {
331     .ctl_name = KERN_PANIC_ON_NMI,