diff --git a/qemu/qemu_arch_base_test.go b/qemu/qemu_arch_base_test.go index 93eac3ee56..108a0bfdbd 100644 --- a/qemu/qemu_arch_base_test.go +++ b/qemu/qemu_arch_base_test.go @@ -24,8 +24,6 @@ var ( deviceFSString = "-device virtio-9p-pci,disable-modern=true,fsdev=workload9p,mount_tag=rootfs,romfile=efi-virtio.rom -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,romfile=efi-virtio.rom" deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" - deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" - deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" deviceSerialString = "-device virtio-serial-pci,disable-modern=true,id=serial0,romfile=efi-virtio.rom" deviceVhostUserNetString = "-chardev socket,id=char1,path=/tmp/nonexistentsocket.socket -netdev type=vhost-user,id=net1,chardev=char1,vhostforce -device virtio-net-pci,netdev=net1,mac=00:11:22:33:44:55,romfile=efi-virtio.rom" deviceVSOCKString = "-device vhost-vsock-pci,disable-modern=true,id=vhost-vsock-pci0,guest-cid=4,romfile=efi-virtio.rom" diff --git a/qemu/qemu_test.go b/qemu/qemu_test.go index f5692f5013..c9538e836a 100644 --- a/qemu/qemu_test.go +++ b/qemu/qemu_test.go @@ -27,6 +27,13 @@ import ( const agentUUID = "4cb19522-1e18-439a-883a-f9b2a3a95f5e" const volumeUUID = "67d86208-b46c-4465-9018-e14187d4010" +var ( + deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,romfile=efi-virtio.rom" + deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-pci,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,disable-modern=true,mq=on,vectors=6,romfile=efi-virtio.rom" +) + +const DevNo = "fe.1.1234" + func testAppend(structure interface{}, expected string, t *testing.T) { var config Config testConfigAppend(&config, structure, expected, t) @@ -136,6 +143,10 @@ func TestAppendDeviceFS(t *testing.T) { ROMFile: "efi-virtio.rom", } + if isVirtioCCW[fsdev.Driver] { + fsdev.DevNo = DevNo + } + testAppend(fsdev, deviceFSString, t) } @@ -153,6 +164,10 @@ func TestAppendDeviceNetwork(t *testing.T) { ROMFile: "efi-virtio.rom", } + if isVirtioCCW[netdev.Driver] { + netdev.DevNo = DevNo + } + testAppend(netdev, deviceNetworkString, t) } @@ -180,6 +195,9 @@ func TestAppendDeviceNetworkMq(t *testing.T) { DisableModern: true, ROMFile: "efi-virtio.rom", } + if isVirtioCCW[netdev.Driver] { + netdev.DevNo = DevNo + } testAppend(netdev, deviceNetworkStringMq, t) } @@ -201,6 +219,10 @@ func TestAppendDeviceNetworkPCI(t *testing.T) { ROMFile: romfile, } + if !isVirtioPCI[netdev.Driver] { + t.Skip("Test valid only for PCI devices") + } + testAppend(netdev, deviceNetworkPCIString, t) } @@ -231,6 +253,10 @@ func TestAppendDeviceNetworkPCIMq(t *testing.T) { ROMFile: romfile, } + if !isVirtioPCI[netdev.Driver] { + t.Skip("Test valid only for PCI devices") + } + testAppend(netdev, deviceNetworkPCIStringMq, t) } @@ -241,6 +267,9 @@ func TestAppendDeviceSerial(t *testing.T) { DisableModern: true, ROMFile: romfile, } + if isVirtioCCW[sdev.Driver] { + sdev.DevNo = DevNo + } testAppend(sdev, deviceSerialString, t) } @@ -256,7 +285,9 @@ func TestAppendDeviceSerialPort(t *testing.T) { Path: "/tmp/char.sock", Name: "channel.0", } - + if isVirtioCCW[chardev.Driver] { + chardev.DevNo = DevNo + } testAppend(chardev, deviceSerialPortString, t) } @@ -273,7 +304,9 @@ func TestAppendDeviceBlock(t *testing.T) { DisableModern: true, ROMFile: romfile, } - + if isVirtioCCW[blkdev.Driver] { + blkdev.DevNo = DevNo + } testAppend(blkdev, deviceBlockString, t) } @@ -283,6 +316,10 @@ func TestAppendDeviceVFIO(t *testing.T) { ROMFile: romfile, } + if isVirtioCCW[Vfio] { + vfioDevice.DevNo = DevNo + } + testAppend(vfioDevice, deviceVFIOString, t) } @@ -295,6 +332,10 @@ func TestAppendVSOCK(t *testing.T) { ROMFile: romfile, } + if isVirtioCCW[VHostVSock] { + vsockDevice.DevNo = DevNo + } + testAppend(vsockDevice, deviceVSOCKString, t) } @@ -334,6 +375,11 @@ func TestAppendVirtioRng(t *testing.T) { ROMFile: romfile, } + if isVirtioCCW[VirtioRng] { + rngDevice.DevNo = DevNo + deviceString += ",devno=" + rngDevice.DevNo + } + testAppend(rngDevice, objectString+" "+deviceString, t) rngDevice.Filename = "/dev/urandom" @@ -389,6 +435,11 @@ func TestAppendDeviceSCSIController(t *testing.T) { ID: "foo", ROMFile: romfile, } + + if isVirtioCCW[VirtioScsi] { + scsiCon.DevNo = DevNo + } + testAppend(scsiCon, deviceSCSIControllerStr, t) scsiCon.Bus = "pci.0" diff --git a/qemu/qemus390x_test.go b/qemu/qemus390x_test.go index 1aac28434e..6b87d7b40c 100644 --- a/qemu/qemus390x_test.go +++ b/qemu/qemus390x_test.go @@ -23,17 +23,15 @@ import "testing" // -pci devices don't play well with Z hence replace them with corresponding -ccw devices // See https://wiki.qemu.org/Documentation/Platforms/S390X var ( - deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" - deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef" - deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on" - deviceNetworkPCIString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff" - deviceNetworkPCIStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,bus=/pci-bus/pcie.0,addr=ff,mq=on" - deviceSerialString = "-device virtio-serial-ccw,id=serial0" - deviceVSOCKString = "-device vhost-vsock-ccw,id=vhost-vsock-pci0,guest-cid=4" - deviceVFIOString = "-device vfio-ccw,host=02:10.0" - deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo" - deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1" - deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" + deviceFSString = "-device virtio-9p-ccw,fsdev=workload9p,mount_tag=rootfs,devno=" + DevNo + " -fsdev local,id=workload9p,path=/var/lib/docker/devicemapper/mnt/e31ebda2,security_model=none" + deviceNetworkString = "-netdev tap,id=tap0,vhost=on,ifname=ceth0,downscript=no,script=no -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,devno=" + DevNo + deviceNetworkStringMq = "-netdev tap,id=tap0,vhost=on,fds=3:4 -device driver=virtio-net-ccw,netdev=tap0,mac=01:02:de:ad:be:ef,mq=on,devno=" + DevNo + deviceSerialString = "-device virtio-serial-ccw,id=serial0,devno=" + DevNo + deviceVSOCKString = "-device vhost-vsock-ccw,id=vhost-vsock-pci0,guest-cid=4,devno=" + DevNo + deviceVFIOString = "-device vfio-ccw,host=02:10.0,devno=" + DevNo + deviceSCSIControllerStr = "-device virtio-scsi-ccw,id=foo,devno=" + DevNo + deviceSCSIControllerBusAddrStr = "-device virtio-scsi-ccw,id=foo,bus=pci.0,addr=00:04.0,iothread=iothread1,devno=" + DevNo + deviceBlockString = "-device virtio-blk,drive=hd0,scsi=off,config-wce=off,devno=" + DevNo + " -drive id=hd0,file=/var/lib/vm.img,aio=threads,format=qcow2,if=none" devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff" devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff" romfile = "" @@ -46,12 +44,13 @@ func TestAppendVirtioBalloon(t *testing.T) { var deviceString = "-device " + string(VirtioBalloon) deviceString += ",id=" + balloonDevice.ID + balloonDevice.DevNo = DevNo + devnoOptios := ",devno=" + DevNo var OnDeflateOnOMM = ",deflate-on-oom=on" var OffDeflateOnOMM = ",deflate-on-oom=off" - - testAppend(balloonDevice, deviceString+OffDeflateOnOMM, t) + testAppend(balloonDevice, deviceString+devnoOptios+OffDeflateOnOMM, t) balloonDevice.DeflateOnOOM = true - testAppend(balloonDevice, deviceString+OnDeflateOnOMM, t) + testAppend(balloonDevice, deviceString+devnoOptios+OnDeflateOnOMM, t) } diff --git a/qemu/qmp_test.go b/qemu/qmp_test.go index 125743f47b..8e4374e20b 100644 --- a/qemu/qmp_test.go +++ b/qemu/qmp_test.go @@ -557,7 +557,7 @@ func TestQMPNetCCWDeviceAdd(t *testing.T) { cfg := QMPConfig{Logger: qmpTestLogger{}} q := startQMPLoop(buf, cfg, connectedCh, disconnectedCh) checkVersion(t, connectedCh) - err := q.ExecuteNetCCWDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", "0x7", "", 8) + err := q.ExecuteNetCCWDeviceAdd(context.Background(), "br0", "virtio-0", "02:42:ac:11:00:02", DevNo, 8) if err != nil { t.Fatalf("Unexpected error %v", err) }