|
@@ -223,7 +223,7 @@ struct IPMIBmcSim {
|
|
|
uint8_t restart_cause;
|
|
|
|
|
|
uint8_t acpi_power_state[2];
|
|
|
- uint8_t uuid[16];
|
|
|
+ QemuUUID uuid;
|
|
|
|
|
|
IPMISel sel;
|
|
|
IPMISdr sdr;
|
|
@@ -941,8 +941,19 @@ static void get_device_guid(IPMIBmcSim *ibs,
|
|
|
{
|
|
|
unsigned int i;
|
|
|
|
|
|
+ /* An uninitialized uuid is all zeros, use that to know if it is set. */
|
|
|
for (i = 0; i < 16; i++) {
|
|
|
- rsp_buffer_push(rsp, ibs->uuid[i]);
|
|
|
+ if (ibs->uuid.data[i]) {
|
|
|
+ goto uuid_set;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /* No uuid is set, return an error. */
|
|
|
+ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_CMD);
|
|
|
+ return;
|
|
|
+
|
|
|
+ uuid_set:
|
|
|
+ for (i = 0; i < 16; i++) {
|
|
|
+ rsp_buffer_push(rsp, ibs->uuid.data[i]);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1986,12 +1997,6 @@ static void ipmi_sim_realize(DeviceState *dev, Error **errp)
|
|
|
ibs->acpi_power_state[0] = 0;
|
|
|
ibs->acpi_power_state[1] = 0;
|
|
|
|
|
|
- if (qemu_uuid_set) {
|
|
|
- memcpy(&ibs->uuid, &qemu_uuid, 16);
|
|
|
- } else {
|
|
|
- memset(&ibs->uuid, 0, 16);
|
|
|
- }
|
|
|
-
|
|
|
ipmi_init_sensors_from_sdrs(ibs);
|
|
|
register_cmds(ibs);
|
|
|
|
|
@@ -2011,6 +2016,7 @@ static Property ipmi_sim_properties[] = {
|
|
|
DEFINE_PROP_UINT8("fwrev2", IPMIBmcSim, fwrev2, 0),
|
|
|
DEFINE_PROP_UINT32("mfg_id", IPMIBmcSim, mfg_id, 0),
|
|
|
DEFINE_PROP_UINT16("product_id", IPMIBmcSim, product_id, 0),
|
|
|
+ DEFINE_PROP_UUID_NODEFAULT("guid", IPMIBmcSim, uuid),
|
|
|
DEFINE_PROP_END_OF_LIST(),
|
|
|
};
|
|
|
|