diff --git a/src/runtime/virtcontainers/hypervisor.go b/src/runtime/virtcontainers/hypervisor.go index 955da7d107..b8482e7b4b 100644 --- a/src/runtime/virtcontainers/hypervisor.go +++ b/src/runtime/virtcontainers/hypervisor.go @@ -49,6 +49,9 @@ const ( // DragonballHypervisor is the Dragonball hypervisor. DragonballHypervisor HypervisorType = "dragonball" + // VirtFrameworkHypervisor is the Darwin Virtualization.framework hypervisor + VirtframeworkHypervisor HypervisorType = "virtframework" + // MockHypervisor is a mock hypervisor for testing purposes MockHypervisor HypervisorType = "mock" @@ -84,6 +87,8 @@ var ( ) // In some architectures the maximum number of vCPUs depends on the number of physical cores. +// TODO (dcantah): Find a suitable value for darwin/vfw. Seems perf degrades if > number of host +// cores. var defaultMaxVCPUs = govmm.MaxVCPUs() // agnostic list of kernel root parameters for NVDIMM @@ -177,6 +182,9 @@ func (hType *HypervisorType) Set(value string) error { case "dragonball": *hType = DragonballHypervisor return nil + case "virtframework": + *hType = VirtframeworkHypervisor + return nil case "mock": *hType = MockHypervisor return nil diff --git a/src/runtime/virtcontainers/hypervisor_darwin.go b/src/runtime/virtcontainers/hypervisor_darwin.go new file mode 100644 index 0000000000..26956eced7 --- /dev/null +++ b/src/runtime/virtcontainers/hypervisor_darwin.go @@ -0,0 +1,26 @@ +// Copyright (c) 2023 Apple Inc. +// +// SPDX-License-Identifier: Apache-2.0 +// + +package virtcontainers + +import ( + "fmt" +) + +// NewHypervisor returns a hypervisor from a hypervisor type. +func NewHypervisor(hType HypervisorType) (Hypervisor, error) { + switch hType { + case VirtframeworkHypervisor: + return &virtFramework{}, nil + case MockHypervisor: + return &mockHypervisor{}, nil + default: + return nil, fmt.Errorf("Unknown hypervisor type %s", hType) + } +} + +func availableGuestProtection() (guestProtection, error) { + return noneProtection, nil +} diff --git a/src/runtime/virtcontainers/hypervisor_linux.go b/src/runtime/virtcontainers/hypervisor_linux.go index 3d81c1ada0..f419e0982f 100644 --- a/src/runtime/virtcontainers/hypervisor_linux.go +++ b/src/runtime/virtcontainers/hypervisor_linux.go @@ -27,7 +27,6 @@ func generateVMSocket(id string, vmStogarePath string) (interface{}, error) { // NewHypervisor returns an hypervisor from a hypervisor type. func NewHypervisor(hType HypervisorType) (Hypervisor, error) { - switch hType { case QemuHypervisor: return &qemu{}, nil