On Fri, Mar 22, 2024 at 04:33:21AM +0000, "Huang, Kai" <kai.huang@xxxxxxxxx> wrote: > > > > > > So how about we have some macros: > > > > > > static inline bool is_seamcall_err_kernel_defined(u64 err) > > > { > > > return err & TDX_SW_ERROR; > > > } > > > > > > #define TDX_KVM_SEAMCALL(_kvm, _seamcall_func, _fn, _args) \ > > > ({ \ > > > u64 _ret = _seamcall_func(_fn, _args); > > > KVM_BUG_ON(_kvm, is_seamcall_err_kernel_defined(_ret)); > > > _ret; > > > }) > > > > As we can move out KVM_BUG_ON() to the call site, we can simply have > > seamcall() or seamcall_ret(). > > The call site has to check error. whether it is TDX_SW_ERROR or not. > > And if it hit the unexpected error, it will mark the guest bugged. > > How many call sites are we talking about? > > I think handling KVM_BUG_ON() in macro should be able to eliminate bunch of > individual KVM_BUG_ON()s in these call sites? 16: custom error check is needed 6: always error So I'd like to consistently have error check in KVM code, not in macro or wrapper. -- Isaku Yamahata <isaku.yamahata@xxxxxxxxx>