Multiple instances make no sense.
Cc: "Michael S. Tsirkin" <[email protected]>
Cc: Ben Warren <[email protected]>
Cc: Igor Mammedov <[email protected]>
Signed-off-by: Laszlo Ersek <[email protected]>
---
hw/acpi/vmgenid.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c
index c3ddcc8e7cb0..b5c0dfcf19e1 100644
--- a/hw/acpi/vmgenid.c
+++ b/hw/acpi/vmgenid.c
@@ -214,6 +214,8 @@ static Property vmgenid_properties[] = {
static void vmgenid_realize(DeviceState *dev, Error **errp)
{
VmGenIdState *vms = VMGENID(dev);
+ Object *one_vmgenid;
+ bool ambiguous;
if (!vms->write_pointer_available) {
error_setg(errp, "%s requires DMA write support in fw_cfg, "
@@ -221,6 +223,14 @@ static void vmgenid_realize(DeviceState *dev, Error **errp)
return;
}
+ one_vmgenid = object_resolve_path_type("", VMGENID_DEVICE, &ambiguous);
+ if (one_vmgenid == NULL) {
+ assert(ambiguous);
+ error_setg(errp, "at most one %s device is permitted", VMGENID_DEVICE);
+ return;
+ }
+ assert(one_vmgenid == OBJECT(vms));
+
qemu_register_reset(vmgenid_handle_reset, vms);
}
--
2.9.3