Messages in this thread Patch in this message | | | From | Baoquan He <> | Subject | [PATCH v2 2/2] x86/apic: Set up through-local-APIC on boot CPU's LINT0 if 'noapic' specified | Date | Thu, 25 Jan 2018 22:11:34 +0800 |
| |
Kdump kernel will become very slow if 'noapic' is specified. Normal kernel won't.
In normal kernel the legacy irq mode is enabled in BIOS. If it is virtual virtual wire mode, the local-APIC has been enabled and set as through-local-APIC. Though specifying 'noapic' in normal kernel it still have the virtual wire mode working. In kdump kernel, local-APIC is disabled in crashed kernel before jump to kdump kernel since commit 522e664644 ("x86/apic: Disable I/O APIC before shutdown of the local APIC"). So we need set up through-local-APIC on boot CPU explicitly in setup_local_APIC() if 'noapic' specified.
Do it now.
Signed-off-by: Baoquan He <bhe@redhat.com> --- arch/x86/kernel/apic/apic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index 25ddf02598d2..3fc259b4dd2d 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -1570,7 +1570,7 @@ void setup_local_APIC(void) * TODO: set up through-local-APIC from through-I/O-APIC? --macro */ value = apic_read(APIC_LVT0) & APIC_LVT_MASKED; - if (!cpu && (pic_mode || !value)) { + if (!cpu && (pic_mode || !value || skip_ioapic_setup)) { value = APIC_DM_EXTINT; apic_printk(APIC_VERBOSE, "enabled ExtINT on CPU#%d\n", cpu); } else { -- 2.13.6
| |