[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZcGmLKbLV2bVTxD1@google.com>
Date: Mon, 5 Feb 2024 19:23:24 -0800
From: Sean Christopherson <seanjc@...gle.com>
To: David Stevens <stevensd@...omium.org>
Cc: Yu Zhang <yu.c.zhang@...ux.intel.com>, Isaku Yamahata <isaku.yamahata@...il.com>,
Zhi Wang <zhi.wang.linux@...il.com>, kvmarm@...ts.linux.dev,
linux-kernel@...r.kernel.org, kvm@...r.kernel.org
Subject: Re: [PATCH v9 6/6] KVM: x86/mmu: Handle non-refcounted pages
On Mon, Sep 11, 2023, David Stevens wrote:
> From: David Stevens <stevensd@...omium.org>
>
> Handle non-refcounted pages in __kvm_faultin_pfn. This allows the host
> to map memory into the guest that is backed by non-refcounted struct
> pages - for example, the tail pages of higher order non-compound pages
> allocated by the amdgpu driver via ttm_pool_alloc_page.
>
> The bulk of this change is tracking the is_refcounted_page flag so that
> non-refcounted pages don't trigger page_count() == 0 warnings. This is
> done by storing the flag in an unused bit in the sptes. There are no
> bits available in PAE SPTEs, so non-refcounted pages can only be handled
> on TDP and x86-64.
Can you split this into two patches? One to add all of the SPTE tracking, and
then one final patch to allow faulting in non-refcounted pages. I want to isolate
the latter as much as possible, both for review purposes and in case something
goes awry and needs to be reverted.
> @@ -4254,13 +4265,18 @@ void kvm_arch_async_page_ready(struct kvm_vcpu *vcpu, struct kvm_async_pf *work)
> static int __kvm_faultin_pfn(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault)
> {
> struct kvm_memory_slot *slot = fault->slot;
> + /*
> + * There are no extra bits for tracking non-refcounted pages in
> + * PAE SPTEs, so reject non-refcounted struct pages in that case.
> + */
> + bool has_spte_refcount_bit = tdp_enabled && IS_ENABLED(CONFIG_X86_64);
Eh, just drop the local variable and do
.allow_non_refcounted_struct_page = tdp_enabled &&
IS_ENABLED(CONFIG_X86_64);
(but keep the comment)
Powered by blists - more mailing lists