[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e392b53a-fbaa-4724-07f4-171424144f70@redhat.com>
Date: Tue, 5 Apr 2022 14:58:04 +0200
From: Paolo Bonzini <pbonzini@...hat.com>
To: isaku.yamahata@...el.com, kvm@...r.kernel.org,
linux-kernel@...r.kernel.org
Cc: isaku.yamahata@...il.com, Jim Mattson <jmattson@...gle.com>,
erdemaktas@...gle.com, Connor Kuehl <ckuehl@...hat.com>,
Sean Christopherson <seanjc@...gle.com>
Subject: Re: [RFC PATCH v5 027/104] KVM: TDX: initialize VM with TDX specific
parameters
On 3/4/22 20:48, isaku.yamahata@...el.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
Powered by blists - more mailing lists