diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index f7f22e50dc..172b84a8da 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -5716,6 +5716,8 @@ qemu-kvm -net nic,model=? /dev/null
'i6300esb' — the recommended device,
emulating a PCI Intel 6300ESB
'ib700' — emulating an ISA iBase IB700
+ 'diag288' — emulating an S390 DIAG288 device
+ Since 1.3.0
action
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 304079745e..1120003518 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -3261,6 +3261,7 @@
i6300esb
ib700
+ diag288
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 198cf582ba..e9554511f9 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -498,7 +498,8 @@ VIR_ENUM_IMPL(virDomainSmbiosMode, VIR_DOMAIN_SMBIOS_LAST,
VIR_ENUM_IMPL(virDomainWatchdogModel, VIR_DOMAIN_WATCHDOG_MODEL_LAST,
"i6300esb",
- "ib700")
+ "ib700",
+ "diag288")
VIR_ENUM_IMPL(virDomainWatchdogAction, VIR_DOMAIN_WATCHDOG_ACTION_LAST,
"reset",
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index 8912bbb540..aeba5a50a6 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -1304,6 +1304,7 @@ struct _virDomainSoundDef {
typedef enum {
VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB,
VIR_DOMAIN_WATCHDOG_MODEL_IB700,
+ VIR_DOMAIN_WATCHDOG_MODEL_DIAG288,
VIR_DOMAIN_WATCHDOG_MODEL_LAST
} virDomainWatchdogModel;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 5444638784..99755f1b8f 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -2308,7 +2308,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
* - VirtIO block
* - VirtIO balloon
* - Host device passthrough
- * - Watchdog (not IB700)
+ * - Watchdog
* - pci serial devices
*
* Prior to this function being invoked, qemuCollectPCIAddress() will have
@@ -2543,9 +2543,9 @@ qemuAssignDevicePCISlots(virDomainDefPtr def,
goto error;
}
- /* A watchdog - skip IB700, it is not a PCI device */
+ /* A watchdog - check if it is a PCI device */
if (def->watchdog &&
- def->watchdog->model != VIR_DOMAIN_WATCHDOG_MODEL_IB700 &&
+ def->watchdog->model == VIR_DOMAIN_WATCHDOG_MODEL_I6300ESB &&
def->watchdog->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) {
if (virDomainPCIAddressReserveNextSlot(addrs, &def->watchdog->info,
flags) < 0)