On Thu, 24 Oct 2019 07:40:26 -0400 Janosch Frank <frankja@xxxxxxxxxxxxx> wrote: > +/* > + * Generic cmd executor for calls that only transport the cpu or guest > + * handle and the command. > + */ > +static inline int uv_cmd_nodata(u64 handle, u16 cmd, u32 *ret) > +{ > + int rc; > + struct uv_cb_nodata uvcb = { > + .header.cmd = cmd, > + .header.len = sizeof(uvcb), > + .handle = handle, > + }; > + > + WARN(!handle, "No handle provided to Ultravisor call cmd %x\n", cmd); > + rc = uv_call(0, (u64)&uvcb); > + if (ret) > + *ret = *(u32 *)&uvcb.header.rc; > + return rc ? -EINVAL : 0; Why go ahead with doing the uv call if it doesn't have a handle anyway? Or why warn, if you already know it is going to fail? I assume this can only happen if you have a logic error in the kvm code? > +}