mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-24 09:34:24 +01:00
This PR prepares for the s390x support. It introduces: - a generalization of ccw and pci devices. The variables for the pci devices have been renamed by removing the Pci suffix. They have been moved to the qemu_arch_base.go - the mapping isVirtioPCI has been move to qemu_arch_base.go because in this way a different mapping can be added for other architecture (e.g s390x) - the functions QemuNetdevParam and QemuDeviceParam have been moved to qemu_arch_base.go. In this way, they could be reimplemented for other architecture for the case VHOSTUSER - a function disableModern has been introduced to check if the device is a pci device and then returns the right parameters. In the case of ccw devices, they don't have the disable-modern flag - a function mqParameter has been introduced to return the right parameters for the mq case. The virtio-net-ccw device doesn't have the vectors flag - in qemu_arch_base_test.go contains the test and strings that can be overwritten for other architectures (e.g s390). The devices names and the flags for the devices can be overwritten. - the string for the romfile has been replaced by a variable romfile that could be left empty if the devices doesn't support a romfile as for the ccw devices for s390. - clean-up: the disable-modern=on/off options have been changed to disable-modern=true/false. In the code there was a mixture of on/true off/false Fixes: #61 Co-authored-by: Yash D Jain <ydjainopensource@gmail.com> Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
104 lines
2.7 KiB
Go
104 lines
2.7 KiB
Go
// +build !s390x
|
|
|
|
/*
|
|
// Copyright (c) 2016 Intel Corporation
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
*/
|
|
|
|
package qemu
|
|
|
|
const (
|
|
// Virtio9P is the 9pfs device driver.
|
|
Virtio9P DeviceDriver = "virtio-9p-pci"
|
|
|
|
// VirtioSerial is the serial device driver.
|
|
VirtioSerial DeviceDriver = "virtio-serial-pci"
|
|
|
|
// VirtioNet is the virt-io pci networking device driver.
|
|
VirtioNet DeviceDriver = VirtioNetPCI
|
|
|
|
// Vfio is the vfio driver
|
|
Vfio DeviceDriver = "vfio-pci"
|
|
|
|
// VirtioScsi is the virtio-scsi device
|
|
VirtioScsi DeviceDriver = "virtio-scsi-pci"
|
|
|
|
// VHostVSock is a generic Vsock vhost device
|
|
VHostVSock DeviceDriver = "vhost-vsock-pci"
|
|
)
|
|
|
|
// isVirtioPCI is a map indicating if a DeviceDriver is considered as a
|
|
// virtio PCI device, which is helpful to determine if the option "romfile"
|
|
// applies or not to this specific device.
|
|
var isVirtioPCI = map[DeviceDriver]bool{
|
|
NVDIMM: false,
|
|
Virtio9P: true,
|
|
VirtioNetPCI: true,
|
|
VirtioSerial: true,
|
|
VirtioBlock: true,
|
|
Console: false,
|
|
VirtioSerialPort: false,
|
|
VHostVSock: true,
|
|
VirtioRng: true,
|
|
VirtioBalloon: true,
|
|
VhostUserSCSI: true,
|
|
VhostUserBlk: true,
|
|
Vfio: true,
|
|
VirtioScsi: true,
|
|
PCIBridgeDriver: true,
|
|
PCIePCIBridgeDriver: true,
|
|
}
|
|
|
|
// QemuNetdevParam converts to the QEMU -netdev parameter notation
|
|
func (n NetDeviceType) QemuNetdevParam() string {
|
|
switch n {
|
|
case TAP:
|
|
return "tap"
|
|
case MACVTAP:
|
|
return "tap"
|
|
case IPVTAP:
|
|
return "tap"
|
|
case VETHTAP:
|
|
return "tap" // -netdev type=tap -device virtio-net-pci
|
|
case VFIO:
|
|
return "" // -device vfio-pci (no netdev)
|
|
case VHOSTUSER:
|
|
return "vhost-user" // -netdev type=vhost-user (no device)
|
|
default:
|
|
return ""
|
|
|
|
}
|
|
}
|
|
|
|
// QemuDeviceParam converts to the QEMU -device parameter notation
|
|
func (n NetDeviceType) QemuDeviceParam() DeviceDriver {
|
|
switch n {
|
|
case TAP:
|
|
return "virtio-net-pci"
|
|
case MACVTAP:
|
|
return "virtio-net-pci"
|
|
case IPVTAP:
|
|
return "virtio-net-pci"
|
|
case VETHTAP:
|
|
return "virtio-net-pci" // -netdev type=tap -device virtio-net-pci
|
|
case VFIO:
|
|
return "vfio-pci" // -device vfio-pci (no netdev)
|
|
case VHOSTUSER:
|
|
return "" // -netdev type=vhost-user (no device)
|
|
default:
|
|
return ""
|
|
|
|
}
|
|
}
|