All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Kai Huang <kai.huang@intel.com>
Cc: "pbonzini@redhat.com" <pbonzini@redhat.com>,
	"vkuznets@redhat.com" <vkuznets@redhat.com>,
	 "dwmw2@infradead.org" <dwmw2@infradead.org>,
	"paul@xen.org" <paul@xen.org>,
	 "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"dwmw@amazon.co.uk" <dwmw@amazon.co.uk>,
	 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"yosry@kernel.org" <yosry@kernel.org>,
	 "binbin.wu@linux.intel.com" <binbin.wu@linux.intel.com>
Subject: Re: [PATCH v3 31/40] KVM: x86: Move MMU helper declarations from kvm_host.h => mmu.h
Date: Fri, 5 Jun 2026 13:03:42 -0700	[thread overview]
Message-ID: <aiMrnk8a5fsWfze9@google.com> (raw)
In-Reply-To: <e1c32d6ba008a443797d26dba21cb9ae59b39f93.camel@intel.com>

On Fri, Jun 05, 2026, Kai Huang wrote:
> > 
> > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> > index 1143140592df..f217403e18fc 100644
> > --- a/arch/x86/include/asm/kvm_host.h
> > +++ b/arch/x86/include/asm/kvm_host.h
> > @@ -161,12 +161,6 @@
> >  #define KVM_HPAGE_MASK(x)	(~(KVM_HPAGE_SIZE(x) - 1))
> >  #define KVM_PAGES_PER_HPAGE(x)	(KVM_HPAGE_SIZE(x) / PAGE_SIZE)
> >  
> > -#define KVM_MEMSLOT_PAGES_TO_MMU_PAGES_RATIO 50
> > -#define KVM_MIN_ALLOC_MMU_PAGES 64UL
> > -#define KVM_MMU_HASH_SHIFT 12
> > -#define KVM_NUM_MMU_PAGES (1 << KVM_MMU_HASH_SHIFT)
> > -#define KVM_MIN_FREE_MMU_PAGES 5
> > -#define KVM_REFILL_PAGES 25 
> > 
> 
> [...]
> 
> > diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h
> > index d30676935fff..a6b871253bd7 100644
> > --- a/arch/x86/kvm/mmu.h
> > +++ b/arch/x86/kvm/mmu.h
> > @@ -15,6 +15,13 @@ extern bool tdp_mmu_enabled;
> >  extern bool __read_mostly enable_mmio_caching;
> >  extern bool eager_page_split;
> >  
> > +#define KVM_MEMSLOT_PAGES_TO_MMU_PAGES_RATIO 50
> > +#define KVM_MIN_ALLOC_MMU_PAGES 64UL
> > +#define KVM_MMU_HASH_SHIFT 12
> > +#define KVM_NUM_MMU_PAGES (1 << KVM_MMU_HASH_SHIFT)
> > +#define KVM_MIN_FREE_MMU_PAGES 5
> > +#define KVM_REFILL_PAGES 25
> > +
> 
> Btw, I found below defines can be moved to "mmu.h" too:
> 
> #define INVALID_PAGE (~(hpa_t)0)
> #define VALID_PAGE(x) ((x) != INVALID_PAGE)
> 
> #define KVM_MMU_ROOT_INFO_INVALID \
>         ((struct kvm_mmu_root_info) { .pgd = INVALID_PAGE, .hpa = INVALID_PAGE
> })

I saw this one too, but I don't want to split KVM_MMU_ROOT_INFO_INVALID from the
related defs:

  #define KVM_MMU_NUM_PREV_ROOTS 3

  #define KVM_MMU_ROOT_CURRENT		BIT(0)
  #define KVM_MMU_ROOT_PREVIOUS(i)	BIT(1+i)
  #define KVM_MMU_ROOTS_ALL		(BIT(1 + KVM_MMU_NUM_PREV_ROOTS) - 1)

Hrm, but KVM_MMU_ROOT_INFO_INVALID has exactly one user:

	for (i = 0; i < KVM_MMU_NUM_PREV_ROOTS; i++)
		mmu->prev_roots[i] = KVM_MMU_ROOT_INFO_INVALID;

so leaving it in kvm_host.h is silly.  Oof, but that's odd, the code above it
does:

	mmu->root.hpa = INVALID_PAGE;
	mmu->root.pgd = 0;

as does kvm_mmu_free_roots():

		mmu->root.hpa = INVALID_PAGE;
		mmu->root.pgd = 0;

mmu_alloc_direct_roots() deliberately zeros "pgd" to guarantee matches on the
pgd, as guest CR3 is ignored for direct roots, but the "invalidation" code looks
wrong.

Let's handle KVM_MMU_ROOT_INFO_INVALID separately, as simply moving it probably
isn't what we want to do.

> And even below can be moved to "mmu.h", but perhaps you won't like that:
> 
> #define KVM_HPAGE_GFN_SHIFT(x) (((x) - 1) * 9)
> #define KVM_HPAGE_SHIFT(x)     (PAGE_SHIFT + KVM_HPAGE_GFN_SHIFT(x))
> #define KVM_HPAGE_SIZE(x)      (1UL << KVM_HPAGE_SHIFT(x))
> #define KVM_HPAGE_MASK(x)      (~(KVM_HPAGE_SIZE(x) - 1))
> #define KVM_PAGES_PER_HPAGE(x) (KVM_HPAGE_SIZE(x) / PAGE_SIZE)

Huh.  Oh, /facepalm.  I looked at these, but saw there were references in kvm_host.h
and moved on.  But they're all "self" references.  So yeah, I agree moving these
and INVALID_PAGE+VALID_PAGE makes sense.

> #define KVM_MMU_ROOT_CURRENT           BIT(0)
> #define KVM_MMU_ROOT_PREVIOUS(i)       BIT(1+i)
> #define KVM_MMU_ROOTS_ALL              (BIT(1 + KVM_MMU_NUM_PREV_ROOTS) - 1)

These I want to keep in kvm_host.h because they're tied to KVM_MMU_NUM_PREV_ROOTS,
which needs to stay in kvm_host.h.

Thanks so much for the thorough review(s)!

  reply	other threads:[~2026-06-05 20:03 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-29 22:21 [PATCH v3 00/40] KVM: x86: GPR accessors and x86.{c,h} spring cleaning 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:48   ` sashiko-bot
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 [this message]
2026-06-05 20:55       ` Sean Christopherson
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-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  7:59   ` sashiko-bot
2026-05-30 16:59 ` [PATCH v3 00/40] KVM: x86: GPR accessors and x86.{c,h} spring cleaning Paolo Bonzini
2026-06-03 12:58   ` 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=aiMrnk8a5fsWfze9@google.com \
    --to=seanjc@google.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=pbonzini@redhat.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 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.