From a227ab852ae92c9036e5748ec1b1d2a09229a75b Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Fri, 14 Dec 2018 15:11:44 -0800 Subject: [PATCH] virtcontainers: hypervisor: Add capability regarding multiqueue support Each hypervisor is different and supports different options regarding the network interface it creates. In particular, the multiqueue option is not supported by Firecracker and should not be assumed by default. Signed-off-by: Sebastien Boeuf --- virtcontainers/capabilities.go | 12 ++++++++++++ virtcontainers/qemu_amd64.go | 2 ++ virtcontainers/qemu_arch_base.go | 1 + virtcontainers/qemu_ppc64le.go | 2 ++ 4 files changed, 17 insertions(+) diff --git a/virtcontainers/capabilities.go b/virtcontainers/capabilities.go index 8760c9969..6eb34c3b8 100644 --- a/virtcontainers/capabilities.go +++ b/virtcontainers/capabilities.go @@ -8,6 +8,7 @@ package virtcontainers const ( blockDeviceSupport = 1 << iota blockDeviceHotplugSupport + multiQueueSupport ) type capabilities struct { @@ -35,3 +36,14 @@ func (caps *capabilities) isBlockDeviceHotplugSupported() bool { func (caps *capabilities) setBlockDeviceHotplugSupport() { caps.flags |= blockDeviceHotplugSupport } + +func (caps *capabilities) isMultiQueueSupported() bool { + if caps.flags&multiQueueSupport != 0 { + return true + } + return false +} + +func (caps *capabilities) setMultiQueueSupport() { + caps.flags |= multiQueueSupport +} diff --git a/virtcontainers/qemu_amd64.go b/virtcontainers/qemu_amd64.go index 5eb002ff2..8dfddde93 100644 --- a/virtcontainers/qemu_amd64.go +++ b/virtcontainers/qemu_amd64.go @@ -108,6 +108,8 @@ func (q *qemuAmd64) capabilities() capabilities { caps.setBlockDeviceHotplugSupport() } + caps.setMultiQueueSupport() + return caps } diff --git a/virtcontainers/qemu_arch_base.go b/virtcontainers/qemu_arch_base.go index 63f506553..864edfe37 100644 --- a/virtcontainers/qemu_arch_base.go +++ b/virtcontainers/qemu_arch_base.go @@ -237,6 +237,7 @@ func (q *qemuArchBase) kernelParameters(debug bool) []Param { func (q *qemuArchBase) capabilities() capabilities { var caps capabilities caps.setBlockDeviceHotplugSupport() + caps.setMultiQueueSupport() return caps } diff --git a/virtcontainers/qemu_ppc64le.go b/virtcontainers/qemu_ppc64le.go index 6b5d8b654..05d37ce75 100644 --- a/virtcontainers/qemu_ppc64le.go +++ b/virtcontainers/qemu_ppc64le.go @@ -94,6 +94,8 @@ func (q *qemuPPC64le) capabilities() capabilities { caps.setBlockDeviceHotplugSupport() } + caps.setMultiQueueSupport() + return caps }