From: Dave Hansen <dave.hansen@intel.com>
To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: pbonzini@redhat.com, seanjc@google.com,
dave.hansen@linux.intel.com, rick.p.edgecombe@intel.com,
isaku.yamahata@intel.com, kai.huang@intel.com,
yan.y.zhao@intel.com, chao.gao@intel.com, tglx@linutronix.de,
mingo@redhat.com, bp@alien8.de, kvm@vger.kernel.org,
x86@kernel.org, linux-coco@lists.linux.dev,
linux-kernel@vger.kernel.org
Subject: Re: [PATCHv2 03/12] x86/virt/tdx: Allocate reference counters for PAMT memory
Date: Fri, 27 Jun 2025 07:03:12 -0700 [thread overview]
Message-ID: <bb0077bc-9dd2-46a6-a130-a2cea5e5628e@intel.com> (raw)
In-Reply-To: <pihazgqmsx4ltuvi2imgwsgvjsg2jsnxjnrdpxblwe2vc24opf@glsj2t3xosvb>
On 6/27/25 04:27, Kirill A. Shutemov wrote:
> On Wed, Jun 25, 2025 at 12:26:09PM -0700, Dave Hansen wrote:
>>> +static atomic_t *tdx_get_pamt_refcount(unsigned long hpa)
>>> +{
>>> + return &pamt_refcounts[hpa / PMD_SIZE];
>>> +}
>>
>> "get refcount" usually means "get a reference". This is looking up the
>> location of the refcount.
>>
>> I think this needs a better name.
>
> tdx_get_pamt_ref_ptr()?
How about:
tdx_find_pamt_refcount()
>>> + unsigned long vaddr;
>>> + pte_t entry;
>>> +
>>> + if (!pte_none(ptep_get(pte)))
>>> + return 0;
>>
>> This ^ is an optimization, right? Could it be comment appropriately, please?
>
> Not optimization.
>
> Calls of apply_to_page_range() can overlap by one page due to
> round_up()/round_down() in alloc_pamt_refcount(). We don't need to
> populate these pages again if they are already populated.
>
> Will add a comment.
But don't you check it again under the lock?
>>> + vaddr = __get_free_page(GFP_KERNEL | __GFP_ZERO);
>>> + if (!vaddr)
>>> + return -ENOMEM;
>>> +
>>> + entry = pfn_pte(PFN_DOWN(__pa(vaddr)), PAGE_KERNEL);
>>> +
>>> + spin_lock(&init_mm.page_table_lock);
>>> + if (pte_none(ptep_get(pte)))
Right there ^
>>> + set_pte_at(&init_mm, addr, pte, entry);
>>> + else
>>> + free_page(vaddr);
>>> + spin_unlock(&init_mm.page_table_lock);
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +static int pamt_refcount_depopulate(pte_t *pte, unsigned long addr,
>>> + void *data)
>>> +{
>>> + unsigned long vaddr;
>>> +
>>> + vaddr = (unsigned long)__va(PFN_PHYS(pte_pfn(ptep_get(pte))));
>>
>> Gah, we really need a kpte_to_vaddr() helper here. This is really ugly.
>> How many of these are in the tree?
>
> I only found such chain in KASAN code.
>
> What about this?
>
> pte_t entry = ptep_get(pte);
> struct page *page = pte_page(entry);
>
> and use __free_page(page) instead free_page(vaddr)?
>
> The similar thing can be don on allocation side.
That does look better.
next prev parent reply other threads:[~2025-06-27 14:03 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-09 19:13 [PATCHv2 00/12] TDX: Enable Dynamic PAMT Kirill A. Shutemov
2025-06-09 19:13 ` [PATCHv2 01/12] x86/tdx: Consolidate TDX error handling Kirill A. Shutemov
2025-06-25 17:58 ` Dave Hansen
2025-06-25 20:58 ` Edgecombe, Rick P
2025-06-25 21:27 ` Sean Christopherson
2025-06-25 21:46 ` Edgecombe, Rick P
2025-06-26 9:25 ` kirill.shutemov
2025-06-26 14:46 ` Dave Hansen
2025-06-26 15:51 ` Sean Christopherson
2025-06-26 16:59 ` Dave Hansen
2025-06-27 10:42 ` kirill.shutemov
2025-07-30 18:32 ` Edgecombe, Rick P
2025-07-31 23:31 ` Sean Christopherson
2025-07-31 23:46 ` Edgecombe, Rick P
2025-07-31 23:53 ` Sean Christopherson
2025-08-01 15:03 ` Edgecombe, Rick P
2025-08-06 15:19 ` Sean Christopherson
2025-06-26 0:05 ` Huang, Kai
2025-07-30 18:33 ` Edgecombe, Rick P
2025-06-09 19:13 ` [PATCHv2 02/12] x86/virt/tdx: Allocate page bitmap for Dynamic PAMT Kirill A. Shutemov
2025-06-25 18:06 ` Dave Hansen
2025-06-26 9:25 ` Kirill A. Shutemov
2025-07-31 1:06 ` Edgecombe, Rick P
2025-07-31 4:10 ` Huang, Kai
2025-06-26 11:08 ` Huang, Kai
2025-06-27 10:42 ` kirill.shutemov
2025-06-09 19:13 ` [PATCHv2 03/12] x86/virt/tdx: Allocate reference counters for PAMT memory Kirill A. Shutemov
2025-06-25 19:26 ` Dave Hansen
2025-06-27 11:27 ` Kirill A. Shutemov
2025-06-27 14:03 ` Dave Hansen [this message]
2025-06-26 0:53 ` Huang, Kai
2025-06-26 4:48 ` Huang, Kai
2025-06-27 11:35 ` kirill.shutemov
2025-06-09 19:13 ` [PATCHv2 04/12] x86/virt/tdx: Add tdx_alloc/free_page() helpers Kirill A. Shutemov
2025-06-10 2:36 ` Chao Gao
2025-06-10 14:51 ` [PATCHv2.1 " Kirill A. Shutemov
2025-06-25 18:01 ` Dave Hansen
2025-06-25 20:09 ` [PATCHv2 " Dave Hansen
2025-06-26 0:46 ` Chao Gao
2025-06-25 20:02 ` Dave Hansen
2025-06-27 13:00 ` Kirill A. Shutemov
2025-06-27 7:49 ` Adrian Hunter
2025-06-27 13:03 ` Kirill A. Shutemov
2025-09-16 0:03 ` Edgecombe, Rick P
2025-09-16 9:22 ` Kiryl Shutsemau
2025-09-16 17:10 ` Edgecombe, Rick P
2025-06-09 19:13 ` [PATCHv2 05/12] KVM: TDX: Allocate PAMT memory in __tdx_td_init() Kirill A. Shutemov
2025-06-09 19:13 ` [PATCHv2 06/12] KVM: TDX: Allocate PAMT memory in tdx_td_vcpu_init() Kirill A. Shutemov
2025-06-09 19:13 ` [PATCHv2 07/12] KVM: TDX: Preallocate PAMT pages to be used in page fault path Kirill A. Shutemov
2025-06-26 11:21 ` Huang, Kai
2025-07-10 1:34 ` Edgecombe, Rick P
2025-07-10 7:49 ` kirill.shutemov
2025-06-09 19:13 ` [PATCHv2 08/12] KVM: TDX: Handle PAMT allocation in " Kirill A. Shutemov
2025-06-12 12:19 ` Chao Gao
2025-06-12 13:05 ` [PATCHv2.1 " Kirill A. Shutemov
2025-06-25 22:38 ` [PATCHv2 " Edgecombe, Rick P
2025-07-09 14:29 ` kirill.shutemov
2025-07-10 1:33 ` Edgecombe, Rick P
2025-07-10 8:45 ` kirill.shutemov
2025-08-21 19:21 ` Sagi Shahar
2025-08-21 19:35 ` Edgecombe, Rick P
2025-08-21 19:53 ` Sagi Shahar
2025-06-09 19:13 ` [PATCHv2 09/12] KVM: TDX: Reclaim PAMT memory Kirill A. Shutemov
2025-06-09 19:13 ` [PATCHv2 10/12] [NOT-FOR-UPSTREAM] x86/virt/tdx: Account PAMT memory and print it in /proc/meminfo Kirill A. Shutemov
2025-06-09 19:13 ` [PATCHv2 11/12] x86/virt/tdx: Enable Dynamic PAMT Kirill A. Shutemov
2025-06-09 19:13 ` [PATCHv2 12/12] Documentation/x86: Add documentation for TDX's " Kirill A. Shutemov
2025-06-25 13:25 ` [PATCHv2 00/12] TDX: Enable " Kirill A. Shutemov
2025-06-25 22:49 ` Edgecombe, Rick P
2025-06-27 13:05 ` kirill.shutemov
2025-08-08 23:18 ` Edgecombe, Rick P
2025-08-11 6:31 ` kas
2025-08-11 22:30 ` Edgecombe, Rick P
2025-08-12 2:02 ` Sean Christopherson
2025-08-12 2:31 ` Vishal Annapurve
2025-08-12 8:04 ` kas
2025-08-12 15:12 ` Edgecombe, Rick P
2025-08-12 16:15 ` Sean Christopherson
2025-08-12 18:39 ` Edgecombe, Rick P
2025-08-12 22:00 ` Vishal Annapurve
2025-08-12 23:34 ` Edgecombe, Rick P
2025-08-13 0:18 ` Vishal Annapurve
2025-08-13 0:51 ` Edgecombe, Rick P
2025-08-12 18:44 ` Vishal Annapurve
2025-08-13 8:09 ` Kiryl Shutsemau
2025-08-13 7:49 ` Kiryl Shutsemau
2025-08-12 8:03 ` kas
2025-08-13 22:43 ` Edgecombe, Rick P
2025-08-13 23:31 ` Dave Hansen
2025-08-14 0:14 ` Edgecombe, Rick P
2025-08-14 10:55 ` Kiryl Shutsemau
2025-08-15 1:03 ` Edgecombe, Rick P
2025-08-20 15:31 ` Sean Christopherson
2025-08-20 16:35 ` Edgecombe, Rick P
2025-09-08 19:17 ` Dave Hansen
2025-09-09 11:16 ` Kiryl Shutsemau
2025-09-09 15:23 ` Dave Hansen
2025-09-10 17:18 ` Vishal Annapurve
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=bb0077bc-9dd2-46a6-a130-a2cea5e5628e@intel.com \
--to=dave.hansen@intel.com \
--cc=bp@alien8.de \
--cc=chao.gao@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=isaku.yamahata@intel.com \
--cc=kai.huang@intel.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rick.p.edgecombe@intel.com \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
--cc=yan.y.zhao@intel.com \
/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®