Build commandlines for character devices via JSON.
For devices using 'VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL' address
type 'qemuBuildDeviceAddressProps' will now generate the address. The
only special property is 'nr'. QEMU declares it as:
nr=<uint32> - (default: 4294967295)
The test fallout is caused by formatting addresses as decimal numbers
instead of hex as described in the commit which added
'qemuBuildDeviceAddressProps'.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_command.c | 224 ++++++++++--------
src/qemu/qemu_command.h | 10 +-
src/qemu/qemu_hotplug.c | 8 +-
...ault-cpu-kvm-pseries-2.7.ppc64-latest.args | 2 +-
...ault-cpu-kvm-pseries-3.1.ppc64-latest.args | 2 +-
...ault-cpu-kvm-pseries-4.2.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-2.7.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-3.1.ppc64-latest.args | 2 +-
...ault-cpu-tcg-pseries-4.2.ppc64-latest.args | 2 +-
.../ppc64-pseries-graphics.ppc64-latest.args | 2 +-
.../ppc64-pseries-headless.ppc64-latest.args | 2 +-
tests/qemuxml2argvdata/pseries-basic.args | 2 +-
.../pseries-cpu-compat-power9.args | 2 +-
.../qemuxml2argvdata/pseries-cpu-compat.args | 2 +-
tests/qemuxml2argvdata/pseries-cpu-exact.args | 2 +-
tests/qemuxml2argvdata/pseries-cpu-le.args | 2 +-
.../pseries-panic-missing.args | 2 +-
.../pseries-panic-no-address.args | 2 +-
.../pseries-serial-native.args | 2 +-
.../qemuxml2argvdata/pseries-usb-default.args | 2 +-
tests/qemuxml2argvdata/pseries-usb-kbd.args | 2 +-
tests/qemuxml2argvdata/pseries-usb-multi.args | 2 +-
.../pseries-vio-user-assigned.args | 4 +-
tests/qemuxml2argvdata/pseries-vio.args | 4 +-
.../qemuxml2argvdata/s390-panic-missing.args | 2 +-
.../serial-dev-chardev-iobase.args | 2 +-
.../tpm-emulator-spapr.ppc64-latest.args | 4 +-
27 files changed, 163 insertions(+), 133 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 81b1eb5980..954513ce83 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -745,8 +745,27 @@ qemuBuildDeviceAddressProps(virJSONValue *props,
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE:
return qemuBuildDeviceAddresDriveProps(props, domainDef, info);
+ case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL: {
+ const char *contAlias;
+ g_autofree char *bus = NULL;
+
+ if (!(contAlias = virDomainControllerAliasFind(domainDef,
+
VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL,
+
info->addr.vioserial.controller)))
+ return -1;
+
+ bus = g_strdup_printf("%s.%d", contAlias,
info->addr.vioserial.bus);
+
+ if (virJSONValueObjectAdd(props,
+ "s:bus", bus,
+ "i:nr", info->addr.vioserial.port,
+ NULL) < 0)
+ return -1;
+
+ return 0;
+ }
+
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
- case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390:
case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO:
@@ -5658,19 +5677,21 @@ qemuBuildMonitorCommandLine(virLogManager *logManager,
}
-static char *
-qemuBuildVirtioSerialPortDevStr(const virDomainDef *def,
- virDomainChrDef *dev)
+static virJSONValue *
+qemuBuildVirtioSerialPortDevProps(const virDomainDef *def,
+ virDomainChrDef *dev)
{
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
- const char *contAlias;
+ g_autoptr(virJSONValue) props = NULL;
+ const char *driver;
+ const char *targetname = NULL;
+ g_autofree char *chardev = NULL;
switch (dev->deviceType) {
case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE:
- virBufferAddLit(&buf, "virtconsole");
+ driver = "virtconsole";
break;
case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL:
- virBufferAddLit(&buf, "virtserialport");
+ driver = "virtserialport";
break;
default:
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
@@ -5687,14 +5708,6 @@ qemuBuildVirtioSerialPortDevStr(const virDomainDef *def,
return NULL;
}
- contAlias = virDomainControllerAliasFind(def,
VIR_DOMAIN_CONTROLLER_TYPE_VIRTIO_SERIAL,
-
dev->info.addr.vioserial.controller);
- if (!contAlias)
- return NULL;
-
- virBufferAsprintf(&buf, ",bus=%s.%d,nr=%d", contAlias,
- dev->info.addr.vioserial.bus,
- dev->info.addr.vioserial.port);
}
if (dev->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL &&
@@ -5707,29 +5720,50 @@ qemuBuildVirtioSerialPortDevStr(const virDomainDef *def,
return NULL;
}
- virBufferAsprintf(&buf, ",chardev=char%s,id=%s",
- dev->info.alias, dev->info.alias);
+ if (virJSONValueObjectCreate(&props,
+ "s:driver", driver,
+ NULL) < 0)
+ return NULL;
+
+ if (qemuBuildDeviceAddressProps(props, def, &dev->info) < 0)
+ return NULL;
+
+ chardev = g_strdup_printf("char%s", dev->info.alias);
+
if (dev->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL &&
(dev->source->type == VIR_DOMAIN_CHR_TYPE_SPICEVMC ||
dev->target.name)) {
- virBufferAsprintf(&buf, ",name=%s", dev->target.name
- ? dev->target.name : "com.redhat.spice.0");
+ if (dev->target.name)
+ targetname = dev->target.name;
+ else
+ targetname = "com.redhat.spice.0";
}
- return virBufferContentAndReset(&buf);
+ if (virJSONValueObjectAdd(props,
+ "s:chardev", chardev,
+ "s:id", dev->info.alias,
+ "S:name", targetname,
+ NULL) < 0)
+ return NULL;
+
+ return g_steal_pointer(&props);
}
-static char *
-qemuBuildSclpDevStr(virDomainChrDef *dev)
+
+static virJSONValue *
+qemuBuildSclpDevProps(virDomainChrDef *dev)
{
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
+ g_autoptr(virJSONValue) props = NULL;
+ g_autofree char *chardev = g_strdup_printf("char%s", dev->info.alias);
+ const char *driver = NULL;
+
if (dev->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE) {
switch (dev->targetType) {
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLP:
- virBufferAddLit(&buf, "sclpconsole");
+ driver = "sclpconsole";
break;
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLPLM:
- virBufferAddLit(&buf, "sclplmconsole");
+ driver = "sclplmconsole";
break;
}
} else {
@@ -5737,10 +5771,15 @@ qemuBuildSclpDevStr(virDomainChrDef *dev)
_("Cannot use slcp with devices other than console"));
return NULL;
}
- virBufferAsprintf(&buf, ",chardev=char%s,id=%s",
- dev->info.alias, dev->info.alias);
- return virBufferContentAndReset(&buf);
+ if (virJSONValueObjectCreate(&props,
+ "s:driver", driver,
+ "s:chardev", chardev,
+ "s:id", dev->info.alias,
+ NULL) < 0)
+ return NULL;
+
+ return g_steal_pointer(&props);
}
@@ -9460,12 +9499,14 @@ qemuBuildChrDeviceCommandLine(virCommand *cmd,
virDomainChrDef *chr,
virQEMUCaps *qemuCaps)
{
- g_autofree char *devstr = NULL;
+ g_autoptr(virJSONValue) props = NULL;
- if (qemuBuildChrDeviceStr(&devstr, def, chr, qemuCaps) < 0)
+ if (!(props = qemuBuildChrDeviceProps(def, chr, qemuCaps)))
+ return -1;
+
+ if (qemuBuildDeviceCommandlineFromJSON(cmd, props, qemuCaps) < 0)
return -1;
- virCommandAddArgList(cmd, "-device", devstr, NULL);
return 0;
}
@@ -10914,16 +10955,13 @@ qemuBuildCommandLine(virQEMUDriver *driver,
}
-/* This function generates the correct '-device' string for character
- * devices of each architecture.
- */
-static int
-qemuBuildSerialChrDeviceStr(char **deviceStr,
- const virDomainDef *def,
- virDomainChrDef *serial,
- virQEMUCaps *qemuCaps)
+static virJSONValue *
+qemuBuildSerialChrDeviceProps(const virDomainDef *def,
+ virDomainChrDef *serial,
+ virQEMUCaps *qemuCaps)
{
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
+ g_autoptr(virJSONValue) props = NULL;
+ g_autofree char *chardev = g_strdup_printf("char%s",
serial->info.alias);
virQEMUCapsFlags caps;
switch ((virDomainChrSerialTargetModel) serial->targetModel) {
@@ -10940,7 +10978,7 @@ qemuBuildSerialChrDeviceStr(char **deviceStr,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("'%s' is not supported in this QEMU
binary"),
virDomainChrSerialTargetModelTypeToString(serial->targetModel));
- return -1;
+ return NULL;
}
break;
@@ -10954,27 +10992,37 @@ qemuBuildSerialChrDeviceStr(char **deviceStr,
* branch and we will not have ended up here. */
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Invalid target model for serial device"));
- return -1;
+ return NULL;
}
- virBufferAsprintf(&buf, "%s,chardev=char%s,id=%s",
- virDomainChrSerialTargetModelTypeToString(serial->targetModel),
- serial->info.alias, serial->info.alias);
+ if (virJSONValueObjectCreate(&props,
+ "s:driver",
virDomainChrSerialTargetModelTypeToString(serial->targetModel),
+ "s:chardev", chardev,
+ "s:id", serial->info.alias,
+ NULL) < 0)
+ return NULL;
- if (qemuBuildDeviceAddressStr(&buf, def, &serial->info) < 0)
- return -1;
+ if (qemuBuildDeviceAddressProps(props, def, &serial->info) < 0)
+ return NULL;
- *deviceStr = virBufferContentAndReset(&buf);
- return 0;
+ return g_steal_pointer(&props);
}
-static int
-qemuBuildParallelChrDeviceStr(char **deviceStr,
- virDomainChrDef *chr)
+
+static virJSONValue *
+qemuBuildParallelChrDeviceProps(virDomainChrDef *chr)
{
- *deviceStr = g_strdup_printf("isa-parallel,chardev=char%s,id=%s",
- chr->info.alias, chr->info.alias);
- return 0;
+ g_autoptr(virJSONValue) props = NULL;
+ g_autofree char *chardev = g_strdup_printf("char%s", chr->info.alias);
+
+ if (virJSONValueObjectCreate(&props,
+ "s:driver", "isa-parallel",
+ "s:chardev", chardev,
+ "s:id", chr->info.alias,
+ NULL) < 0)
+ return NULL;
+
+ return g_steal_pointer(&props);
}
@@ -11013,48 +11061,38 @@ qemuBuildChannelGuestfwdNetdevProps(virDomainChrDef *chr)
}
-static int
-qemuBuildChannelChrDeviceStr(char **deviceStr,
- const virDomainDef *def,
- virDomainChrDef *chr)
+static virJSONValue *
+qemuBuildChannelChrDeviceProps(const virDomainDef *def,
+ virDomainChrDef *chr)
{
switch ((virDomainChrChannelTargetType)chr->targetType) {
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO:
- if (!(*deviceStr = qemuBuildVirtioSerialPortDevStr(def, chr)))
- return -1;
- break;
+ return qemuBuildVirtioSerialPortDevProps(def, chr);
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_GUESTFWD:
/* guestfwd is as a netdev handled separately */
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_XEN:
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_NONE:
case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST:
- return -1;
+ break;
}
- return 0;
+ return NULL;
}
-static int
-qemuBuildConsoleChrDeviceStr(char **deviceStr,
- const virDomainDef *def,
- virDomainChrDef *chr)
+static virJSONValue *
+qemuBuildConsoleChrDeviceProps(const virDomainDef *def,
+ virDomainChrDef *chr)
{
switch ((virDomainChrConsoleTargetType)chr->targetType) {
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLP:
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SCLPLM:
- if (!(*deviceStr = qemuBuildSclpDevStr(chr)))
- return -1;
- break;
+ return qemuBuildSclpDevProps(chr);
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_VIRTIO:
- if (!(*deviceStr = qemuBuildVirtioSerialPortDevStr(def, chr)))
- return -1;
- break;
+ return qemuBuildVirtioSerialPortDevProps(def, chr);
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_SERIAL:
- break;
-
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_NONE:
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_XEN:
case VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_UML:
@@ -11064,42 +11102,36 @@ qemuBuildConsoleChrDeviceStr(char **deviceStr,
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unsupported console target type %s"),
NULLSTR(virDomainChrConsoleTargetTypeToString(chr->targetType)));
- return -1;
+ break;
}
- return 0;
+ return NULL;
}
-int
-qemuBuildChrDeviceStr(char **deviceStr,
- const virDomainDef *vmdef,
- virDomainChrDef *chr,
- virQEMUCaps *qemuCaps)
-{
- int ret = -1;
+virJSONValue *
+qemuBuildChrDeviceProps(const virDomainDef *vmdef,
+ virDomainChrDef *chr,
+ virQEMUCaps *qemuCaps)
+{
switch ((virDomainChrDeviceType)chr->deviceType) {
case VIR_DOMAIN_CHR_DEVICE_TYPE_SERIAL:
- ret = qemuBuildSerialChrDeviceStr(deviceStr, vmdef, chr, qemuCaps);
- break;
+ return qemuBuildSerialChrDeviceProps(vmdef, chr, qemuCaps);
case VIR_DOMAIN_CHR_DEVICE_TYPE_PARALLEL:
- ret = qemuBuildParallelChrDeviceStr(deviceStr, chr);
- break;
+ return qemuBuildParallelChrDeviceProps(chr);
case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL:
- ret = qemuBuildChannelChrDeviceStr(deviceStr, vmdef, chr);
- break;
+ return qemuBuildChannelChrDeviceProps(vmdef, chr);
case VIR_DOMAIN_CHR_DEVICE_TYPE_CONSOLE:
- ret = qemuBuildConsoleChrDeviceStr(deviceStr, vmdef, chr);
- break;
+ return qemuBuildConsoleChrDeviceProps(vmdef, chr);
case VIR_DOMAIN_CHR_DEVICE_TYPE_LAST:
- return ret;
+ break;
}
- return ret;
+ return NULL;
}
diff --git a/src/qemu/qemu_command.h b/src/qemu/qemu_command.h
index cf57fc9a41..65e896b634 100644
--- a/src/qemu/qemu_command.h
+++ b/src/qemu/qemu_command.h
@@ -79,12 +79,10 @@ int qemuBuildTLSx509BackendProps(const char *tlspath,
int
qemuOpenChrChardevUNIXSocket(const virDomainChrSourceDef *dev) G_GNUC_NO_INLINE;
-/* Generate '-device' string for chardev device */
-int
-qemuBuildChrDeviceStr(char **deviceStr,
- const virDomainDef *vmdef,
- virDomainChrDef *chr,
- virQEMUCaps *qemuCaps);
+virJSONValue *
+qemuBuildChrDeviceProps(const virDomainDef *vmdef,
+ virDomainChrDef *chr,
+ virQEMUCaps *qemuCaps);
virJSONValue *
qemuBuildChannelGuestfwdNetdevProps(virDomainChrDef *chr);
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index f55cedc784..c7da38b49b 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -2181,7 +2181,7 @@ int qemuDomainAttachChrDevice(virQEMUDriver *driver,
qemuDomainObjPrivate *priv = vm->privateData;
virErrorPtr orig_err;
virDomainDef *vmdef = vm->def;
- g_autofree char *devstr = NULL;
+ g_autoptr(virJSONValue) devprops = NULL;
g_autoptr(virJSONValue) netdevprops = NULL;
virDomainChrSourceDef *dev = chr->source;
g_autofree char *charAlias = NULL;
@@ -2224,7 +2224,7 @@ int qemuDomainAttachChrDevice(virQEMUDriver *driver,
if (!(netdevprops = qemuBuildChannelGuestfwdNetdevProps(chr)))
goto cleanup;
} else {
- if (qemuBuildChrDeviceStr(&devstr, vmdef, chr, priv->qemuCaps) < 0)
+ if (!(devprops = qemuBuildChrDeviceProps(vmdef, chr, priv->qemuCaps)))
goto cleanup;
}
@@ -2251,8 +2251,8 @@ int qemuDomainAttachChrDevice(virQEMUDriver *driver,
goto exit_monitor;
}
- if (devstr) {
- if (qemuMonitorAddDevice(priv->mon, devstr) < 0)
+ if (devprops) {
+ if (qemuMonitorAddDeviceProps(priv->mon, &devprops) < 0)
goto exit_monitor;
}
diff --git a/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-2.7.ppc64-latest.args
b/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-2.7.ppc64-latest.args
index dde5d44d45..8a6f0a94fb 100644
--- a/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-2.7.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-2.7.ppc64-latest.args
@@ -30,7 +30,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
-blockdev
'{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}'
\
-device
virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,id=virtio-disk0,bootindex=1 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-audiodev id=audio1,driver=none \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args
b/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args
index a4aaea7571..2362c5a057 100644
--- a/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-3.1.ppc64-latest.args
@@ -30,7 +30,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
-blockdev
'{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}'
\
-device
virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,id=virtio-disk0,bootindex=1 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-audiodev id=audio1,driver=none \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args
b/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args
index a8b22d3e48..ed62c92c12 100644
--- a/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/ppc64-default-cpu-kvm-pseries-4.2.ppc64-latest.args
@@ -30,7 +30,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
-blockdev
'{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}'
\
-device
virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,id=virtio-disk0,bootindex=1 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-audiodev id=audio1,driver=none \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-2.7.ppc64-latest.args
b/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-2.7.ppc64-latest.args
index 576f97261b..5b9d07c46e 100644
--- a/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-2.7.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-2.7.ppc64-latest.args
@@ -30,7 +30,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
-blockdev
'{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}'
\
-device
virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,id=virtio-disk0,bootindex=1 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-audiodev id=audio1,driver=none \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-3.1.ppc64-latest.args
b/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-3.1.ppc64-latest.args
index e3ca4a8465..7324e69410 100644
--- a/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-3.1.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-3.1.ppc64-latest.args
@@ -30,7 +30,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
-blockdev
'{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}'
\
-device
virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,id=virtio-disk0,bootindex=1 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-audiodev id=audio1,driver=none \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-4.2.ppc64-latest.args
b/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-4.2.ppc64-latest.args
index 1762e8f5f5..6591810bf8 100644
--- a/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-4.2.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/ppc64-default-cpu-tcg-pseries-4.2.ppc64-latest.args
@@ -30,7 +30,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
-blockdev
'{"node-name":"libvirt-1-format","read-only":false,"driver":"qcow2","file":"libvirt-1-storage"}'
\
-device
virtio-blk-pci,bus=pci.0,addr=0x2,drive=libvirt-1-format,id=virtio-disk0,bootindex=1 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-audiodev id=audio1,driver=none \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
diff --git a/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args
b/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args
index 2d3be80be3..61a9c458d4 100644
--- a/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/ppc64-pseries-graphics.ppc64-latest.args
@@ -32,7 +32,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
-netdev user,id=hostnet0 \
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:a2:44:92,bus=pci.0,addr=0x1
\
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-chardev socket,id=charchannel0,fd=1729,server=on,wait=off \
-device
virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0
\
-device usb-tablet,id=input0,bus=usb.0,port=1 \
diff --git a/tests/qemuxml2argvdata/ppc64-pseries-headless.ppc64-latest.args
b/tests/qemuxml2argvdata/ppc64-pseries-headless.ppc64-latest.args
index e46978c0d2..819ad483a4 100644
--- a/tests/qemuxml2argvdata/ppc64-pseries-headless.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/ppc64-pseries-headless.ppc64-latest.args
@@ -33,7 +33,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \
-netdev user,id=hostnet0 \
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:09:a4:37,bus=pci.0,addr=0x1
\
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-chardev socket,id=charchannel0,fd=1729,server=on,wait=off \
-device
virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0
\
-audiodev id=audio1,driver=none \
diff --git a/tests/qemuxml2argvdata/pseries-basic.args
b/tests/qemuxml2argvdata/pseries-basic.args
index 241850399f..ebb289fe31 100644
--- a/tests/qemuxml2argvdata/pseries-basic.args
+++ b/tests/qemuxml2argvdata/pseries-basic.args
@@ -26,5 +26,5 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-usb \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-cpu-compat-power9.args
b/tests/qemuxml2argvdata/pseries-cpu-compat-power9.args
index 29dd9bc29e..abc3421565 100644
--- a/tests/qemuxml2argvdata/pseries-cpu-compat-power9.args
+++ b/tests/qemuxml2argvdata/pseries-cpu-compat-power9.args
@@ -27,5 +27,5 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-usb \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-cpu-compat.args
b/tests/qemuxml2argvdata/pseries-cpu-compat.args
index c54088c505..18dbc62dc5 100644
--- a/tests/qemuxml2argvdata/pseries-cpu-compat.args
+++ b/tests/qemuxml2argvdata/pseries-cpu-compat.args
@@ -27,5 +27,5 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-usb \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-cpu-exact.args
b/tests/qemuxml2argvdata/pseries-cpu-exact.args
index 1d11f5fa93..7ee7ee4b34 100644
--- a/tests/qemuxml2argvdata/pseries-cpu-exact.args
+++ b/tests/qemuxml2argvdata/pseries-cpu-exact.args
@@ -27,5 +27,5 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-usb \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-cpu-le.args
b/tests/qemuxml2argvdata/pseries-cpu-le.args
index 1247f3af8e..1325a0edd2 100644
--- a/tests/qemuxml2argvdata/pseries-cpu-le.args
+++ b/tests/qemuxml2argvdata/pseries-cpu-le.args
@@ -26,5 +26,5 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-usb \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-panic-missing.args
b/tests/qemuxml2argvdata/pseries-panic-missing.args
index 241850399f..ebb289fe31 100644
--- a/tests/qemuxml2argvdata/pseries-panic-missing.args
+++ b/tests/qemuxml2argvdata/pseries-panic-missing.args
@@ -26,5 +26,5 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-usb \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-panic-no-address.args
b/tests/qemuxml2argvdata/pseries-panic-no-address.args
index 241850399f..ebb289fe31 100644
--- a/tests/qemuxml2argvdata/pseries-panic-no-address.args
+++ b/tests/qemuxml2argvdata/pseries-panic-no-address.args
@@ -26,5 +26,5 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-usb \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-serial-native.args
b/tests/qemuxml2argvdata/pseries-serial-native.args
index 9c2e3c156a..1c89689f9f 100644
--- a/tests/qemuxml2argvdata/pseries-serial-native.args
+++ b/tests/qemuxml2argvdata/pseries-serial-native.args
@@ -25,5 +25,5 @@ QEMU_AUDIO_DRV=none \
-no-shutdown \
-boot strict=on \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-usb-default.args
b/tests/qemuxml2argvdata/pseries-usb-default.args
index b3b57320c5..dadab3fe10 100644
--- a/tests/qemuxml2argvdata/pseries-usb-default.args
+++ b/tests/qemuxml2argvdata/pseries-usb-default.args
@@ -26,5 +26,5 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-device pci-ohci,id=usb,bus=pci.0,addr=0x1 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-usb-kbd.args
b/tests/qemuxml2argvdata/pseries-usb-kbd.args
index 7e0623eef8..a650420cff 100644
--- a/tests/qemuxml2argvdata/pseries-usb-kbd.args
+++ b/tests/qemuxml2argvdata/pseries-usb-kbd.args
@@ -26,6 +26,6 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-device pci-ohci,id=usb,bus=pci.0,addr=0x1 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-device usb-kbd,id=input0,bus=usb.0,port=1 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-usb-multi.args
b/tests/qemuxml2argvdata/pseries-usb-multi.args
index 2d4ef84838..34651b8ec4 100644
--- a/tests/qemuxml2argvdata/pseries-usb-multi.args
+++ b/tests/qemuxml2argvdata/pseries-usb-multi.args
@@ -27,5 +27,5 @@ QEMU_AUDIO_DRV=none \
-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1 \
-device pci-ohci,id=usb1,bus=pci.0,addr=0x2 \
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-vio-user-assigned.args
b/tests/qemuxml2argvdata/pseries-vio-user-assigned.args
index dfc3ad0d1b..80ded18692 100644
--- a/tests/qemuxml2argvdata/pseries-vio-user-assigned.args
+++ b/tests/qemuxml2argvdata/pseries-vio-user-assigned.args
@@ -30,7 +30,7 @@ QEMU_AUDIO_DRV=none \
-drive file=/tmp/scsidisk.img,format=raw,if=none,id=drive-scsi1-0-0-0 \
-device
scsi-hd,bus=scsi1.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi1-0-0-0,id=scsi1-0-0-0,bootindex=1
\
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x20000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=536870912 \
-chardev pty,id=charserial1 \
--device spapr-vty,chardev=charserial1,id=serial1,reg=0x30001000 \
+-device spapr-vty,chardev=charserial1,id=serial1,reg=805310464 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/pseries-vio.args
b/tests/qemuxml2argvdata/pseries-vio.args
index a8e18fae5a..e266d4c01b 100644
--- a/tests/qemuxml2argvdata/pseries-vio.args
+++ b/tests/qemuxml2argvdata/pseries-vio.args
@@ -30,7 +30,7 @@ QEMU_AUDIO_DRV=none \
-drive file=/tmp/scsidisk.img,format=raw,if=none,id=drive-scsi1-0-0-0 \
-device
scsi-hd,bus=scsi1.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi1-0-0-0,id=scsi1-0-0-0,bootindex=1
\
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-chardev pty,id=charserial1 \
--device spapr-vty,chardev=charserial1,id=serial1,reg=0x30001000 \
+-device spapr-vty,chardev=charserial1,id=serial1,reg=805310464 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/s390-panic-missing.args
b/tests/qemuxml2argvdata/s390-panic-missing.args
index be0873ced9..a1c1731f0c 100644
--- a/tests/qemuxml2argvdata/s390-panic-missing.args
+++ b/tests/qemuxml2argvdata/s390-panic-missing.args
@@ -26,6 +26,6 @@ QEMU_AUDIO_DRV=none \
-boot strict=on \
-device virtio-serial-ccw,id=virtio-serial0,devno=fe.0.0000 \
-chardev pty,id=charconsole0 \
--device virtconsole,chardev=charconsole0,id=console0 \
+-device virtconsole,devno=fe.0.0001,chardev=charconsole0,id=console0 \
-device virtio-balloon-ccw,id=balloon0,devno=fe.0.0002 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/serial-dev-chardev-iobase.args
b/tests/qemuxml2argvdata/serial-dev-chardev-iobase.args
index ecaa342a26..27de77305e 100644
--- a/tests/qemuxml2argvdata/serial-dev-chardev-iobase.args
+++ b/tests/qemuxml2argvdata/serial-dev-chardev-iobase.args
@@ -29,6 +29,6 @@ QEMU_AUDIO_DRV=none \
-drive file=/dev/HostVG/QEMUGuest1,format=raw,if=none,id=drive-ide0-0-0 \
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
-chardev tty,id=charserial0,path=/dev/ttyS2 \
--device isa-serial,chardev=charserial0,id=serial0,iobase=0x3f8,irq=0x4 \
+-device isa-serial,chardev=charserial0,id=serial0,iobase=1016,irq=4 \
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x2 \
-msg timestamp=on
diff --git a/tests/qemuxml2argvdata/tpm-emulator-spapr.ppc64-latest.args
b/tests/qemuxml2argvdata/tpm-emulator-spapr.ppc64-latest.args
index 04d632c091..c8dc4c74fe 100644
--- a/tests/qemuxml2argvdata/tpm-emulator-spapr.ppc64-latest.args
+++ b/tests/qemuxml2argvdata/tpm-emulator-spapr.ppc64-latest.args
@@ -32,9 +32,9 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-TPM-VM/.config \
-blockdev
'{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}'
\
-device
scsi-hd,bus=scsi1.0,channel=0,scsi-id=0,lun=0,device_id=drive-scsi1-0-0-0,drive=libvirt-1-format,id=scsi1-0-0-0,bootindex=1
\
-chardev pty,id=charserial0 \
--device spapr-vty,chardev=charserial0,id=serial0,reg=0x30000000 \
+-device spapr-vty,chardev=charserial0,id=serial0,reg=805306368 \
-chardev pty,id=charserial1 \
--device spapr-vty,chardev=charserial1,id=serial1,reg=0x30001000 \
+-device spapr-vty,chardev=charserial1,id=serial1,reg=805310464 \
-tpmdev emulator,id=tpm-tpm0,chardev=chrtpm \
-chardev socket,id=chrtpm,path=/dev/test \
-device tpm-spapr,tpmdev=tpm-tpm0,id=tpm0,reg=0x00005000 \
--
2.31.1