All of lore.kernel.org
 help / color / mirror / Atom feed
From: harry harry <hiharryharryharry@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <sean.j.christopherson@intel.com>
Cc: Maxim Levitsky <mlevitsk@redhat.com>,
	qemu-devel@nongnu.org, mathieu.tarral@protonmail.com,
	stefanha@redhat.com, libvir-list@redhat.com, kvm@vger.kernel.org
Subject: Re: Why guest physical addresses are not the same as the corresponding host virtual addresses in QEMU/KVM? Thanks!
Date: Tue, 13 Oct 2020 16:36:25 -0400	[thread overview]
Message-ID: <CA+-xGqOMKRh+_5vYXeLOiGnTMw4L_gUccqdQ+HGSOzuTosp6tw@mail.gmail.com> (raw)
In-Reply-To: <a163c2d8-d8a1-dc03-6230-a2e104e3b039@redhat.com>

Hi Paolo and Sean,

Thanks much for your prompt replies and clear explanations.

On Tue, Oct 13, 2020 at 2:43 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> No, the logic to find the HPA with a given HVA is the same as the
> hardware logic to translate HVA -> HPA.  That is it uses the host
> "regular" page tables, not the nested page tables.
>
> In order to translate GPA to HPA, instead, KVM does not use the nested
> page tables.

I am curious why KVM does not directly use GPAs as HVAs and leverage
nested page tables to translate HVAs (i.e., GPAs) to HPAs? Is that
because 1) the hardware logic of ``GPA -> [extended/nested page
tables] -> HPA[*]'' is different[**] from the hardware logic of ``HVA
-> [host regular page tables] -> HPA''; 2) if 1) is true, it is
natural to reuse Linux's original functionality to translate HVAs to
HPAs through regular page tables.

[*]: Here, the translation means the last step for MMU to translate a
GVA's corresponding GPA to an HPA through the extended/nested page
tables.
[**]: To my knowledge, the hardware logic of ``GPA -> [extended/nested
page tables] -> HPA'' seems to be the same as the hardware logic of
``HVA -> [host regular page tables] -> HPA''. I appreciate it if you
could point out the differences I ignored. Thanks!

Best,
Harry

WARNING: multiple messages have this Message-ID (diff)
From: harry harry <hiharryharryharry@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
	 Sean Christopherson <sean.j.christopherson@intel.com>
Cc: kvm@vger.kernel.org, libvir-list@redhat.com,
	qemu-devel@nongnu.org, Maxim Levitsky <mlevitsk@redhat.com>,
	mathieu.tarral@protonmail.com, stefanha@redhat.com
Subject: Re: Why guest physical addresses are not the same as the corresponding host virtual addresses in QEMU/KVM? Thanks!
Date: Tue, 13 Oct 2020 16:36:25 -0400	[thread overview]
Message-ID: <CA+-xGqOMKRh+_5vYXeLOiGnTMw4L_gUccqdQ+HGSOzuTosp6tw@mail.gmail.com> (raw)
In-Reply-To: <a163c2d8-d8a1-dc03-6230-a2e104e3b039@redhat.com>

Hi Paolo and Sean,

Thanks much for your prompt replies and clear explanations.

On Tue, Oct 13, 2020 at 2:43 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> No, the logic to find the HPA with a given HVA is the same as the
> hardware logic to translate HVA -> HPA.  That is it uses the host
> "regular" page tables, not the nested page tables.
>
> In order to translate GPA to HPA, instead, KVM does not use the nested
> page tables.

I am curious why KVM does not directly use GPAs as HVAs and leverage
nested page tables to translate HVAs (i.e., GPAs) to HPAs? Is that
because 1) the hardware logic of ``GPA -> [extended/nested page
tables] -> HPA[*]'' is different[**] from the hardware logic of ``HVA
-> [host regular page tables] -> HPA''; 2) if 1) is true, it is
natural to reuse Linux's original functionality to translate HVAs to
HPAs through regular page tables.

[*]: Here, the translation means the last step for MMU to translate a
GVA's corresponding GPA to an HPA through the extended/nested page
tables.
[**]: To my knowledge, the hardware logic of ``GPA -> [extended/nested
page tables] -> HPA'' seems to be the same as the hardware logic of
``HVA -> [host regular page tables] -> HPA''. I appreciate it if you
could point out the differences I ignored. Thanks!

Best,
Harry


  reply	other threads:[~2020-10-13 20:36 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-11  5:26 Why guest physical addresses are not the same as the corresponding host virtual addresses in QEMU/KVM? Thanks! harry harry
2020-10-11  5:26 ` harry harry
2020-10-11  7:29 ` Maxim Levitsky
2020-10-11  7:29   ` Maxim Levitsky
2020-10-11 14:11   ` harry harry
2020-10-11 14:11     ` harry harry
2020-10-12 16:54     ` Sean Christopherson
2020-10-12 16:54       ` Sean Christopherson
2020-10-13  4:30       ` harry harry
2020-10-13  4:30         ` harry harry
2020-10-13  4:52         ` Sean Christopherson
2020-10-13  4:52           ` Sean Christopherson
2020-10-13  5:33           ` harry harry
2020-10-13  5:46             ` harry harry
2020-10-13  6:43               ` Paolo Bonzini
2020-10-13  6:43                 ` Paolo Bonzini
2020-10-13 20:36                 ` harry harry [this message]
2020-10-13 20:36                   ` harry harry
2020-10-14  8:27                   ` Paolo Bonzini
2020-10-14  8:27                     ` Paolo Bonzini
2020-10-14  8:29                   ` Maxim Levitsky
2020-10-14  8:29                     ` Maxim Levitsky
2020-10-15  3:45                     ` harry harry
2020-10-15  3:45                       ` harry harry
2020-10-13  7:03             ` Sean Christopherson
2020-10-13  7:03               ` Sean Christopherson
2020-10-13 22:40               ` harry harry
2020-10-13 22:40                 ` harry harry
2020-10-14  8:28                 ` Paolo Bonzini
2020-10-14  8:28                   ` Paolo Bonzini
2020-10-15  3:43                   ` harry harry
2020-10-15  3:43                     ` harry harry
2020-10-13  5:00       ` harry harry
2020-10-13  5:00         ` harry harry

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=CA+-xGqOMKRh+_5vYXeLOiGnTMw4L_gUccqdQ+HGSOzuTosp6tw@mail.gmail.com \
    --to=hiharryharryharry@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=libvir-list@redhat.com \
    --cc=mathieu.tarral@protonmail.com \
    --cc=mlevitsk@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sean.j.christopherson@intel.com \
    --cc=stefanha@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.