From 9c767d97ef4d9cbc841c73ee30670acad353b506 Mon Sep 17 00:00:00 2001 From: wanyaoqi <18528551+wanyaoqi@users.noreply.github.com> Date: Tue, 20 Dec 2022 20:38:57 +0800 Subject: [PATCH] fix(host): don't hide kvm cpu feature on nested virt (#15579) --- pkg/hostman/guestman/arch/arch.go | 3 +-- pkg/hostman/guestman/arch/x86.go | 7 +++++-- pkg/hostman/guestman/qemu-kvmhelper.go | 11 +---------- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/pkg/hostman/guestman/arch/arch.go b/pkg/hostman/guestman/arch/arch.go index a7d57e9e4b..ed5b6825d6 100644 --- a/pkg/hostman/guestman/arch/arch.go +++ b/pkg/hostman/guestman/arch/arch.go @@ -33,13 +33,12 @@ type Arch interface { } type KVMGuestInstance interface { - HasGpu() bool IsOldWindows() bool GetOsName() string GetKernelVersion() string CpuMax() (uint, error) - IsEnabledNestedVirt() bool + IsNestedVirt() bool IsKvmSupport() bool } diff --git a/pkg/hostman/guestman/arch/x86.go b/pkg/hostman/guestman/arch/x86.go index fd145ecc80..de3ef9256d 100644 --- a/pkg/hostman/guestman/arch/x86.go +++ b/pkg/hostman/guestman/arch/x86.go @@ -132,7 +132,10 @@ func (x86 *X86) GenerateCpuDesc(cpus uint, s KVMGuestInstance) (*desc.SGuestCpu, if err != nil { return nil, err } - hideKVM := !s.IsEnabledNestedVirt() || s.HasGpu() + var hideKVM = true + if s.IsNestedVirt() { + hideKVM = false + } var hostCPUPassthrough = options.HostOptions.HostCpuPassthrough var isCPUIntel = sysutils.IsProcessorIntel() @@ -171,7 +174,7 @@ func (x86 *X86) GenerateCpuDesc(cpus uint, s KVMGuestInstance) (*desc.SGuestCpu, } } - if !hideKVM { + if hideKVM { features["kvm"] = false } } else { diff --git a/pkg/hostman/guestman/qemu-kvmhelper.go b/pkg/hostman/guestman/qemu-kvmhelper.go index 806a652803..bfd37b586b 100644 --- a/pkg/hostman/guestman/qemu-kvmhelper.go +++ b/pkg/hostman/guestman/qemu-kvmhelper.go @@ -115,7 +115,7 @@ func (s *SKVMGuestInstance) IsKvmSupport() bool { return s.manager.GetHost().IsKvmSupport() } -func (s *SKVMGuestInstance) IsEnabledNestedVirt() bool { +func (s *SKVMGuestInstance) IsNestedVirt() bool { return s.manager.GetHost().IsNestedVirtualization() } @@ -733,15 +733,6 @@ func (s *SKVMGuestInstance) startMemCleaner() error { return nil } -func (s *SKVMGuestInstance) HasGpu() bool { - for i := 0; i < len(s.Desc.IsolatedDevices); i++ { - if s.Desc.IsolatedDevices[i].DevType != api.USB_TYPE { - return true - } - } - return false -} - func (s *SKVMGuestInstance) gpusHasVga() bool { manager := s.manager.GetHost().GetIsolatedDeviceManager() for i := 0; i < len(s.Desc.IsolatedDevices); i++ {