[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1eaa9ba08d383a7db785491a9bdf667e780a76cc.1752038726.git.kai.huang@intel.com>
Date: Wed, 9 Jul 2025 17:38:00 +1200
From: Kai Huang <kai.huang@...el.com>
To: seanjc@...gle.com,
pbonzini@...hat.com
Cc: kvm@...r.kernel.org,
thomas.lendacky@....com,
nikunj@....com,
bp@...en8.de,
isaku.yamahata@...el.com,
xiaoyao.li@...el.com,
rick.p.edgecombe@...el.com,
linux-kernel@...r.kernel.org
Subject: [PATCH 2/2] KVM: x86: Reject KVM_SET_TSC_KHZ VM ioctl when vCPU has been created
Reject the KVM_SET_TSC_KHZ VM ioctl when there's vCPU has already been
created.
The VM scope KVM_SET_TSC_KHZ ioctl is used to set up the default TSC
frequency that all subsequent created vCPUs use. It is only intended to
be called before any vCPU is created. Allowing it to be called after
that only results in confusion but nothing good.
Note this is an ABI change. But currently in Qemu (the de facto
userspace VMM) only TDX uses this VM ioctl, and it is only called once
before creating any vCPU, therefore the risk of breaking userspace is
pretty low.
Suggested-by: Sean Christopherson <seanjc@...gle.com>
Signed-off-by: Kai Huang <kai.huang@...el.com>
---
arch/x86/kvm/x86.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 699ca5e74bba..e5e55d549468 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -7194,6 +7194,10 @@ int kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg)
u32 user_tsc_khz;
r = -EINVAL;
+
+ if (kvm->created_vcpus)
+ goto out;
+
user_tsc_khz = (u32)arg;
if (kvm_caps.has_tsc_control &&
--
2.50.0
Powered by blists - more mailing lists