virtcontainers: Remove the pc machine

Keeping around two different x86 machines has no added value
and require more tests and maintenance. Prefer the q35 machine
since it has more features and drop the pc machine.

Fixes #1953
Depends-on: github.com/kata-containers/tests#3586
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
This commit is contained in:
Marcel Apfelbaum
2021-05-31 11:47:58 +03:00
parent 1faaf5f35d
commit 789a59549e
11 changed files with 20 additions and 81 deletions

View File

@@ -2095,8 +2095,6 @@ func genericBridges(number uint32, machineType string) []types.Bridge {
case QemuQ35:
// currently only pci bridges are supported
// qemu-2.10 will introduce pcie bridges
fallthrough
case QemuPC:
bt = types.PCI
case QemuVirt:
bt = types.PCI

View File

@@ -29,7 +29,7 @@ type qemuAmd64 struct {
const (
defaultQemuPath = "/usr/bin/qemu-system-x86_64"
defaultQemuMachineType = QemuPC
defaultQemuMachineType = QemuQ35
defaultQemuMachineOptions = "accel=kvm,kernel_irqchip"
@@ -44,7 +44,6 @@ const (
var qemuPaths = map[string]string{
QemuPCLite: "/usr/bin/qemu-lite-system-x86_64",
QemuPC: defaultQemuPath,
QemuQ35: defaultQemuPath,
QemuMicrovm: defaultQemuPath,
}
@@ -71,10 +70,6 @@ var supportedQemuMachines = []govmmQemu.Machine{
Type: QemuPCLite,
Options: defaultQemuMachineOptions,
},
{
Type: QemuPC,
Options: defaultQemuMachineOptions,
},
{
Type: QemuQ35,
Options: defaultQemuMachineOptions,
@@ -158,8 +153,7 @@ func newQemuArch(config HypervisorConfig) (qemuArch, error) {
func (q *qemuAmd64) capabilities() types.Capabilities {
var caps types.Capabilities
if q.qemuMachine.Type == QemuPC ||
q.qemuMachine.Type == QemuQ35 ||
if q.qemuMachine.Type == QemuQ35 ||
q.qemuMachine.Type == QemuVirt {
caps.SetBlockDeviceHotplugSupport()
}

View File

@@ -42,14 +42,10 @@ func TestQemuAmd64BadMachineType(t *testing.T) {
func TestQemuAmd64Capabilities(t *testing.T) {
assert := assert.New(t)
amd64 := newTestQemu(assert, QemuPC)
amd64 := newTestQemu(assert, QemuQ35)
caps := amd64.capabilities()
assert.True(caps.IsBlockDeviceHotplugSupported())
amd64 = newTestQemu(assert, QemuQ35)
caps = amd64.capabilities()
assert.True(caps.IsBlockDeviceHotplugSupported())
amd64 = newTestQemu(assert, QemuMicrovm)
caps = amd64.capabilities()
assert.False(caps.IsBlockDeviceHotplugSupported())
@@ -57,23 +53,11 @@ func TestQemuAmd64Capabilities(t *testing.T) {
func TestQemuAmd64Bridges(t *testing.T) {
assert := assert.New(t)
amd64 := newTestQemu(assert, QemuPC)
len := 5
amd64 := newTestQemu(assert, QemuMicrovm)
amd64.bridges(uint32(len))
bridges := amd64.getBridges()
assert.Len(bridges, len)
for i, b := range bridges {
id := fmt.Sprintf("%s-bridge-%d", types.PCI, i)
assert.Equal(types.PCI, b.Type)
assert.Equal(id, b.ID)
assert.NotNil(b.Devices)
}
amd64 = newTestQemu(assert, QemuMicrovm)
amd64.bridges(uint32(len))
bridges = amd64.getBridges()
assert.Nil(bridges)
amd64 = newTestQemu(assert, QemuQ35)
@@ -91,7 +75,7 @@ func TestQemuAmd64Bridges(t *testing.T) {
func TestQemuAmd64CPUModel(t *testing.T) {
assert := assert.New(t)
amd64 := newTestQemu(assert, QemuPC)
amd64 := newTestQemu(assert, QemuQ35)
expectedOut := defaultCPUModel
model := amd64.cpuModel()
@@ -108,7 +92,7 @@ func TestQemuAmd64CPUModel(t *testing.T) {
func TestQemuAmd64MemoryTopology(t *testing.T) {
assert := assert.New(t)
amd64 := newTestQemu(assert, QemuPC)
amd64 := newTestQemu(assert, QemuQ35)
memoryOffset := uint64(1024)
hostMem := uint64(100)
@@ -139,7 +123,7 @@ func TestQemuAmd64AppendImage(t *testing.T) {
machinesCopy := make([]govmmQemu.Machine, len(supportedQemuMachines))
assert.Equal(len(supportedQemuMachines), copy(machinesCopy, supportedQemuMachines))
cfg := qemuConfig(QemuPC)
cfg := qemuConfig(QemuQ35)
cfg.ImagePath = f.Name()
cfg.DisableImageNvdimm = false
amd64, err := newQemuArch(cfg)
@@ -189,41 +173,18 @@ func TestQemuAmd64AppendBridges(t *testing.T) {
var devices []govmmQemu.Device
assert := assert.New(t)
// check PC
amd64 := newTestQemu(assert, QemuPC)
// Check Q35
amd64 := newTestQemu(assert, QemuQ35)
amd64.bridges(1)
bridges := amd64.getBridges()
assert.Len(bridges, 1)
devices = amd64.appendBridges(devices)
assert.Len(devices, 1)
expectedOut := []govmmQemu.Device{
govmmQemu.BridgeDevice{
Type: govmmQemu.PCIBridge,
Bus: defaultPCBridgeBus,
ID: bridges[0].ID,
Chassis: 1,
SHPC: true,
Addr: "2",
},
}
assert.Equal(expectedOut, devices)
// Check Q35
amd64 = newTestQemu(assert, QemuQ35)
amd64.bridges(1)
bridges = amd64.getBridges()
assert.Len(bridges, 1)
devices = []govmmQemu.Device{}
devices = amd64.appendBridges(devices)
assert.Len(devices, 1)
expectedOut = []govmmQemu.Device{
expectedOut := []govmmQemu.Device{
govmmQemu.BridgeDevice{
Type: govmmQemu.PCIBridge,
Bus: defaultBridgeBus,
@@ -240,7 +201,7 @@ func TestQemuAmd64AppendBridges(t *testing.T) {
func TestQemuAmd64WithInitrd(t *testing.T) {
assert := assert.New(t)
cfg := qemuConfig(QemuPC)
cfg := qemuConfig(QemuQ35)
cfg.InitrdPath = "dummy-initrd"
amd64, err := newQemuArch(cfg)
assert.NoError(err)
@@ -282,7 +243,7 @@ func TestQemuAmd64AppendProtectionDevice(t *testing.T) {
var devices []govmmQemu.Device
assert := assert.New(t)
amd64 := newTestQemu(assert, QemuPC)
amd64 := newTestQemu(assert, QemuQ35)
id := amd64.(*qemuAmd64).devLoadersCount
firmware := "tdvf.fd"

View File

@@ -212,9 +212,6 @@ const (
// QemuPCLite is the QEMU pc-lite machine type for amd64
QemuPCLite = "pc-lite"
// QemuPC is the QEMU pc machine type for amd64
QemuPC = "pc"
// QemuQ35 is the QEMU Q35 machine type for amd64
QemuQ35 = "q35"

View File

@@ -28,7 +28,7 @@ const (
)
var qemuArchBaseMachine = govmmQemu.Machine{
Type: "pc",
Type: "q35",
}
var qemuArchBaseQemuPaths = map[string]string{
@@ -143,7 +143,7 @@ func TestQemuAddDeviceToBridge(t *testing.T) {
// addDeviceToBridge successfully
q := newQemuArchBase()
q.qemuMachine.Type = QemuPC
q.qemuMachine.Type = QemuQ35
q.bridges(1)
for i := uint32(1); i <= types.PCIBridgeMaxCapacity; i++ {
@@ -559,10 +559,6 @@ func TestQemuArchBaseAppendIOMMU(t *testing.T) {
CachingMode: true,
},
}
// Test IOMMU is not appended to PC machine type
qemuArchBase.qemuMachine.Type = QemuPC
devices, err = qemuArchBase.appendIOMMU(devices)
assert.Error(err)
qemuArchBase.qemuMachine.Type = QemuQ35
devices, err = qemuArchBase.appendIOMMU(devices)

View File

@@ -362,7 +362,7 @@ func TestQemuQemuPath(t *testing.T) {
qemuConfig.HypervisorPath = expectedPath
qkvm := &qemuArchBase{
qemuMachine: govmmQemu.Machine{
Type: "pc",
Type: "q35",
Options: "",
},
qemuExePath: expectedPath,