Subject: linux-next: manual merge of the kvm-x86 tree with the tip tree

From: Mark Brown <[email-masked]>
Date: Wed, 27 May 2026 15:22:53 +0100

Hi all,

Today's linux-next merge of the kvm-x86 tree got a conflict in:

  arch/x86/include/asm/tdx.h

between commit:

  b7d2173946efa ("x86/virt/tdx: Add SEAMCALL wrapper for TDH.SYS.DISABLE")

from the tip tree and commits:

  4487492b92a4f ("x86/tdx: Use pg_level in TDX APIs, not the TDX-Module's 0-based level")
  3f330fbb918fb ("x86/virt/tdx: Move mk_keyed_paddr() to tdx.c due to no external users")

from the kvm-x86 tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --cc arch/x86/include/asm/tdx.h
index e5a9cf656c072,32fbdf8f55aef..0000000000000
--- a/arch/x86/include/asm/tdx.h
+++ b/arch/x86/include/asm/tdx.h
@@@ -145,32 -177,15 +146,17 @@@ struct tdx_vp 
  	struct page **tdcx_pages;
  };
  
- static inline u64 mk_keyed_paddr(u16 hkid, struct page *page)
- {
- 	u64 ret;
- 
- 	ret = page_to_phys(page);
- 	/* KeyID bits are just above the physical address bits: */
- 	ret |= (u64)hkid << boot_cpu_data.x86_phys_bits;
- 
- 	return ret;
- }
- 
- static inline int pg_level_to_tdx_sept_level(enum pg_level level)
- {
-         WARN_ON_ONCE(level == PG_LEVEL_NONE);
-         return level - 1;
- }
- 
 +void tdx_sys_disable(void);
 +
  u64 tdh_vp_enter(struct tdx_vp *vp, struct tdx_module_args *args);
  u64 tdh_mng_addcx(struct tdx_td *td, struct page *tdcs_page);
- u64 tdh_mem_page_add(struct tdx_td *td, u64 gpa, struct page *page, struct page *source, u64 *ext_err1, u64 *ext_err2);
- u64 tdh_mem_sept_add(struct tdx_td *td, u64 gpa, int level, struct page *page, u64 *ext_err1, u64 *ext_err2);
+ u64 tdh_mem_page_add(struct tdx_td *td, u64 gpa, kvm_pfn_t pfn, struct page *source,
+ 		     u64 *ext_err1, u64 *ext_err2);
+ u64 tdh_mem_sept_add(struct tdx_td *td, u64 gpa, enum pg_level level, struct page *page, u64 *ext_err1, u64 *ext_err2);
  u64 tdh_vp_addcx(struct tdx_vp *vp, struct page *tdcx_page);
- u64 tdh_mem_page_aug(struct tdx_td *td, u64 gpa, int level, struct page *page, u64 *ext_err1, u64 *ext_err2);
- u64 tdh_mem_range_block(struct tdx_td *td, u64 gpa, int level, u64 *ext_err1, u64 *ext_err2);
+ u64 tdh_mem_page_aug(struct tdx_td *td, u64 gpa, enum pg_level level, kvm_pfn_t pfn,
+ 		     u64 *ext_err1, u64 *ext_err2);
+ u64 tdh_mem_range_block(struct tdx_td *td, u64 gpa, enum pg_level level, u64 *ext_err1, u64 *ext_err2);
  u64 tdh_mng_key_config(struct tdx_td *td);
  u64 tdh_mng_create(struct tdx_td *td, u16 hkid);
  u64 tdh_vp_create(struct tdx_td *td, struct tdx_vp *vp);