haiku/headers/private/kernel/arch/x86
Yongcong Du cc586f1655 x86: AMD C1E with no ARAT(Always Running APIC Timer) idle support
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>
2012-04-14 18:18:29 +02:00
..
apic.h * When initializing MSI support, don't assume a single 24 entry IO-APIC. Instead 2011-05-11 18:05:05 +00:00
apm.h * Introduced new header directory headers/private/system which is supposed 2008-05-14 03:55:16 +00:00
arch_acpi.h * Add validation of the RSDP checksums. 2011-06-12 22:01:43 +00:00
arch_cpu.h x86: AMD C1E with no ARAT(Always Running APIC Timer) idle support 2012-04-14 18:18:29 +02:00
arch_debug.h * Changed arch_debug_save_registers() to take an arch-specific structure 2010-03-18 17:20:06 +00:00
arch_hpet.h Some big changes, still not working on my laptop, since hpet interrupts 2009-09-29 08:36:36 +00:00
arch_int.h Quick build fix for the FreeBSD compatibility layer. Maybe the definition should 2011-05-11 01:30:55 +00:00
arch_kernel_args.h SMP: remove the tracking of apic id -> cpu id. Don't pass between bootloader and kernel. 2010-06-12 01:01:54 +00:00
arch_kernel.h * For each userland team the kernel creates an area in the userland 2008-05-11 16:25:35 +00:00
arch_smp.h Seperate the generic (local) APIC stuff into it's own file and use it from the 2010-04-12 12:56:13 +00:00
arch_system_info.h pulled over some stuff from newos: 2007-02-05 01:46:28 +00:00
arch_thread_types.h Merged branch haiku/branches/developer/bonefish/optimization revision 2008-01-11 00:36:44 +00:00
arch_thread.h Fix virtual 8086 mode to properly account for TLS. 2011-11-25 16:10:19 +01:00
arch_user_debugger.h Merged the signals branch into trunk, with these changes: 2011-01-10 21:54:38 +00:00
arch_vm_translation_map.h * Removed i386_translation_map_get_pgdir() and adjusted the one place where it 2010-06-08 00:20:34 +00:00
arch_vm_types.h The short story: we now have MTRR support on Intel and AMD CPUs (the latter 2005-12-13 16:34:29 +00:00
arch_vm.h * vm_page::offset is now called cache_offset and is now an uint32 instead of off_t; 2005-12-21 12:38:31 +00:00
bios.h Got inspired by mmu_man's dmidecode release and added a simple identification 2004-11-29 20:42:04 +00:00
descriptors.h Implemented first basic APM driver. Only tested with QEMU so far, that's why 2006-01-28 18:11:20 +00:00
ioapic.h * Don't map the IO-APIC within the bootloader. We don't need it to set up SMP 2011-05-13 16:31:31 +00:00
msi.h * Add code to allocate and free interrupt vectors for message signaled 2010-04-13 14:46:09 +00:00
pic.h * Implement interrupt source overrides. We install a relay interrupt handler 2011-05-16 12:57:40 +00:00
selector.h Moved <types.h> to <sys/types.h>. 2002-09-23 02:36:51 +00:00
smp_priv.h Add volatile keyword to apic memory access, cleanup, add timeout to arch_smp_send_ici. 2007-02-25 23:32:21 +00:00
timer.h Patch by Dustin Howett which 'modularizes' timers. The best timer is 2008-07-05 20:40:06 +00:00
types.h Removed execute property that was set accidently (since CVS days). 2005-03-18 01:50:45 +00:00
vesa.h Removed execute property that was set accidently (since CVS days). 2005-03-18 01:50:45 +00:00
vm86.h Patch by Jan Klötzke with minor changes by myself: 2008-05-28 10:48:01 +00:00