Am 10.01.2012 10:01, schrieb Gleb Natapov: > On Mon, Jan 09, 2012 at 09:10:10PM +0100, Kevin Wolf wrote: >> * This works with VMX, but with SVM I have an additional problem: When >> trying to exit VM86 (usually by an exception) through a task gate in >> the IDT, the code runs into the reason = TASK_SWITCH_CALL path. I >> searched a bit in the documentation, but didn't find any obvious way >> to fix this. >> > Hmm, so exit_int_info is invalid during task switch exit even though > task switch was caused by an exception. I wonder is this the case when > vcpu is not in vm86 mode too? No idea, I would have to try it out. > For vm86 we can change: > > else > reason = TASK_SWITCH_CALL; > > to > else if (vcpu in vm86 mode) > reason = TASK_SWITCH_GATE; > else > reason = TASK_SWITCH_CALL; > > IIRC you can't change tasks by call in vm86 mode. Didn't check it in the manual, but you'll have a hard time accessing a protected mode segment in VM86, so I guess you're right. And in the VM86 branch we can probably fake the rest of the interrupt information so that we can pass the checks in the emulator (basically saying "not a software interrupt" should be enough). Kevin -- 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