lkml.org 
[lkml]   [2012]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 1/2] KVM: Exception during emulation decode should propagate
(2012/01/12 18:07), Nadav Amit wrote:
>
> On Jan 12, 2012, at 2:26 AM, Takuya Yoshikawa wrote:
>
>> (2012/01/12 7:11), Takuya Yoshikawa wrote:
>>> On Wed, 11 Jan 2012 18:53:30 +0200
>>> Nadav Amit<namit@cs.technion.ac.il> wrote:
>>>
>>>> An exception might occur during decode (e.g., #PF during fetch).
>>>> Currently, the exception is ignored and emulation is performed.
>>
>> Note that the decode/emulation will not be continued in such a case.
>>
>> insn_fetch() is a bit tricky macro and it contains "goto done" to outside.
>> So if an error happens during fetching the instruction, x86_decode_insn()
>> will handle the X86EMUL_* fault value and returns FAIL immediately.
>
> You got a point. Yet, a problem still exists.
> I now notice I was originally working on previous version (3.0.0)
> where the return-code of x86_decode_insn is handled differently.
> Nonetheless, I think the current implementation might report emulation
> error in such a scenario (instead of triggering #PF/#GP in the guest).

It's me who did that fix.

>
>>>
>>> When I cleaned up insn_fetch(), I thought that fetching the instruction
>>> which is being executed by the guest cannot cause #PF.
>>>
>>> The possibility that a meaningless userspace might similtaneously unmap
>>> the page, noted by Avi IIRC, was ignored intentionally, so we just fail
>>> in such a case.
>>>
>>> Did you see any real problem?
>
> Well, I run some research project for which I emulate instructions quite
> often. I do see a real problem with Linux 3.0.0. Please note AFAIK #GP
> might occur as well during instruction fetch. I don't think failing is the
> right behavior in such case - there is no real reason to fail.
>
> Please tell me whether you are OK with KVM failing in such a scenario.
> If not - I'll send an updated patch (in which x86_decode_insn returns
> EMULATION_OK when rc == X86EMUL_PROPAGATE_FAULT).

You need comments from maintainers.

Takuya


\
 
 \ /
  Last update: 2012-01-12 10:15    [W:0.040 / U:0.712 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site