Re: [RFC PATCH] emulator: Fix task switch into/out of VM86

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux