• C
    x86, ioapic: Don't call disconnect_bsp_APIC if no APIC present · 3f4c3955
    Cyrill Gorcunov 提交于
    Vegard Nossum reported:
    
    [  503.576724] ACPI: Preparing to enter system sleep state S5
    [  503.710857] Disabling non-boot CPUs ...
    [  503.716853] Power down.
    [  503.717770] ------------[ cut here ]------------
    [  503.717770] WARNING: at arch/x86/kernel/apic/apic.c:249 native_apic_write_du)
    [  503.717770] Hardware name: OptiPlex GX100
    [  503.717770] Modules linked in:
    [  503.717770] Pid: 2136, comm: halt Not tainted 2.6.30 #443
    [  503.717770] Call Trace:
    [  503.717770]  [<c154d327>] ? printk+0x18/0x1a
    [  503.717770]  [<c1017358>] ? native_apic_write_dummy+0x38/0x50
    [  503.717770]  [<c10360fc>] warn_slowpath_common+0x6c/0xc0
    [  503.717770]  [<c1017358>] ? native_apic_write_dummy+0x38/0x50
    [  503.717770]  [<c1036165>] warn_slowpath_null+0x15/0x20
    [  503.717770]  [<c1017358>] native_apic_write_dummy+0x38/0x50
    [  503.717770]  [<c1017173>] disconnect_bsp_APIC+0x63/0x100
    [  503.717770]  [<c1019e48>] disable_IO_APIC+0xb8/0xc0
    [  503.717770]  [<c1214231>] ? acpi_power_off+0x0/0x29
    [  503.717770]  [<c1015e55>] native_machine_shutdown+0x65/0x80
    [  503.717770]  [<c1015c36>] native_machine_power_off+0x26/0x30
    [  503.717770]  [<c1015c49>] machine_power_off+0x9/0x10
    [  503.717770]  [<c1046596>] kernel_power_off+0x36/0x40
    [  503.717770]  [<c104680d>] sys_reboot+0xfd/0x1f0
    [  503.717770]  [<c109daa0>] ? perf_swcounter_event+0xb0/0x130
    [  503.717770]  [<c109db7d>] ? perf_counter_task_sched_out+0x5d/0x120
    [  503.717770]  [<c102dfc6>] ? finish_task_switch+0x56/0xd0
    [  503.717770]  [<c154da1e>] ? schedule+0x49e/0xb40
    [  503.717770]  [<c10444b0>] ? sys_kill+0x70/0x160
    [  503.717770]  [<c119d9db>] ? selinux_file_ioctl+0x3b/0x50
    [  503.717770]  [<c10dd443>] ? sys_ioctl+0x63/0x70
    [  503.717770]  [<c1003024>] sysenter_do_call+0x12/0x22
    [  503.717770] ---[ end trace 8157b5d0ed378f15 ]---
    
    |
    | That's including this commit:
    |
    | commit 103428e5
    |Author: Cyrill Gorcunov <gorcunov@openvz.org>
    |Date:   Sun Jun 7 16:48:40 2009 +0400
    |
    |    x86, apic: Fix dummy apic read operation together with broken MP handling
    |
    
    If we have apic disabled we don't even switch to APIC mode and do not
    calling for connect_bsp_APIC. Though on SMP compiled kernel the
    native_machine_shutdown does try to write the apic register anyway.
    
    Fix it with explicit check if we really should touch apic registers.
    Reported-by: NVegard Nossum <vegard.nossum@gmail.com>
    Signed-off-by: NCyrill Gorcunov <gorcunov@openvz.org>
    Cc: Yinghai Lu <yinghai@kernel.org>
    LKML-Reference: <20090617181322.GG10822@lenovo>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    3f4c3955
io_apic.c 99.1 KB