All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brijesh Singh <brijesh.singh@amd.com>
To: Joerg Roedel <joro@8bytes.org>
Cc: <brijesh.singh@amd.com>, <pbonzini@redhat.com>,
	<rkrcmar@redhat.com>, <kvm@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <tglx@linutronix.de>,
	<mingo@redhat.com>, <hpa@zytor.com>, <x86@kernel.org>,
	<Thomas.Lendacky@amd.com>
Subject: Re: [PATCH v2] KVM: x86: Avoid guest page table walk when gpa_available is set
Date: Tue, 30 May 2017 17:09:30 -0500	[thread overview]
Message-ID: <51f8c2c0-44f9-8173-408d-076c7db3c015@amd.com> (raw)
In-Reply-To: <20170530090548.GA2764@8bytes.org>

Hi Jorge,

On 05/30/2017 04:05 AM, Joerg Roedel wrote:
> On Fri, May 19, 2017 at 11:12:29AM -0400, Brijesh Singh wrote:
>> From: Brijesh Singh <brijesh.singh@amd.com>
>>
>> On AMD hardware when a guest causes a NPF which requires emulation,
>> the vcpu->arch.gpa_available flag is set to indicate that cr2 contains
>> a valid GPA.
>>
>> Currently, emulator_read_write_onepage() makes use of gpa_available flag
>> to avoid a guest page walk for a known MMIO regions. Lets not limit
>> the gpa_available optimization to just MMIO region. The patch extends
>> the check to avoid page walk whenever gpa_available flag is set.
>>
>> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
>> ---
>> v1: http://marc.info/?l=kvm&m=149304930814202&w=2
>>
>> Changes in v2:
>>   - move gpa_val setting in pf_interception
>>
>>   arch/x86/include/asm/kvm_host.h |  1 +
>>   arch/x86/kvm/svm.c              |  4 ++++
>>   arch/x86/kvm/x86.c              | 14 +++++++-------
>>   3 files changed, 12 insertions(+), 7 deletions(-)
> 
> I havn't checked in detail, but maybe you have: Does that take nesting
> into account, where we might run on a shadow nested page-table and we
> actually get a nested gpa (which still needs translation) instead of a
> normal gpa?
> 

nesting should not be an issue. all we're doing is avoiding the GVA->GPA
translation for the lowest level guest. The nested case should still use
the original code path and perform the nested page walk. I have verified
the nesting support and it all seem to work just fine. You can find the
original gpa_available patch here [1]

[1] https://git.kernel.org/pub/scm/virt/kvm/kvm.git/commit/?id=0f89b207b04a1a399e19d35293658e3a571da3d7

-Brijesh

  reply	other threads:[~2017-05-30 22:09 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-19 15:12 [PATCH v2] KVM: x86: Avoid guest page table walk when gpa_available is set Brijesh Singh
2017-05-30  9:05 ` Joerg Roedel
2017-05-30 22:09   ` Brijesh Singh [this message]
2017-07-17 21:32 ` Brijesh Singh
2017-07-19 11:19   ` Radim Krčmář
2017-07-19 13:35     ` Brijesh Singh
2017-07-20  7:43       ` Radim Krčmář
2017-08-08 19:24         ` Brijesh Singh
2017-07-27 13:49 ` Paolo Bonzini

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=51f8c2c0-44f9-8173-408d-076c7db3c015@amd.com \
    --to=brijesh.singh@amd.com \
    --cc=Thomas.Lendacky@amd.com \
    --cc=hpa@zytor.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /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.