lkml.org 
[lkml]   [2019]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:x86/apic] x86/apic: Soft disable APIC before initializing it
    Commit-ID:  2640da4cccf5cc613bf26f0998b9e340f4b5f69c
    Gitweb: https://git.kernel.org/tip/2640da4cccf5cc613bf26f0998b9e340f4b5f69c
    Author: Thomas Gleixner <tglx@linutronix.de>
    AuthorDate: Mon, 22 Jul 2019 20:47:08 +0200
    Committer: Thomas Gleixner <tglx@linutronix.de>
    CommitDate: Thu, 25 Jul 2019 16:11:56 +0200

    x86/apic: Soft disable APIC before initializing it

    If the APIC was already enabled on entry of setup_local_APIC() then
    disabling it soft via the SPIV register makes a lot of sense.

    That masks all LVT entries and brings it into a well defined state.

    Otherwise previously enabled LVTs which are not touched in the setup
    function stay unmasked and might surprise the just booting kernel.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20190722105219.068290579@linutronix.de

    ---
    arch/x86/kernel/apic/apic.c | 8 ++++++++
    1 file changed, 8 insertions(+)

    diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
    index fa0846d4e000..621992de49ee 100644
    --- a/arch/x86/kernel/apic/apic.c
    +++ b/arch/x86/kernel/apic/apic.c
    @@ -1522,6 +1522,14 @@ static void setup_local_APIC(void)
    return;
    }

    + /*
    + * If this comes from kexec/kcrash the APIC might be enabled in
    + * SPIV. Soft disable it before doing further initialization.
    + */
    + value = apic_read(APIC_SPIV);
    + value &= ~APIC_SPIV_APIC_ENABLED;
    + apic_write(APIC_SPIV, value);
    +
    #ifdef CONFIG_X86_32
    /* Pound the ESR really hard over the head with a big hammer - mbligh */
    if (lapic_is_integrated() && apic->disable_esr) {
    \
     
     \ /
      Last update: 2019-07-25 16:22    [W:4.661 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site