qemu: support appending a vIOMMU device

Add a new function appendIOMMU() to the qemuArch interface
and provide an implementation on amd64 architecture.

Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
This commit is contained in:
Adrian Moreno
2020-03-04 15:35:37 +01:00
committed by Fabiano Fidêncio
parent 03735fb9ee
commit 7faaa06a52
5 changed files with 59 additions and 0 deletions

View File

@@ -566,3 +566,27 @@ func TestQemuArchBaseAppendNetwork(t *testing.T) {
assert.NoError(err)
assert.Equal(expectedOut, devices)
}
func TestQemuArchBaseAppendIOMMU(t *testing.T) {
var devices []govmmQemu.Device
var err error
assert := assert.New(t)
qemuArchBase := newQemuArchBase()
expectedOut := []govmmQemu.Device{
govmmQemu.IommuDev{
Intremap: true,
DeviceIotlb: true,
CachingMode: true,
},
}
// Test IOMMU is not appended to PC machine type
qemuArchBase.machineType = QemuPC
devices, err = qemuArchBase.appendIOMMU(devices)
assert.Error(err)
qemuArchBase.machineType = QemuQ35
devices, err = qemuArchBase.appendIOMMU(devices)
assert.NoError(err)
assert.Equal(expectedOut, devices)
}