For KT133/KX133 (VT8363 etc) one has to put IO port read instruction ("inb") from south the bridge 82C686. This is done just before the CPU hlt instruction in the idle loop. The kernel code of this part in FreeBSD is in /usr/src/sys/i386/i386/swtch.s a patch is something like ------------------------------------------------------------------ --- swtch.s Sat Dec 8 09:04:14 2001 +++ swtch.s.pcu2 Wed Jul 10 02:29:09 2002 @@ -249,6 +249,8 @@ call _vm_page_zero_idle testl %eax, %eax jnz idle_loop + movl $0xE414, %edx + inb %dx, %al call *_hlt_vector /* wait for interrupt */ jmp idle_loop ------------------------------------------------------------------ here 0xE414 is a port of the 686 south bridge, and means putting the CPU into Level 2. The address 0xE400 is a base address given by the south bridge depending on each motherboard, and the offset is always 0x14. This address, 0xE414, of 686 south birdge can be obtained by running "fvcool" with -v (verbose) option for each motherboard as something like this: # fvcool -v # VIA KT133/A/KX133 found. # Change Reg0x52 0xEB --> 0xEB # VT82C686/A/B(ACPI) found. # PLVL_2 Reg Address:0xE414 ^^^^^^ You have to replace the address of your motherboard in the example above.