From: Paolo Bonzini <pbonzini@redhat.com>
To: Sean Christopherson <seanjc@google.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
David Woodhouse <dwmw2@infradead.org>,
Paul Durrant <paul@xen.org>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Yosry Ahmed <yosry@kernel.org>,
Binbin Wu <binbin.wu@linux.intel.com>,
David Woodhouse <dwmw@amazon.co.uk>,
Kai Huang <kai.huang@intel.com>
Subject: Re: [PATCH v3 00/40] KVM: x86: GPR accessors and x86.{c,h} spring cleaning
Date: Sat, 30 May 2026 18:59:17 +0200 [thread overview]
Message-ID: <f1cae8a8-8842-493e-9b6a-6f0e0d761c4e@redhat.com> (raw)
In-Reply-To: <20260529222223.870923-1-seanjc@google.com>
On 5/30/26 00:21, Sean Christopherson wrote:
> The first half of this series adds proper, explicit "raw" versions of
> kvm_<reg>_{read,write}(), along with "e" versions (for hardcoded 32-bit
> accesses), and converts the existing kvm_<reg>_{read,write}() APIs into
> mode-aware variants.
>
> At the end of that journey, introduce regs.{c,h} to avoid moving _more_ code
> into x86.h, especially since the resulting code split would be super arbitrary.
What about getting everything up to patch 14 into 7.2, and then starting
7.3 development with these, the MMU split series, and possibly the
pfncache cleanups?
I'll be away starting June 28th, so we probably want to get those three
merged into kvm/next already towards the end of the merge window.
Paolo
> The second half of the series runs with the regs.{c,h} changes and performs
> spring cleaning on x86.{c,h} and asm/kvm_host.h (in case it wasn't already
> obvious, I have poor impulse control when it comes to cleaning up code).
>
> I'm most intersted in getting feedback on the file names (regs.{c,h} and
> msrs.{c,h}. I'm quite confident the actual code split is the way to go, and
> pulling stuff out of asm/kvm_host.h has been on my wish/todo list for years.
>
> I'll grab these fixes for 7.2 no matter what:
>
> KVM: x86: Trace hypercall register *after* truncating values for 32-bit
> KVM: VMX: Read 32-bit GPR values for ENCLS instructions outside of 64-bit mode
> KVM: x86/xen: Don't truncate RAX when handling hypercall from protected guest
> KVM: x86/xen: Bug the VM if 32-bit KVM observes a 64-bit mode hypercall
>
> Depending on how people feel about the names and cleanups, I'll either send
> the big cleanups as a separate pull request after the initial for-7.2 pull
> requests (if there's overwhelming consensus on the names/splits), or wait for
> 7.3 (if more discussion is needed).
>
> v3:
> - Collect more tags. [David, Binbin, Yosry]
> - Use kvm_run_sync_regs_{from,to}_user() instead of kvm_run_{g,s}et_regs().
> [Kai]
> - Fix a variety of typos. [Binbin]
> - Everything beyond patch 15...
>
> v2:
> - https://lore.kernel.org/all/20260514215355.1648463-2-seanjc@google.com
> - Collect tags. [Yosry, Kai]
> - Fix some truly egregious goofs. [Binbin]
> - Rename kvm_cache_regs.h => regs.h, add regs.c. [Yosry, because he
> complained, not because he actually suggested this :-D ]
> - Drop superfluous casting/masking of e*x() usage. [Kai]
>
> v1: https://lore.kernel.org/all/20260409235622.2052730-1-seanjc@google.com
>
> Sean Christopherson (40):
> KVM: SVM: Truncate INVLPGA address in compatibility mode
> KVM: x86/xen: Bug the VM if 32-bit KVM observes a 64-bit mode
> hypercall
> KVM: x86/xen: Don't truncate RAX when handling hypercall from
> protected guest
> KVM: VMX: Read 32-bit GPR values for ENCLS instructions outside of
> 64-bit mode
> KVM: x86: Trace hypercall register *after* truncating values for
> 32-bit
> KVM: x86: Rename kvm_cache_regs.h => regs.h
> KVM: x86: Move inlined GPR, CR, and DR helpers from x86.h to regs.h
> KVM: x86: Add mode-aware versions of kvm_<reg>_{read,write}() helpers
> KVM: x86: Drop non-raw kvm_<reg>_write() helpers
> KVM: nSVM: Use kvm_rax_read() now that it's mode-aware
> Revert "KVM: VMX: Read 32-bit GPR values for ENCLS instructions
> outside of 64-bit mode"
> KVM: x86: Harden is_64_bit_hypercall() against bugs on 32-bit kernels
> KVM: x86: Move update_cr8_intercept() to lapic.c
> KVM: x86: Move async #PF helpers to x86.h (as inlines)
> KVM: x86: Move the bulk of register specific code from x86.c to regs.c
> KVM: x86: Move local APIC specific helpers out of asm/kvm_host.h
> KVM: x86: Drop defunct vcpu_tsc_khz() declaration
> KVM: x86: Move kvm_caps and kvm_host_values to asm/kvm_host.h
> KVM: x86: Swap the include order between x86.h and mmu.h
> KVM: x86: Move tdp_enabled from kvm_host.h to mmu.h
> KVM: x86: Move eager_page_split to mmu.{c,h}
> KVM: x86/hyperv: Eliminate an unnecessary include of x86.h in hyperv.h
> KVM: x86: Move kvm_{load,put}_guest_fpu() to fpu.h
> KVM: x86: Extract get/set MSR (list) ioctl logic to helpers
> KVM: x86: Expose several TSC helpers via x86.h for use by MSR code
> KVM: x86: Move the bulk of MSR specific code from x86.c to msrs.{c,h}
> KVM: x86: Move register helper declarations from kvm_host.h => regs.h
> KVM: x86: Move kvm_{g,s}et_segment() to inline helpers in regs.h
> KVM: x86: Remove defunct kvm_load_segment_descriptor() declaration.
> KVM: x86: Move MSR helper declarations from kvm_host.h => msrs.h
> KVM: x86: Move MMU helper declarations from kvm_host.h => mmu.h
> KVM: x86: Move LLDT assembly wrappers into VMX
> KVM: x86: Move kvm_cpu_get_apicid() from kvm_host.h => avic.c
> KVM: x86: Move misc "VALID MASK" defines from kvm_host.h => x86.c
> KVM: x86: Move __kvm_irq_line_state() from kvm_host.h => ioapic.h
> KVM: x86: Move IRQ-related helper declarations from kvm_host.h =>
> irq.h
> KVM: x86: Move kvm_pv_send_ipi() declaration from kvm_host.h =>
> lapic.h
> KVM: x86/mmu: Move kvm_arch_async_page_ready() below
> kvm_tdp_page_fault()
> KVM: x86/mmu: Move kvm_mmu_do_page_fault() from mmu_internal.h =>
> mmu.c
> KVM: x86: Move a pile of stuff from kvm_host.h => x86.h
>
> arch/x86/include/asm/kvm_host.h | 452 +--
> arch/x86/kvm/Makefile | 4 +-
> arch/x86/kvm/cpuid.c | 13 +-
> arch/x86/kvm/emulate.c | 2 +-
> arch/x86/kvm/fpu.h | 26 +
> arch/x86/kvm/hyperv.c | 21 +-
> arch/x86/kvm/hyperv.h | 7 +-
> arch/x86/kvm/ioapic.c | 1 +
> arch/x86/kvm/ioapic.h | 12 +
> arch/x86/kvm/irq.c | 7 +
> arch/x86/kvm/irq.h | 6 +
> arch/x86/kvm/lapic.c | 28 +-
> arch/x86/kvm/lapic.h | 9 +
> arch/x86/kvm/mmu.h | 92 +-
> arch/x86/kvm/mmu/mmu.c | 134 +-
> arch/x86/kvm/mmu/mmu_internal.h | 66 -
> arch/x86/kvm/msrs.c | 2732 +++++++++++++++
> arch/x86/kvm/msrs.h | 156 +
> arch/x86/kvm/mtrr.c | 1 +
> arch/x86/kvm/regs.c | 875 +++++
> arch/x86/kvm/{kvm_cache_regs.h => regs.h} | 258 +-
> arch/x86/kvm/smm.c | 2 +-
> arch/x86/kvm/svm/avic.c | 5 +
> arch/x86/kvm/svm/nested.c | 9 +-
> arch/x86/kvm/svm/svm.c | 19 +-
> arch/x86/kvm/svm/svm.h | 2 +-
> arch/x86/kvm/vmx/nested.c | 9 +-
> arch/x86/kvm/vmx/nested.h | 2 +-
> arch/x86/kvm/vmx/sgx.c | 6 +-
> arch/x86/kvm/vmx/tdx.c | 18 +-
> arch/x86/kvm/vmx/vmx.c | 14 +-
> arch/x86/kvm/vmx/vmx.h | 2 +-
> arch/x86/kvm/x86.c | 3789 +--------------------
> arch/x86/kvm/x86.h | 480 ++-
> arch/x86/kvm/xen.c | 39 +-
> 35 files changed, 4722 insertions(+), 4576 deletions(-)
> create mode 100644 arch/x86/kvm/msrs.c
> create mode 100644 arch/x86/kvm/msrs.h
> create mode 100644 arch/x86/kvm/regs.c
> rename arch/x86/kvm/{kvm_cache_regs.h => regs.h} (50%)
>
>
> base-commit: d1568b1332b6b3b36b222c2868fc102727c12a34
next prev parent reply other threads:[~2026-05-30 16:59 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-29 22:21 Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 01/40] KVM: SVM: Truncate INVLPGA address in compatibility mode Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 02/40] KVM: x86/xen: Bug the VM if 32-bit KVM observes a 64-bit mode hypercall Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 03/40] KVM: x86/xen: Don't truncate RAX when handling hypercall from protected guest Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 04/40] KVM: VMX: Read 32-bit GPR values for ENCLS instructions outside of 64-bit mode Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 05/40] KVM: x86: Trace hypercall register *after* truncating values for 32-bit Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 06/40] KVM: x86: Rename kvm_cache_regs.h => regs.h Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 07/40] KVM: x86: Move inlined GPR, CR, and DR helpers from x86.h to regs.h Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 08/40] KVM: x86: Add mode-aware versions of kvm_<reg>_{read,write}() helpers Sean Christopherson
2026-06-03 11:15 ` Huang, Kai
2026-05-29 22:21 ` [PATCH v3 09/40] KVM: x86: Drop non-raw kvm_<reg>_write() helpers Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 10/40] KVM: nSVM: Use kvm_rax_read() now that it's mode-aware Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 11/40] Revert "KVM: VMX: Read 32-bit GPR values for ENCLS instructions outside of 64-bit mode" Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 12/40] KVM: x86: Harden is_64_bit_hypercall() against bugs on 32-bit kernels Sean Christopherson
2026-05-29 22:21 ` [PATCH v3 13/40] KVM: x86: Move update_cr8_intercept() to lapic.c Sean Christopherson
2026-05-30 0:35 ` Yosry Ahmed
2026-06-03 11:16 ` Huang, Kai
2026-05-29 22:21 ` [PATCH v3 14/40] KVM: x86: Move async #PF helpers to x86.h (as inlines) Sean Christopherson
2026-05-30 0:36 ` Yosry Ahmed
2026-05-30 0:39 ` Sean Christopherson
2026-05-30 0:45 ` Yosry Ahmed
2026-06-03 11:18 ` Huang, Kai
2026-05-29 22:21 ` [PATCH v3 15/40] KVM: x86: Move the bulk of register specific code from x86.c to regs.c Sean Christopherson
2026-05-30 0:43 ` Yosry Ahmed
2026-06-01 14:15 ` Sean Christopherson
2026-06-01 23:35 ` Yosry Ahmed
2026-06-03 11:33 ` Huang, Kai
2026-05-29 22:21 ` [PATCH v3 16/40] KVM: x86: Move local APIC specific helpers out of asm/kvm_host.h Sean Christopherson
2026-05-30 0:37 ` Yosry Ahmed
2026-06-03 11:40 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 17/40] KVM: x86: Drop defunct vcpu_tsc_khz() declaration Sean Christopherson
2026-05-30 0:45 ` Yosry Ahmed
2026-06-03 11:41 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 18/40] KVM: x86: Move kvm_caps and kvm_host_values to asm/kvm_host.h Sean Christopherson
2026-05-30 0:46 ` Yosry Ahmed
2026-06-03 11:51 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 19/40] KVM: x86: Swap the include order between x86.h and mmu.h Sean Christopherson
2026-05-30 0:48 ` Yosry Ahmed
2026-06-01 14:55 ` Sean Christopherson
2026-06-01 20:27 ` Yosry Ahmed
2026-06-01 21:19 ` Sean Christopherson
2026-06-03 11:53 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 20/40] KVM: x86: Move tdp_enabled from kvm_host.h to mmu.h Sean Christopherson
2026-05-30 0:51 ` Yosry Ahmed
2026-06-03 11:56 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 21/40] KVM: x86: Move eager_page_split to mmu.{c,h} Sean Christopherson
2026-05-30 0:51 ` Yosry Ahmed
2026-06-03 11:59 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 22/40] KVM: x86/hyperv: Eliminate an unnecessary include of x86.h in hyperv.h Sean Christopherson
2026-06-04 11:00 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 23/40] KVM: x86: Move kvm_{load,put}_guest_fpu() to fpu.h Sean Christopherson
2026-05-30 0:52 ` Yosry Ahmed
2026-06-04 11:08 ` Huang, Kai
2026-06-05 19:14 ` Sean Christopherson
2026-05-29 22:22 ` [PATCH v3 24/40] KVM: x86: Extract get/set MSR (list) ioctl logic to helpers Sean Christopherson
2026-05-30 0:55 ` Yosry Ahmed
2026-06-04 11:18 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 25/40] KVM: x86: Expose several TSC helpers via x86.h for use by MSR code Sean Christopherson
2026-06-04 11:50 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 26/40] KVM: x86: Move the bulk of MSR specific code from x86.c to msrs.{c,h} Sean Christopherson
2026-06-04 12:03 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 27/40] KVM: x86: Move register helper declarations from kvm_host.h => regs.h Sean Christopherson
2026-05-30 0:56 ` Yosry Ahmed
2026-06-01 14:24 ` Sean Christopherson
2026-06-01 23:36 ` Yosry Ahmed
2026-06-04 12:38 ` Huang, Kai
2026-06-05 19:13 ` Sean Christopherson
2026-05-29 22:22 ` [PATCH v3 28/40] KVM: x86: Move kvm_{g,s}et_segment() to inline helpers in regs.h Sean Christopherson
2026-05-30 0:57 ` Yosry Ahmed
2026-06-04 12:39 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 29/40] KVM: x86: Remove defunct kvm_load_segment_descriptor() declaration Sean Christopherson
2026-05-30 0:57 ` Yosry Ahmed
2026-06-04 12:39 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 30/40] KVM: x86: Move MSR helper declarations from kvm_host.h => msrs.h Sean Christopherson
2026-05-30 0:59 ` Yosry Ahmed
2026-06-01 14:50 ` Sean Christopherson
2026-06-01 23:38 ` Yosry Ahmed
2026-06-05 6:53 ` Huang, Kai
2026-06-05 20:36 ` Sean Christopherson
2026-05-29 22:22 ` [PATCH v3 31/40] KVM: x86: Move MMU helper declarations from kvm_host.h => mmu.h Sean Christopherson
2026-05-30 0:59 ` Yosry Ahmed
2026-06-05 7:02 ` Huang, Kai
2026-06-05 7:50 ` Huang, Kai
2026-06-05 20:03 ` Sean Christopherson
2026-06-05 20:55 ` Sean Christopherson
2026-06-08 11:15 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 32/40] KVM: x86: Move LLDT assembly wrappers into VMX Sean Christopherson
2026-05-30 1:02 ` Yosry Ahmed
2026-06-01 15:17 ` Sean Christopherson
2026-06-01 23:41 ` Yosry Ahmed
2026-05-29 22:22 ` [PATCH v3 33/40] KVM: x86: Move kvm_cpu_get_apicid() from kvm_host.h => avic.c Sean Christopherson
2026-05-30 1:03 ` Yosry Ahmed
2026-06-05 7:13 ` Huang, Kai
2026-06-05 20:29 ` Sean Christopherson
2026-05-29 22:22 ` [PATCH v3 34/40] KVM: x86: Move misc "VALID MASK" defines from kvm_host.h => x86.c Sean Christopherson
2026-05-30 1:05 ` Yosry Ahmed
2026-06-05 7:45 ` Huang, Kai
2026-06-05 20:32 ` Sean Christopherson
2026-06-08 11:17 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 35/40] KVM: x86: Move __kvm_irq_line_state() from kvm_host.h => ioapic.h Sean Christopherson
2026-05-30 1:06 ` Yosry Ahmed
2026-06-05 7:53 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 36/40] KVM: x86: Move IRQ-related helper declarations from kvm_host.h => irq.h Sean Christopherson
2026-05-30 1:10 ` Yosry Ahmed
2026-06-01 15:22 ` Sean Christopherson
2026-06-01 23:44 ` Yosry Ahmed
2026-05-29 22:22 ` [PATCH v3 37/40] KVM: x86: Move kvm_pv_send_ipi() declaration from kvm_host.h => lapic.h Sean Christopherson
2026-05-30 1:11 ` Yosry Ahmed
2026-06-05 7:58 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 38/40] KVM: x86/mmu: Move kvm_arch_async_page_ready() below kvm_tdp_page_fault() Sean Christopherson
2026-05-30 1:12 ` Yosry Ahmed
2026-06-05 7:59 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 39/40] KVM: x86/mmu: Move kvm_mmu_do_page_fault() from mmu_internal.h => mmu.c Sean Christopherson
2026-05-30 1:13 ` Yosry Ahmed
2026-06-05 8:03 ` Huang, Kai
2026-05-29 22:22 ` [PATCH v3 40/40] KVM: x86: Move a pile of stuff from kvm_host.h => x86.h Sean Christopherson
2026-05-30 16:59 ` Paolo Bonzini [this message]
2026-06-03 12:58 ` [PATCH v3 00/40] KVM: x86: GPR accessors and x86.{c,h} spring cleaning Sean Christopherson
2026-06-05 18:31 ` Sean Christopherson
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=f1cae8a8-8842-493e-9b6a-6f0e0d761c4e@redhat.com \
--to=pbonzini@redhat.com \
--cc=binbin.wu@linux.intel.com \
--cc=dwmw2@infradead.org \
--cc=dwmw@amazon.co.uk \
--cc=kai.huang@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paul@xen.org \
--cc=seanjc@google.com \
--cc=vkuznets@redhat.com \
--cc=yosry@kernel.org \
/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
all inboxes | Powered by JetHome®