lkml.org 
[lkml]   [2014]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.4 132/214] x86/apic: Disable I/O APIC before shutdown of the local APIC
    Date
    3.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Fenghua Yu <fenghua.yu@intel.com>

    commit 522e66464467543c0d88d023336eec4df03ad40b upstream.

    In reboot and crash path, when we shut down the local APIC, the I/O APIC is
    still active. This may cause issues because external interrupts
    can still come in and disturb the local APIC during shutdown process.

    To quiet external interrupts, disable I/O APIC before shutdown local APIC.

    Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
    Link: http://lkml.kernel.org/r/1382578212-4677-1-git-send-email-fenghua.yu@intel.com
    [ I suppose the 'issue' is a hang during shutdown. It's a fine change nevertheless. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: Rui Xiang <rui.xiang@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/x86/kernel/crash.c | 2 +-
    arch/x86/kernel/reboot.c | 11 +++++++----
    2 files changed, 8 insertions(+), 5 deletions(-)

    --- a/arch/x86/kernel/crash.c
    +++ b/arch/x86/kernel/crash.c
    @@ -95,10 +95,10 @@ void native_machine_crash_shutdown(struc
    cpu_emergency_vmxoff();
    cpu_emergency_svm_disable();

    - lapic_shutdown();
    #if defined(CONFIG_X86_IO_APIC)
    disable_IO_APIC();
    #endif
    + lapic_shutdown();
    #ifdef CONFIG_HPET_TIMER
    hpet_disable();
    #endif
    --- a/arch/x86/kernel/reboot.c
    +++ b/arch/x86/kernel/reboot.c
    @@ -668,6 +668,13 @@ void native_machine_shutdown(void)

    /* The boot cpu is always logical cpu 0 */
    int reboot_cpu_id = 0;
    +#endif
    +
    +#ifdef CONFIG_X86_IO_APIC
    + disable_IO_APIC();
    +#endif
    +
    +#ifdef CONFIG_SMP

    #ifdef CONFIG_X86_32
    /* See if there has been given a command line override */
    @@ -691,10 +698,6 @@ void native_machine_shutdown(void)

    lapic_shutdown();

    -#ifdef CONFIG_X86_IO_APIC
    - disable_IO_APIC();
    -#endif
    -
    #ifdef CONFIG_HPET_TIMER
    hpet_disable();
    #endif



    \
     
     \ /
      Last update: 2014-06-05 14:21    [W:5.414 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site