All of lore.kernel.org
 help / color / mirror / Atom feed
From: Liran Alon <LIRAN.ALON@ORACLE.COM>
To: Paolo Bonzini <pbonzini@redhat.com>,
	rkrcmar@redhat.com, kvm@vger.kernel.org
Cc: idan.brown@ORACLE.COM, Liran Alon <liran.alon@ravellosystems.com>,
	Konrad Rzeszutek Wilk <konrad.wilk@ORACLE.COM>
Subject: Re: [PATCH 2/3] KVM: x86: emulator: Return to user-mode on L1 CPL=0 emulation failure
Date: Mon, 06 Nov 2017 16:08:29 +0200	[thread overview]
Message-ID: <5A006CDD.8020700@ORACLE.COM> (raw)
In-Reply-To: <13d602ff-e5f7-18a1-68e2-8c7b3c81cc54@redhat.com>



On 06/11/17 15:50, Paolo Bonzini wrote:
> On 06/11/2017 14:25, Liran Alon wrote:
>>> What is the caller of x86_emulate_instruction that you are interested
>>> in?  #UD is not affected, because emulation_type has EMULTYPE_TRAP_UD
>>> set and therefore x86_emulate_instruction exits before invoking
>>> handle_emulation_failure.
>>>
>> I think this patch is still correct from a number of reasons:
>>
>> 1) If I understand the code correctly, semantically it doesn't make
>> sense to fill kvm_run struct without exiting to user-mode. Therefore, if
>> emulator filled kvm_run, it makes sense that it needs to return
>> EMULATE_USER_EXIT.
>>
>> 2) EMULTYPE_TRAP_UD only causes the emulator to return EMULATE_FAIL in
>> case emulation fails on instruction decoding. However, consider a case
>> where #UD intercept happens on a valid instruction (such as VMMCALL AMD
>> opcode on physical Intel CPU). In that case, instruction decoding
>> doesn't fail but we could still fail on instruction emulation at
>> x86_emulate_insn(). In this case, EMULTYPE_TRAP_UD flag is not
>> considered anymore and failure will reach handle_emulation_failure().
>
> (1) is true, but (2) more or less answers my question.  So
>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
>
>> 3) We have another KVM commits series (not upstream yet) that adds
>> intercept on #GP which calls the x86 emulator. This is done to allow
>> access to I/O ports even though they aren't allowed via guest's TSS I/O
>> permissions bitmap.
>
> vmport?... :)
Yep. Stay tuned. :)
>
> Paolo
>

  reply	other threads:[~2017-11-06 14:08 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-05 14:21 [PATCH 0/3] KVM: x86: Various emulator fixes Liran Alon
2017-11-05 14:21 ` [PATCH 1/3] KVM: x86: Exit to user-mode on #UD intercept when emulator requires Liran Alon
2017-11-06  9:15   ` Paolo Bonzini
2017-11-05 14:21 ` [PATCH 2/3] KVM: x86: emulator: Return to user-mode on L1 CPL=0 emulation failure Liran Alon
2017-11-06  9:19   ` Paolo Bonzini
2017-11-06 13:25     ` Liran Alon
2017-11-06 13:50       ` Paolo Bonzini
2017-11-06 14:08         ` Liran Alon [this message]
2017-11-06 14:13           ` Paolo Bonzini
2017-11-05 14:21 ` [PATCH 3/3] KVM: x86: Don't re-execute instruction when not passing CR2 value Liran Alon
2017-11-06  9:21   ` Paolo Bonzini
2017-11-06 10:48     ` Liran Alon
  -- strict thread matches above, loose matches on Subject: below --
2017-11-05 14:56 [PATCH 0/3] KVM: x86: Various emulator fixes Liran Alon
2017-11-05 14:56 ` [PATCH 2/3] KVM: x86: emulator: Return to user-mode on L1 CPL=0 emulation failure Liran Alon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5A006CDD.8020700@ORACLE.COM \
    --to=liran.alon@oracle.com \
    --cc=idan.brown@ORACLE.COM \
    --cc=konrad.wilk@ORACLE.COM \
    --cc=kvm@vger.kernel.org \
    --cc=liran.alon@ravellosystems.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.