Re: [PATCH v7 2/5] KVM: x86: Virtualize CR3.LAM_{U48,U57}

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2023-04-26 at 18:52 +0800, Binbin Wu wrote:
> 
> On 4/26/2023 4:43 PM, Huang, Kai wrote:
> > On Wed, 2023-04-26 at 11:05 +0800, Gao, Chao wrote:
> > > On Wed, Apr 26, 2023 at 06:48:21AM +0800, Huang, Kai wrote:
> > > > ... when EPT is on, as you mentioned guest can update CR3 w/o causing VMEXIT to
> > > > KVM.
> > > > 
> > > > Is there any global enabling bit in any of CR to turn on/off LAM globally?  It
> > > > seems there isn't because AFAICT the bits in CR4 are used to control super mode
> > > > linear address but not LAM in global?
> > > Right.
> > > 
> > > > So if it is true, then it appears hardware depends on CPUID purely to decide
> > > > whether to perform LAM or not.
> > > > 
> > > > Which means, IIRC, when EPT is on, if we don't expose LAM to the guest on the
> > > > hardware that supports LAM, I think guest can still enable LAM in CR3 w/o
> > > > causing any trouble (because the hardware actually supports this feature)?
> > > Yes. But I think it is a non-issue ...
> > > 
> > > > If it's true, it seems we should trap CR3 (at least loading) when hardware
> > > > supports LAM but it's not exposed to the guest, so that KVM can correctly reject
> > > > any LAM control bits when guest illegally does so?
> > > > 
> > > Other features which need no explicit enablement (like AVX and other
> > > new instructions) have the same problem.
> > OK.
> > 
> > > The impact is some guests can use features which they are not supposed
> > > to use. Then they might be broken after migration or kvm's instruction
> > > emulation. But they put themselves at stake, KVM shouldn't be blamed.
> > > 
> > > The downside of intercepting CR3 is the performance impact on existing
> > > VMs (all with old CPU models and thus all have no LAM). If they are
> > > migrated to LAM-capable parts in the future, they will suffer
> > > performance drop even though they are good tenents (i.e., won't try to
> > > use LAM).
> > > 
> > > IMO, the value of preventing some guests from setting LAM_U48/U57 in CR3
> > > when EPT=on cannot outweigh the performance impact. So, I vote to
> > > document in changelog or comments that:
> > > A guest can enable LAM for userspace pointers when EPT=on even if LAM
> > > isn't exposed to it. KVM doens't prevent this out of performance
> > > consideration
> > Yeah performance impact is the concern.  I agree we can just call out this in
> > changelog and/or comments.  Just want to make sure this is mentioned/discussed.
> > 
> > My main concern is, as (any) VMEXIT saves guest's CR3 to VMCS's GUEST_CR3, KVM
> > may see GUEST_CR3 containing invalid control bits (because KVM believes the
> > guest doesn't support those feature bits), and if KVM code carelessly uses
> > WARN() around those code, a malicious guest may be able to attack host, which
> > means we need to pay more attention to code review around GUEST_CR3 in the
> > future.
> 
> How about do guest CR3 LAM bits check based on the capability of 
> physical processor instead of vCPU?
> That is KVM doesn't prevent guest from setting CR3 LAM bits if the 
> processor supports LAM.
> > 
> 

Doesn't seem to have any benefit as this looks like another hack (which also
breaks the rule of virtualization) in order to (try to) fix a virutalization
hole.





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux