From: Mathieu Desnoyers <compudj@krystal.dyndns.org>
To: Andi Kleen <ak@suse.de>
Cc: jeremy@goop.org, patches@x86-64.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] [3/11] x86: Stop MCEs and NMIs during code patching
Date: Fri, 20 Jul 2007 12:03:47 -0400 [thread overview]
Message-ID: <20070720160347.GB1960@Krystal> (raw)
In-Reply-To: <20070720153247.75CAD14E7C@wotan.suse.de>
* Andi Kleen (ak@suse.de) wrote:
> Index: linux/arch/x86_64/kernel/nmi.c
> ===================================================================
> --- linux.orig/arch/x86_64/kernel/nmi.c
> +++ linux/arch/x86_64/kernel/nmi.c
> @@ -384,11 +384,14 @@ int __kprobes nmi_watchdog_tick(struct p
> return rc;
> }
>
> +static unsigned ignore_nmis;
> +
> asmlinkage __kprobes void do_nmi(struct pt_regs * regs, long error_code)
> {
> nmi_enter();
> add_pda(__nmi_count,1);
> - default_do_nmi(regs);
> + if (!ignore_nmis)
> + default_do_nmi(regs);
> nmi_exit();
> }
>
> @@ -401,6 +404,18 @@ int do_nmi_callback(struct pt_regs * reg
> return 0;
> }
>
> +void stop_nmi(void)
> +{
> + ignore_nmis++;
> + acpi_nmi_disable();
> +}
I would do:
acpi_nmi_disable();
ignore_nmis++;
Instead, so we minimize the chances to have to drop a do_nmi.
> +
> +void restart_nmi(void)
> +{
> + ignore_nmis--;
> + acpi_nmi_enable();
> +}
> +
> #ifdef CONFIG_SYSCTL
>
...
> #endif /* ASM_NMI_H */
> Index: linux/arch/i386/kernel/traps.c
> ===================================================================
> --- linux.orig/arch/i386/kernel/traps.c
> +++ linux/arch/i386/kernel/traps.c
> @@ -774,6 +774,8 @@ static __kprobes void default_do_nmi(str
> reassert_nmi();
> }
>
> +static int ignore_nmis;
> +
> fastcall __kprobes void do_nmi(struct pt_regs * regs, long error_code)
> {
> int cpu;
> @@ -784,11 +786,24 @@ fastcall __kprobes void do_nmi(struct pt
>
> ++nmi_count(cpu);
>
> - default_do_nmi(regs);
> + if (!ignore_nmis)
> + default_do_nmi(regs);
>
> nmi_exit();
> }
>
> +void stop_nmi(void)
> +{
> + ignore_nmis++;
> + acpi_nmi_disable();
> +}
> +
Same here, I would swap the two.
> +void restart_nmi(void)
> +{
> + ignore_nmis--;
> + acpi_nmi_enable();
> +}
> +
Besides that, it looks good.
Mathieu
--
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
next prev parent reply other threads:[~2007-07-20 16:04 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-20 15:32 [PATCH] [0/11] Some more x86 patches for review Andi Kleen
2007-07-20 15:32 ` [PATCH] [1/11] i386: Reserve the right performance counter for the Intel PerfMon NMI watchdog Andi Kleen
2007-07-20 15:32 ` [PATCH] [2/11] x86: Fix alternatives and kprobes to remap write-protected kernel text Andi Kleen
2007-07-20 15:59 ` Mathieu Desnoyers
2007-07-23 14:46 ` Mathieu Desnoyers
2007-07-23 15:01 ` Andi Kleen
2007-07-23 15:25 ` Mathieu Desnoyers
2007-07-24 6:06 ` Rusty Russell
2007-07-24 13:57 ` Mathieu Desnoyers
2007-07-24 15:17 ` Jeremy Fitzhardinge
2007-07-24 15:20 ` Mathieu Desnoyers
2007-07-20 15:32 ` [PATCH] [3/11] x86: Stop MCEs and NMIs during code patching Andi Kleen
2007-07-20 15:45 ` Jeremy Fitzhardinge
2007-07-20 16:03 ` Mathieu Desnoyers [this message]
2007-07-20 15:32 ` [PATCH] [4/11] x86_64: Set K8 CPUID flag for K8/Fam10h/Fam11h Andi Kleen
2007-07-20 15:32 ` [PATCH] [5/11] x86: Unify alternative nop handling between i386 and x86-64 Andi Kleen
2007-07-20 15:32 ` [PATCH] [6/11] i386: Tune AMD Fam10h/11h like K8 Andi Kleen
2007-07-20 15:32 ` [PATCH] [7/11] i386: Do not include other cpus' interrupt 0 in nmi_watchdog Andi Kleen
2007-07-20 15:32 ` [PATCH] [8/11] x86_64: x86_64 - Use non locked version for local_cmpxchg() Andi Kleen
2007-07-20 15:32 ` [PATCH] [9/11] x86: Replace NSC/Cyrix specific chipset access macros by inlined functions Andi Kleen
2007-07-21 12:00 ` Alexey Dobriyan
2007-07-21 12:04 ` Andi Kleen
2007-07-22 10:45 ` Juergen Beisert
2007-07-20 15:32 ` [PATCH] [10/11] i386: Handle P6s without performance counters in nmi watchdog Andi Kleen
2007-07-20 15:32 ` [PATCH] [11/11] i386: Use patchable lock prefix in set_64bit Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070720160347.GB1960@Krystal \
--to=compudj@krystal.dyndns.org \
--cc=ak@suse.de \
--cc=jeremy@goop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@x86-64.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.