On Tue, Mar 19, 2024 at 10:41:09PM -0700, Isaku Yamahata <isaku.yamahata@xxxxxxxxx> wrote: > On Wed, Mar 20, 2024 at 12:11:17AM +0000, > "Edgecombe, Rick P" <rick.p.edgecombe@xxxxxxxxx> wrote: > > > On Tue, 2024-03-19 at 17:09 -0700, Isaku Yamahata wrote: > > > > The helper abstracts setting the arguments into the proper > > > > registers > > > > fields passed in, but doesn't abstract pulling the result out from > > > > the > > > > register fields. Then the caller has to manually extract them in > > > > this > > > > verbose way. Why not have the helper do both? > > > > > > Yes. Let me update those arguments. > > > > What were you thinking exactly, like? > > > > tdh_mem_sept_add(kvm_tdx, gpa, tdx_level, hpa, &entry, &level_state); > > > > And for the other helpers? > > I have the following four helpers. Other helpers will have no out argument. > > tdh_mem_sept_add(kvm_tdx, gpa, tdx_level, hpa, &entry, &level_state); > tdh_mem_page_aug(kvm_tdx, gpa, hpa, &entry, &level_state); > tdh_mem_page_remove(kvm_tdx, gpa, tdx_level, &entry, &level_state); > tdh_mem_range_block(kvm_tdx, gpa, tdx_level, &entry, &level_state); By updating the code, I found that tdh_mem_range_block() doesn't need out variables. and tdh_vp_rd() needs output. tdh_mem_range_block() doesn't need the out. u64 tdh_vp_rd(struct vcpu_tdx *tdx, u64 field, u64 *value) -- Isaku Yamahata <isaku.yamahata@xxxxxxxxx>