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);
+u64 tdh_mng_rd(struct tdx_td *td, u64 field, u64 *data);
 u64 tdh_mng_key_freeid(struct tdx_td *td);
 u64 tdh_mng_init(struct tdx_td *td, u64 td_params, u64 *extended_err);
 u64 tdh_vp_init(struct tdx_vp *vp, u64 initial_rcx, u32 x2apicid);
+u64 tdh_vp_rd(struct tdx_vp *vp, u64 field, u64 *data);
+u64 tdh_vp_wr(struct tdx_vp *vp, u64 field, u64 data, u64 mask);
 u64 tdh_phymem_page_reclaim(struct page *page, u64 *tdx_pt, u64 *tdx_owner, u64 *tdx_size);
 u64 tdh_phymem_cache_wb(bool resume);
 u64 tdh_phymem_page_wbinvd_tdr(struct tdx_td *td);
 
 }
 EXPORT_SYMBOL_GPL(tdh_vp_create);
 
+u64 tdh_mng_rd(struct tdx_td *td, u64 field, u64 *data)
+{
+       struct tdx_module_args args = {
+               .rcx = tdx_tdr_pa(td),
+               .rdx = field,
+       };
+       u64 ret;
+
+       ret = seamcall_ret(TDH_MNG_RD, &args);
+
+       /* R8: Content of the field, or 0 in case of error. */
+       *data = args.r8;
+
+       return ret;
+}
+EXPORT_SYMBOL_GPL(tdh_mng_rd);
+
 u64 tdh_mng_key_freeid(struct tdx_td *td)
 {
        struct tdx_module_args args = {
 }
 EXPORT_SYMBOL_GPL(tdh_mng_init);
 
+u64 tdh_vp_rd(struct tdx_vp *vp, u64 field, u64 *data)
+{
+       struct tdx_module_args args = {
+               .rcx = tdx_tdvpr_pa(vp),
+               .rdx = field,
+       };
+       u64 ret;
+
+       ret = seamcall_ret(TDH_VP_RD, &args);
+
+       /* R8: Content of the field, or 0 in case of error. */
+       *data = args.r8;
+
+       return ret;
+}
+EXPORT_SYMBOL_GPL(tdh_vp_rd);
+
+u64 tdh_vp_wr(struct tdx_vp *vp, u64 field, u64 data, u64 mask)
+{
+       struct tdx_module_args args = {
+               .rcx = tdx_tdvpr_pa(vp),
+               .rdx = field,
+               .r8 = data,
+               .r9 = mask,
+       };
+
+       return seamcall(TDH_VP_WR, &args);
+}
+EXPORT_SYMBOL_GPL(tdh_vp_wr);
+
 u64 tdh_vp_init(struct tdx_vp *vp, u64 initial_rcx, u32 x2apicid)
 {
        struct tdx_module_args args = {
 
 #define TDH_VP_ADDCX                   4
 #define TDH_MNG_KEY_CONFIG             8
 #define TDH_MNG_CREATE                 9
+#define TDH_MNG_RD                     11
 #define TDH_VP_CREATE                  10
 #define TDH_MNG_KEY_FREEID             20
 #define TDH_MNG_INIT                   21
 #define TDH_VP_INIT                    22
 #define TDH_PHYMEM_PAGE_RDMD           24
+#define TDH_VP_RD                      26
 #define TDH_PHYMEM_PAGE_RECLAIM                28
 #define TDH_SYS_KEY_CONFIG             31
 #define TDH_SYS_INIT                   33
 #define TDH_SYS_TDMR_INIT              36
 #define TDH_PHYMEM_CACHE_WB            40
 #define TDH_PHYMEM_PAGE_WBINVD         41
+#define TDH_VP_WR                      43
 #define TDH_SYS_CONFIG                 45
 
 /*