| Date | Tue, 5 Apr 2022 14:58:04 +0200 | Subject | Re: [RFC PATCH v5 027/104] KVM: TDX: initialize VM with TDX specific parameters | From | Paolo Bonzini <> |
| |
On 3/4/22 20:48, isaku.yamahata@intel.com wrote: > + td_params->attributes = init_vm->attributes; > + if (td_params->attributes & TDX_TD_ATTRIBUTE_PERFMON) { > + pr_warn("TD doesn't support perfmon. KVM needs to save/restore " > + "host perf registers properly.\n"); > + return -EOPNOTSUPP; > + }
Why does KVM have to hardcode this (and LBR/AMX below)? Is the level of hardware support available from tdx_caps, for example through the CPUID configs (0xA for this one, 0xD for LBR and AMX)?
> + /* PT can be exposed to TD guest regardless of KVM's XSS support */ > + guest_supported_xss &= (supported_xss | XFEATURE_MASK_PT); > + td_params->xfam = guest_supported_xcr0 | guest_supported_xss; > + if (td_params->xfam & TDX_TD_XFAM_LBR) { > + pr_warn("TD doesn't support LBR. KVM needs to save/restore " > + "IA32_LBR_DEPTH properly.\n"); > + return -EOPNOTSUPP; > + } > + > + if (td_params->xfam & TDX_TD_XFAM_AMX) { > + pr_warn("TD doesn't support AMX. KVM needs to save/restore " > + "IA32_XFD, IA32_XFD_ERR properly.\n"); > + return -EOPNOTSUPP; > + }
> > + if (init_vm->tsc_khz) > + guest_tsc_khz = init_vm->tsc_khz; > + else > + guest_tsc_khz = max_tsc_khz;
You can just use kvm->arch.default_tsc_khz in the latest kvm/queue.
> +#define BUILD_BUG_ON_MEMCPY(dst, src) \ > + do { \ > + BUILD_BUG_ON(sizeof(dst) != sizeof(src)); \ > + memcpy((dst), (src), sizeof(dst)); \ > + } while (0) > + > + BUILD_BUG_ON_MEMCPY(td_params->mrconfigid, init_vm->mrconfigid); > + BUILD_BUG_ON_MEMCPY(td_params->mrowner, init_vm->mrowner); > + BUILD_BUG_ON_MEMCPY(td_params->mrownerconfig, init_vm->mrownerconfig); > +
Please rename to MEMCPY_SAME_SIZE.
Thanks,
Paolo
|