cc586f1655
AMD C1E is a BIOS controlled C3 state. Certain processors families may cut off TSC and the lapic timer when it is in a deep C state, including C1E state, thus the cpu can't be waken up and system will hang. This patch firstly adds the support of idle selection during boot. Then it implements amdc1e_noarat_idle() routine which checks the MSR which contains the C1eOnCmpHalt (bit 28) and SmiOnCmpHalt (bit 27) before executing the halt instruction, then clear them once set. However intel C1E doesn't has such problem. AMD C1E is a BIOS controlled C3 state. The difference between C1E and C3 is that transition into C1E is not initiated by the operating system. System will enter C1E state automatically when both cores enters C1 state. As for intel C1E, it means "reduce CPU voltage before entering corresponding Cx-state". This patch may fix #8111, #3999, #7562, #7940 and #8060 Copied from the description of #3999: >but for some reason I hit the power button instead of the reset one. And >the boot continued!! The reason is CPUs are waken up once power button is hit. Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com> |
||
---|---|---|
.. | ||
apic.h | ||
apm.h | ||
arch_acpi.h | ||
arch_cpu.h | ||
arch_debug.h | ||
arch_hpet.h | ||
arch_int.h | ||
arch_kernel_args.h | ||
arch_kernel.h | ||
arch_smp.h | ||
arch_system_info.h | ||
arch_thread_types.h | ||
arch_thread.h | ||
arch_user_debugger.h | ||
arch_vm_translation_map.h | ||
arch_vm_types.h | ||
arch_vm.h | ||
bios.h | ||
descriptors.h | ||
ioapic.h | ||
msi.h | ||
pic.h | ||
selector.h | ||
smp_priv.h | ||
timer.h | ||
types.h | ||
vesa.h | ||
vm86.h |