Il 24/07/2013 08:11, Arthur Chunqi Li ha scritto: > > static int vmx_run() > { > u32 eax; > bool ret; > > vmcs_write(HOST_RSP, get_rsp()); > ret = vmlaunch(); The compiler can still change rsp between here... > while (!ret) { > asm volatile( > "vmx_return:\n\t" ... and here. If you want to write it in C, the only thing that can be after vmlaunch/vmresume is "exit()". Else it has to be asm. Paolo > SAVE_GPR > ); > eax = exit_handler(); > switch (eax) { > case VMX_TEST_VMEXIT: > return 0; > case VMX_TEST_RESUME: > break; > default: > printf("%s : unhandled ret from exit_handler.\n", __func__); > return 1; > } > ret = vmresume(); > } > printf("%s : vmenter failed.\n", __func__); > return 1; > } -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html