I tried to add some debug output to cpu_reset_real() code: printf("cpu_reset_real(): before keyboard reset\n"); outb(IO_KBD + 4, 0xFE); printf("cpu_reset_real(): after keyboard reset\n"); The last two lines I see on the screen when I try to reboot are: cpu_reset_real(): before keyboard reset c So the computer is halted but doesn't go to reboot.