Re: [RFC PATCH v2 02/23] x86/virt/tdx: Add SEAMCALL wrapper tdh_mem_page_demote()
From: Binbin Wu
Date: Fri Nov 14 2025 - 04:14:12 EST
On 11/12/2025 4:06 PM, Yan Zhao wrote:
On Tue, Nov 11, 2025 at 05:15:22PM +0800, Huang, Kai wrote:
On Mon, 2025-09-01 at 17:08 +0800, Yan Zhao wrote:Yes. I checked the unreleased TDX module code that enumerates this bit (starting
Looking at the spec (TDX module ABI spec 348551-007US), is it enumerated viaYes. But I guess detecting TDX module version or if it supports certain featureDo not handle TDX_INTERRUPTED_RESTARTABLE because SEAMCALLThe cover letter mentions that there is a new TDX module in planning, which
TDH_MEM_PAGE_DEMOTE does not check interrupts (including NMIs) for basic
TDX (with or without Dynamic PAMT).
disables the interrupt checking. I guess TDX module would need to have a
interface to report the change, KVM then decides to enable huge page support or
not for TDs?
is a generic problem. e.g., certain versions of TDX module have bugs in
zero-step mitigation and may block vCPU entering.
So, maybe it deserves a separate series?
TDX_FEATURES0.ENHANCED_DEMOTE_INTERRUPTIBILITY?
from version TDX_1.5.28.00.972). TDH.MEM.PAGE.DEMOTE will not return
TDX_INTERRUPTED_RESTARTABLE for L1 VMs.
According to the content pasted by Kai below, it just says there will be no
TDX_INTERRUPTED_RESTARTABLE for TDH.MEM.PAGE.DEMOTE if no L2 VMs.
KVM doesn't support TD partition yet, just for clarification, what if the
demotion is for L1 VM, but there are L2 VMs configured?
5.4.25.3.9.Thanks for this info! I think this is a very good idea and the right direction.
Interruptibility
If the TD is not partitioned (i.e., it has been configured with no L2
VMs), and the TDX Module enumerates
TDX_FEATURES0.ENHANCED_DEMOTE_INTERRUPTIBILITY as 1, TDH.MEM.PAGE.DEMOTE
is not interruptible.
So if the decision is to not use 2M page when TDH_MEM_PAGE_DEMOTE can return
TDX_INTERRUPTED_RESTARTABLE, maybe we can just check this enumeration in
fault handler and always make mapping level as 4K?
If no objection, I'll update the code in this way.