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.