lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <10a8868e-eb85-4043-a5ad-96c03d9b0abb@www.fastmail.com>
Date:   Wed, 13 Oct 2021 07:59:26 -0700
From:   "Andy Lutomirski" <luto@...nel.org>
To:     "Paolo Bonzini" <pbonzini@...hat.com>,
        "Liu, Jing2" <jing2.liu@...el.com>,
        "Thomas Gleixner" <tglx@...utronix.de>,
        "Linux Kernel Mailing List" <linux-kernel@...r.kernel.org>
Cc:     "the arch/x86 maintainers" <x86@...nel.org>,
        "Bae, Chang Seok" <chang.seok.bae@...el.com>,
        "Dave Hansen" <dave.hansen@...ux.intel.com>,
        "Arjan van de Ven" <arjan@...ux.intel.com>,
        "kvm list" <kvm@...r.kernel.org>,
        "Nakajima, Jun" <jun.nakajima@...el.com>,
        "Jing Liu" <jing2.liu@...ux.intel.com>,
        "Sean Christopherson" <seanjc@...gle.com>
Subject: Re: [patch 13/31] x86/fpu: Move KVMs FPU swapping to FPU core



On Wed, Oct 13, 2021, at 5:26 AM, Paolo Bonzini wrote:
> On 13/10/21 12:14, Andy Lutomirski wrote:
>>> I think it's simpler to always wait for #NM, it will only happen
>>> once per vCPU.  In other words, even if the guest clears XFD before
>>> it generates #NM, the guest_fpu's XFD remains nonzero and an #NM
>>> vmexit is possible.  After #NM the guest_fpu's XFD is zero; then
>>> passthrough can happen and the #NM vmexit trap can be disabled.
>>
>> This will stop being at all optimal when Intel inevitably adds
>> another feature that uses XFD.  In the potentially infinite window in
>> which the guest manages XFD and #NM on behalf of its userspace and
>> when the guest allocates the other hypothetical feature, all the #NMs
>> will have to be trapped by KVM.
>
> The reason is that it's quite common to simply let the guest see all 
> CPUID bits that KVM knows about.  But it's not unlikely that most guests 
> will not ever use any XFD feature, and therefore will not ever see an 
> #NM.  I wouldn't have any problem with allocating _all_ of the dynamic 
> state space on the first #NM.
>
> Thinking more about it, #NM only has to be trapped if XCR0 enables a 
> dynamic feature.  In other words, the guest value of XFD can be limited 
> to (host_XFD|guest_XFD) & guest_XCR0.  This avoids that KVM 
> unnecessarily traps for old guests that use CR0.TS.
>

You could simplify this by allocating the state the first time XCR0 enables the feature in question.

(This is how regular non-virt userspace *should* work too, but it looks like I’ve probably been outvoted on that front…)

> Paolo
>
>> Is it really worthwhile for KVM to use XFD at all instead of
>> preallocating the state and being done with it?  KVM would still have
>> to avoid data loss if the guest sets XFD with non-init state, but #NM
>> could always pass through.
>>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ