Can you dump *env before and after the call to kvm_arch_get_registers?Yes, but it seems they are equal - I used memcmp() to compare them. Is there any other side effect that cpu_synchronize_all_states() may have?
I think I found it.The reason for hang is, because when second call to kvm_arch_get_registers() is skipped, it also skips kvm_get_apic() which updates cpu->apic_state.
-- mg