• Yong Wang's avatar
    x86: Under BIOS control, restore AP's APIC_LVTTHMR to the BSP value · 21fc7b8d
    Yong Wang authored
    Upstream commit a2202aa2.
    
    On platforms where bios handles the thermal monitor interrupt,
    APIC_LVTTHMR on each logical CPU is programmed to generate a SMI and OS
    can't touch it.
    
    Unfortunately AP bringup sequence using INIT-SIPI-SIPI clear all
    the LVT entries except the mask bit. Essentially this results in
    all LVT entries including the thermal monitoring interrupt set to masked
    (clearing the bios programmed value for APIC_LVTTHMR).
    
    And this leads to kernel take over the thermal monitoring interrupt
    on AP's but not on BSP (leaving the bios programmed value only on BSP).
    
    As a result of this, we have seen system hangs when the thermal
    monitoring interrupt is generated.
    
    Fix this by reading the initial value of thermal LVT entry on BSP
    and if bios has taken over the control, then program the same value
    on all AP's and leave the thermal monitoring interrupt control
    on all the logical cpu's to the bios.
    Signed-off-by: default avatarYong Wang <yong.y.wang@intel.com>
    Reviewed-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
    Cc: Borislav Petkov <borislav.petkov@amd.com>
    Cc: Arjan van de Ven <arjan@infradead.org>
    LKML-Reference: <20091110013824.GA24940@ywang-moblin2.bj.intel.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    21fc7b8d
setup.c 25.1 KB