From: Tyler Stachecki <stachecki.tyler@gmail.com>
To: Leonardo Bras <leobras@redhat.com>
Cc: Dongli Zhang <dongli.zhang@oracle.com>,
kvm@vger.kernel.org, seanjc@google.com, pbonzini@redhat.com,
dgilbert@redhat.com, tglx@linutronix.de, mingo@redhat.com,
dave.hansen@linux.intel.com, bp@alien8.de,
Tyler Stachecki <tstachecki@bloomberg.net>,
stable@vger.kernel.org
Subject: Re: [PATCH] x86/kvm: Account for fpstate->user_xfeatures changes
Date: Fri, 15 Sep 2023 08:27:06 -0400 [thread overview]
Message-ID: <ZQRNmsWcOM1xbNsZ@luigi.stachecki.net> (raw)
In-Reply-To: <ZQQKoIEgFki0KzxB@redhat.com>
On Fri, Sep 15, 2023 at 04:41:20AM -0300, Leonardo Bras wrote:
> Other than that, all I can think of is removing the features from guest:
>
> As you commented, there may be some features that would not be a problem
> to be removed, and also there may be features which are not used by the
> workload, and could be removed. But this would depend on the feature, and
> the workload, beind a custom solution for every case.
Yes, the "fixup back" should be refined to pointed and verified cases.
> For this (removing guest features), from kernel side, I would suggest using
> SystemTap (and eBPF, IIRC). The procedures should be something like:
> - Try to migrate VM from host with older kernel: fail
> - Look at qemu error, which features are missing?
> - Are those features safely removable from guest ?
> - If so, get an SystemTap / eBPF script masking out the undesired bits.
> - Try the migration again, it should succeed.
>
> IIRC, this could also be done in qemu side, with a custom qemu:
> - Try to migrate VM from host with older kernel: fail
> - Look at qemu error, which features are missing?
> - Are those features safely removable from guest ?
> - If so, get a custom qemu which mask-out the desired flags before the VM
> starts
> - Live migrate (can be inside the source host) to the custom qemu
> - Live migrate from custom qemu to target host.
> - The custom qemu could be on a auxiliary host, and used only for this
>
> Yes, it's hard, takes time, and may not solve every case, but it gets a
> higher chance of the VM surviving in the long run.
Thank you for taking the time to throughly consider the issue and suggest some
ways out - I really appreciate it.
> But keep in mind this is a hack.
> Taking features from a live guest is not supported in any way, and has a
> high chance of crashing the VM.
OK - if there's no interest in the below, I will not push for including this
patch in the kernel tree any longer. I do think the specific case below is what
a vast majority of KVM users will struggle with in the near future, though:
I have a test environment with Broadwell-based (have only AVX-256) guests
running under Skylake (PKRU, AVX512, ...) hypervisors.
I added some pr_debug statements to a guest kernel running under a hypervisor,
with said hypervisor containing neither your nor my patches, and printed the
guests view of `fpu_kernel_cfg.max_features` at boot. It was 0x7, or:
XFEATURE_MASK_FP, XFEATURE_MASK_SSE, XFEATURE_MASK_YMM
Thus, I'm pretty sure that all that's happening here is that the guest's FP
context is having PKRU/ZMM. saved and restored needlessly by the hypervisor.
Stripping it on a live-migration does not seem to have any ill-effects in
all the testing I have done.
Cheers,
Tyler
next prev parent reply other threads:[~2023-09-15 12:26 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-14 1:00 [PATCH] x86/kvm: Account for fpstate->user_xfeatures changes Tyler Stachecki
2023-09-14 1:33 ` Tyler Stachecki
2023-09-14 7:15 ` Leonardo Bras
2023-09-14 9:11 ` Tyler Stachecki
2023-09-14 17:05 ` Dongli Zhang
2023-09-15 0:58 ` Tyler Stachecki
2023-09-15 7:41 ` Leonardo Bras
2023-09-15 12:27 ` Tyler Stachecki [this message]
2023-09-25 21:26 ` Sean Christopherson
2023-09-26 3:02 ` Tyler Stachecki
2023-09-26 16:31 ` Sean Christopherson
2023-09-26 17:31 ` Sean Christopherson
2023-09-26 19:22 ` Sean Christopherson
2023-09-26 20:27 ` Sean Christopherson
2023-09-15 7:13 ` Leonardo Bras
2023-09-15 7:11 ` Leonardo Bras
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=ZQRNmsWcOM1xbNsZ@luigi.stachecki.net \
--to=stachecki.tyler@gmail.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=dgilbert@redhat.com \
--cc=dongli.zhang@oracle.com \
--cc=kvm@vger.kernel.org \
--cc=leobras@redhat.com \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=seanjc@google.com \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=tstachecki@bloomberg.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox