From: Dave Hansen <dave.hansen@intel.com>
To: Sean Christopherson <seanjc@google.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>,
linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
"Kirill A. Shutemov" <kas@kernel.org>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Kai Huang <kai.huang@intel.com>,
Isaku Yamahata <isaku.yamahata@intel.com>,
Vishal Annapurve <vannapurve@google.com>,
Thomas Huth <thuth@redhat.com>,
Adrian Hunter <adrian.hunter@intel.com>,
linux-coco@lists.linux.dev, kvm@vger.kernel.org,
Farrah Chen <farrah.chen@intel.com>
Subject: Re: [PATCH] x86/virt/tdx: Use precalculated TDVPR page physical address
Date: Mon, 20 Oct 2025 08:43:12 -0700 [thread overview]
Message-ID: <ad9b3b96-324a-4661-b43e-0b31cb7a7b51@intel.com> (raw)
In-Reply-To: <aPZUY90M0B3Tu3no@google.com>
On 10/20/25 08:25, Sean Christopherson wrote:
>>> @@ -1583,7 +1578,7 @@ u64 tdh_vp_addcx(struct tdx_vp *vp, struct page *tdcx_page)
>>> {
>>> struct tdx_module_args args = {
>>> .rcx = page_to_phys(tdcx_page),
>>> - .rdx = tdx_tdvpr_pa(vp),
>>> + .rdx = vp->tdvpr_pa,
>>> };
>> I'm kinda dense normally and my coffee hasn't kicked in yet. What
>> clearly does not work there?
> Relying on struct page to provide type safety.
>
>> Yeah, vp->tdvpr_pa is storing a physical address as a raw u64 and not a
>> 'struct page'. That's not ideal. But it's also for a pretty good reason.
> Right, but my point is that regradless of the justification, every exception to
> passing a struct page diminishes the benefits of using struct page in the first
> place.
Yeah, I'm in total agreement with you there.
But I don't think there's any type scheme that won't have exceptions or
other downsides.
u64's are really nice for prototyping because you can just pass those
suckers around anywhere and the compiler will never say a thing. But we
know the downsides of too many plain integer types getting passed around.
Sparse-enforced address spaces are pretty nifty, but they can get messy
around the edges of the subsystem where the type is used. You end up
with lots of ugly force casts there to bend the compiler to your will.
'struct page *' isn't perfect either. As we saw, you can't get from it
to a physical address easily in noinstr code. It doesn't work everywhere
either.
So I dunno. Sounds like there is no shortage of imperfect ways skin this
cat. Yay, engineering!
But, seriously, if you're super confident that a sparse-enforced address
space is the way to go, it's not *that* hard to go look at it. TDX isn't
that big. I can go poke at it for a bit.
next prev parent reply other threads:[~2025-10-20 15:43 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-10 14:44 [PATCH] x86/virt/tdx: Use precalculated TDVPR page physical address Dave Hansen
2025-09-10 16:06 ` Kiryl Shutsemau
2025-09-10 16:10 ` Dave Hansen
2025-09-10 16:12 ` Kiryl Shutsemau
2025-09-10 16:57 ` Dave Hansen
2025-09-11 15:41 ` Kiryl Shutsemau
2025-10-20 13:57 ` Sean Christopherson
2025-10-20 14:14 ` Dave Hansen
2025-10-20 14:42 ` Sean Christopherson
2025-10-20 15:10 ` Dave Hansen
2025-10-20 15:25 ` Sean Christopherson
2025-10-20 15:43 ` Dave Hansen [this message]
2025-10-21 17:51 ` Sean Christopherson
2025-10-29 23:51 ` Dave Hansen
2025-10-30 15:42 ` 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=ad9b3b96-324a-4661-b43e-0b31cb7a7b51@intel.com \
--to=dave.hansen@intel.com \
--cc=adrian.hunter@intel.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=farrah.chen@intel.com \
--cc=hpa@zytor.com \
--cc=isaku.yamahata@intel.com \
--cc=kai.huang@intel.com \
--cc=kas@kernel.org \
--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=thuth@redhat.com \
--cc=vannapurve@google.com \
--cc=x86@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;
as well as URLs for NNTP newsgroup(s).