Hi, I just have a look at this thread. I am wondering why we don't use existing is_kdump_kernel() directly to disable external NMI if it's in kdump kernel. Then no need to introduce another boot option "noextnmi" which is used only for kdump kernel. Thanks Baoquan On 09/25/15 at 08:28pm, Hidehiro Kawai wrote: > This patch introduces new boot option "noextnmi" which disables > external NMI. This option is useful for the dump capture kernel > so that an HA application or administrator wouldn't mistakenly > shoot down the kernel by NMI. > > Currently, only x86 supports this option. > > Signed-off-by: Hidehiro Kawai <hidehiro.kawai.ez@xxxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> > Cc: Jonathan Corbet <corbet@xxxxxxx> > --- > Documentation/kernel-parameters.txt | 4 ++++ > arch/x86/kernel/apic/apic.c | 17 ++++++++++++++++- > 2 files changed, 20 insertions(+), 1 deletion(-) > > diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt > index 22a4b68..8bcaccd 100644 > --- a/Documentation/kernel-parameters.txt > +++ b/Documentation/kernel-parameters.txt > @@ -2379,6 +2379,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted. > noexec=on: enable non-executable mappings (default) > noexec=off: disable non-executable mappings > > + noextnmi [X86] > + Mask external NMI. This option is useful for a > + dump capture kernel to be shot down by NMI. > + > nosmap [X86] > Disable SMAP (Supervisor Mode Access Prevention) > even if it is supported by processor. > diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c > index 24e94ce..fd47128 100644 > --- a/arch/x86/kernel/apic/apic.c > +++ b/arch/x86/kernel/apic/apic.c > @@ -82,6 +82,12 @@ > static unsigned int disabled_cpu_apicid __read_mostly = BAD_APICID; > > /* > + * Don't enable external NMI via LINT1 on BSP. This is useful for > + * the dump capture kernel. > + */ > +static bool apic_noextnmi; > + > +/* > * Map cpu index to physical APIC ID > */ > DEFINE_EARLY_PER_CPU_READ_MOSTLY(u16, x86_cpu_to_apicid, BAD_APICID); > @@ -1161,6 +1167,8 @@ void __init init_bsp_APIC(void) > value = APIC_DM_NMI; > if (!lapic_is_integrated()) /* 82489DX */ > value |= APIC_LVT_LEVEL_TRIGGER; > + if (apic_noextnmi) > + value |= APIC_LVT_MASKED; > apic_write(APIC_LVT1, value); > } > > @@ -1380,7 +1388,7 @@ void setup_local_APIC(void) > /* > * only the BP should see the LINT1 NMI signal, obviously. > */ > - if (!cpu) > + if (!cpu && !apic_noextnmi) > value = APIC_DM_NMI; > else > value = APIC_DM_NMI | APIC_LVT_MASKED; > @@ -2548,3 +2556,10 @@ static int __init apic_set_disabled_cpu_apicid(char *arg) > return 0; > } > early_param("disable_cpu_apicid", apic_set_disabled_cpu_apicid); > + > +static int __init apic_set_noextnmi(char *arg) > +{ > + apic_noextnmi = true; > + return 0; > +} > +early_param("noextnmi", apic_set_noextnmi); > > > > _______________________________________________ > kexec mailing list > kexec@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/kexec -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html