From: Robert Hoo <robert.hu@linux.intel.com>
To: Binbin Wu <binbin.wu@linux.intel.com>,
pbonzini@redhat.com, seanjc@google.com,
kirill.shutemov@linux.intel.com, kvm@vger.kernel.org
Cc: Jingqi Liu <jingqi.liu@intel.com>
Subject: Re: [PATCH v3 6/9] KVM: x86: Untag LAM bits when applicable
Date: Thu, 29 Dec 2022 08:41:41 +0800 [thread overview]
Message-ID: <c210fc0ec7a4ec3508aefa7a6b116ca4d2b197a5.camel@linux.intel.com> (raw)
In-Reply-To: <0bcb1c11-145d-0c45-4e46-a4ed9173e3c8@linux.intel.com>
On Wed, 2022-12-28 at 16:32 +0800, Binbin Wu wrote:
> On 12/9/2022 12:45 PM, Robert Hoo wrote
> > +#ifdef CONFIG_X86_64
> > +/* untag addr for guest, according to vCPU CR3 and CR4 settings */
> > +static inline u64 kvm_untagged_addr(u64 addr, struct kvm_vcpu
> > *vcpu)
> > +{
> > + if (addr >> 63 == 0) {
> > + /* User pointers */
> > + if (kvm_read_cr3(vcpu) & X86_CR3_LAM_U57)
> > + addr = get_canonical(addr, 57);
>
> According to the spec, LAM_U57/LAM_SUP also performs a modified
> canonicality check.
>
> Why the check only be done for LAM_U48, but not for LAM_U57 and
> LAM_SUP
> cases?
>
Doesn't this check for LAM_U57?
And below else if branch checks LAM_U48.
And below outer else if branch checks CR4.LAM_SUP.
>
> > + else if (kvm_read_cr3(vcpu) & X86_CR3_LAM_U48) {
> > + /*
> > + * If guest enabled 5-level paging and LAM_U48,
> > + * bit 47 should be 0, bit 48:56 contains meta
> > data
> > + * although bit 47:56 are valid 5-level address
> > + * bits.
> > + * If LAM_U48 and 4-level paging, bit47 is 0.
> > + */
> > + WARN_ON(addr & _BITUL(47));
> > + addr = get_canonical(addr, 48);
> > + }
> > + } else if (kvm_read_cr4(vcpu) & X86_CR4_LAM_SUP) { /*
> > Supervisor pointers */
> > + if (kvm_read_cr4(vcpu) & X86_CR4_LA57)
> > + addr = get_canonical(addr, 57);
> > + else
> > + addr = get_canonical(addr, 48);
> > + }
> > +
> > + return addr;
> > +}
...
next prev parent reply other threads:[~2022-12-29 0:41 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-09 4:45 [PATCH v3 0/9] Linear Address Masking (LAM) KVM Enabling Robert Hoo
2022-12-09 4:45 ` [PATCH v3 1/9] KVM: x86: Rename cr4_reserved/rsvd_* variables to be more readable Robert Hoo
2022-12-28 3:37 ` Binbin Wu
2022-12-29 1:42 ` Robert Hoo
2023-01-07 0:35 ` Sean Christopherson
2023-01-07 13:30 ` Robert Hoo
2023-01-08 14:18 ` Xiaoyao Li
2023-01-09 3:07 ` Robert Hoo
2022-12-09 4:45 ` [PATCH v3 2/9] KVM: x86: Add CR4.LAM_SUP in guest owned bits Robert Hoo
2023-01-07 0:38 ` Sean Christopherson
2023-01-07 13:32 ` Robert Hoo
2023-01-09 16:29 ` Sean Christopherson
2023-01-10 3:56 ` Robert Hoo
2023-01-11 17:35 ` Sean Christopherson
2022-12-09 4:45 ` [PATCH v3 3/9] KVM: x86: MMU: Rename get_cr3() --> get_pgd() and clear high bits for pgd Robert Hoo
2022-12-19 6:44 ` Yuan Yao
2022-12-20 14:07 ` Robert Hoo
2023-01-07 0:45 ` Sean Christopherson
2023-01-07 13:36 ` Robert Hoo
2022-12-09 4:45 ` [PATCH v3 4/9] KVM: x86: MMU: Commets update Robert Hoo
2022-12-09 4:45 ` [PATCH v3 5/9] KVM: x86: MMU: Integrate LAM bits when build guest CR3 Robert Hoo
2022-12-19 6:53 ` Yuan Yao
2022-12-20 14:07 ` Robert Hoo
2022-12-21 2:12 ` Yuan Yao
2022-12-21 7:50 ` Yu Zhang
2022-12-21 8:55 ` Robert Hoo
2022-12-09 4:45 ` [PATCH v3 6/9] KVM: x86: Untag LAM bits when applicable Robert Hoo
2022-12-19 7:32 ` Yuan Yao
2022-12-20 14:07 ` Robert Hoo
2022-12-19 9:45 ` Yuan Yao
2022-12-20 14:07 ` Robert Hoo
2022-12-21 2:38 ` Yuan Yao
2022-12-21 8:02 ` Yu Zhang
2022-12-21 8:49 ` Robert Hoo
2022-12-21 10:10 ` Yu Zhang
2022-12-21 10:30 ` Yuan Yao
2022-12-21 12:40 ` Yu Zhang
2022-12-22 8:21 ` Yu Zhang
2022-12-23 2:36 ` Yuan Yao
2022-12-23 3:55 ` Robert Hoo
2022-12-21 0:35 ` Yang, Weijiang
2022-12-21 1:38 ` Robert Hoo
2022-12-21 2:55 ` Yuan Yao
2022-12-21 8:22 ` Robert Hoo
2022-12-21 9:35 ` Yuan Yao
2022-12-21 10:22 ` Yu Zhang
2022-12-21 10:33 ` Yuan Yao
2022-12-21 8:14 ` Yu Zhang
2022-12-21 8:37 ` Yu Zhang
2022-12-28 8:32 ` Binbin Wu
2022-12-29 0:41 ` Robert Hoo [this message]
2022-12-09 4:45 ` [PATCH v3 7/9] KVM: x86: When judging setting CR3 valid or not, consider LAM bits Robert Hoo
2022-12-09 4:45 ` [PATCH v3 8/9] KVM: x86: When guest set CR3, handle LAM bits semantics Robert Hoo
2022-12-20 9:10 ` Liu, Jingqi
2022-12-20 14:16 ` Robert Hoo
2022-12-21 8:30 ` Yu Zhang
2022-12-21 12:52 ` Robert Hoo
2022-12-09 4:45 ` [PATCH v3 9/9] KVM: x86: LAM: Expose LAM CPUID to user space VMM Robert Hoo
2022-12-19 6:12 ` [PATCH v3 0/9] Linear Address Masking (LAM) KVM Enabling Robert Hoo
2022-12-19 8:09 ` Yuan Yao
2022-12-20 14:06 ` Robert Hoo
2022-12-20 9:20 ` Liu, Jingqi
2022-12-20 14:19 ` Robert Hoo
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=c210fc0ec7a4ec3508aefa7a6b116ca4d2b197a5.camel@linux.intel.com \
--to=robert.hu@linux.intel.com \
--cc=binbin.wu@linux.intel.com \
--cc=jingqi.liu@intel.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.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.