mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 15:03:53 +02:00
KVM TDX fixes for 6.16
- Fix a formatting goof in the TDX documentation. - Reject KVM_SET_TSC_KHZ for guests with a protected TSC (currently only TDX). - Ensure struct kvm_tdx_capabilities fields that are not explicitly set by KVM are zeroed. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEKTobbabEP7vbhhN9OlYIJqCjN/0FAmh5C9oACgkQOlYIJqCj N/1IlRAArAgX2C69qzTWougXFbwl0qiJhY3RpM+jCkiQsSkgICs8kTBSp5OFDRKE njtMvdCrhDSXGabRmOlTOjlbauZUU7Ady9Z9GIevVskTu/feknU3I33CQJMBUjCI 49NG3o3p1vUWluK+WzzclHeojgAFVrPdoWZ3SLhgZf/N9s/hElI46bqpNN/zZOYd x2oDC1YJiRDoQmAF/hGDZxvQSZB7ZWvufUEi/lFomjSbWMecn26ynNaFe8jMdjyj cBXmsIn41qLMOdVZt+C5h7btcSar1uf0CZ4BfgZbKiAwZn6YH76rzBrAARP15rsI iKRfnOTaENx2SkKEX17Xlh1mOFKIMFP5wl2oQbW0pHMEObdUgIcwUlzOtKHmN/Nz dCN3W1sYat0fGec4lcx7emNmDDW8EfhmznS9eGo67okGKEbtUnzsDR01Ob335oVN F8ORqT1vthn2d3Na1FyAo3a5NKhL2/J67lNThDKzfdiQ7UxYeTjsFW4ys3Li6jDM H+LIcXpxLfEwbesbuCHAoyPbAcROFLuNgbTBr1CNm3zsfeqHzxeZAk7aUX6wbBV1 +F7C7ANfvhae8OBkZoAgJJ3aJEbeloXboQUiijzM12l6Qz+shcpfqmIy5ZrZHQeI SKJhHlKDa11vy488sT23Pz1go23sQU83ZbB0x7sdcyOH+1dqCYQ= =V3cQ -----END PGP SIGNATURE----- Merge tag 'kvm-x86-fixes-6.16-rc7' of https://github.com/kvm-x86/linux into HEAD KVM TDX fixes for 6.16 - Fix a formatting goof in the TDX documentation. - Reject KVM_SET_TSC_KHZ for guests with a protected TSC (currently only TDX). - Ensure struct kvm_tdx_capabilities fields that are not explicitly set by KVM are zeroed.
This commit is contained in:
commit
4b7d440de2
|
@ -2008,6 +2008,13 @@ If the KVM_CAP_VM_TSC_CONTROL capability is advertised, this can also
|
|||
be used as a vm ioctl to set the initial tsc frequency of subsequently
|
||||
created vCPUs.
|
||||
|
||||
For TSC protected Confidential Computing (CoCo) VMs where TSC frequency
|
||||
is configured once at VM scope and remains unchanged during VM's
|
||||
lifetime, the vm ioctl should be used to configure the TSC frequency
|
||||
and the vcpu ioctl is not supported.
|
||||
|
||||
Example of such CoCo VMs: TDX guests.
|
||||
|
||||
4.56 KVM_GET_TSC_KHZ
|
||||
--------------------
|
||||
|
||||
|
@ -7230,8 +7237,8 @@ inputs and outputs of the TDVMCALL. Currently the following values of
|
|||
placed in fields from ``r11`` to ``r14`` of the ``get_tdvmcall_info``
|
||||
field of the union.
|
||||
|
||||
* ``TDVMCALL_SETUP_EVENT_NOTIFY_INTERRUPT``: the guest has requested to
|
||||
set up a notification interrupt for vector ``vector``.
|
||||
* ``TDVMCALL_SETUP_EVENT_NOTIFY_INTERRUPT``: the guest has requested to
|
||||
set up a notification interrupt for vector ``vector``.
|
||||
|
||||
KVM may add support for more values in the future that may cause a userspace
|
||||
exit, even without calls to ``KVM_ENABLE_CAP`` or similar. In this case,
|
||||
|
|
|
@ -2269,25 +2269,26 @@ static int tdx_get_capabilities(struct kvm_tdx_cmd *cmd)
|
|||
const struct tdx_sys_info_td_conf *td_conf = &tdx_sysinfo->td_conf;
|
||||
struct kvm_tdx_capabilities __user *user_caps;
|
||||
struct kvm_tdx_capabilities *caps = NULL;
|
||||
u32 nr_user_entries;
|
||||
int ret = 0;
|
||||
|
||||
/* flags is reserved for future use */
|
||||
if (cmd->flags)
|
||||
return -EINVAL;
|
||||
|
||||
caps = kmalloc(sizeof(*caps) +
|
||||
caps = kzalloc(sizeof(*caps) +
|
||||
sizeof(struct kvm_cpuid_entry2) * td_conf->num_cpuid_config,
|
||||
GFP_KERNEL);
|
||||
if (!caps)
|
||||
return -ENOMEM;
|
||||
|
||||
user_caps = u64_to_user_ptr(cmd->data);
|
||||
if (copy_from_user(caps, user_caps, sizeof(*caps))) {
|
||||
if (get_user(nr_user_entries, &user_caps->cpuid.nent)) {
|
||||
ret = -EFAULT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (caps->cpuid.nent < td_conf->num_cpuid_config) {
|
||||
if (nr_user_entries < td_conf->num_cpuid_config) {
|
||||
ret = -E2BIG;
|
||||
goto out;
|
||||
}
|
||||
|
|
|
@ -6188,6 +6188,10 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
|
|||
u32 user_tsc_khz;
|
||||
|
||||
r = -EINVAL;
|
||||
|
||||
if (vcpu->arch.guest_tsc_protected)
|
||||
goto out;
|
||||
|
||||
user_tsc_khz = (u32)arg;
|
||||
|
||||
if (kvm_caps.has_tsc_control &&
|
||||
|
|
Loading…
Reference in New Issue
Block a user