ipmi: use a function to initialize the SDR table
This patch moves the code section initializing the sdrs in its own routine to prepare ground for changes in the subsequent patches. Signed-off-by: Cédric Le Goater <clg@fr.ibm.com> Acked-by: Corey Minyard <cminyard@mvista.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
0bc6001f0d
commit
4fa9f08e96
@ -1694,6 +1694,33 @@ static const uint8_t init_sdrs[] = {
|
|||||||
0xff, 0xff, 0x00, 0x00, 0x00
|
0xff, 0xff, 0x00, 0x00, 0x00
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void ipmi_sdr_init(IPMIBmcSim *ibs)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
unsigned int recid;
|
||||||
|
|
||||||
|
for (i = 0;;) {
|
||||||
|
struct ipmi_sdr_header *sdrh;
|
||||||
|
int len;
|
||||||
|
if ((i + IPMI_SDR_HEADER_SIZE) > sizeof(init_sdrs)) {
|
||||||
|
error_report("Problem with recid 0x%4.4x", i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sdrh = (struct ipmi_sdr_header *) &init_sdrs[i];
|
||||||
|
len = ipmi_sdr_length(sdrh);
|
||||||
|
recid = ipmi_sdr_recid(sdrh);
|
||||||
|
if (recid == 0xffff) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((i + len) > sizeof(init_sdrs)) {
|
||||||
|
error_report("Problem with recid 0x%4.4x", i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sdr_add_entry(ibs, sdrh, len, NULL);
|
||||||
|
i += len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const VMStateDescription vmstate_ipmi_sim = {
|
static const VMStateDescription vmstate_ipmi_sim = {
|
||||||
.name = TYPE_IPMI_BMC_SIMULATOR,
|
.name = TYPE_IPMI_BMC_SIMULATOR,
|
||||||
.version_id = 1,
|
.version_id = 1,
|
||||||
@ -1726,7 +1753,6 @@ static void ipmi_sim_realize(DeviceState *dev, Error **errp)
|
|||||||
{
|
{
|
||||||
IPMIBmc *b = IPMI_BMC(dev);
|
IPMIBmc *b = IPMI_BMC(dev);
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned int recid;
|
|
||||||
IPMIBmcSim *ibs = IPMI_BMC_SIMULATOR(b);
|
IPMIBmcSim *ibs = IPMI_BMC_SIMULATOR(b);
|
||||||
|
|
||||||
qemu_mutex_init(&ibs->lock);
|
qemu_mutex_init(&ibs->lock);
|
||||||
@ -1743,26 +1769,7 @@ static void ipmi_sim_realize(DeviceState *dev, Error **errp)
|
|||||||
ibs->sdr.last_clear[i] = 0xff;
|
ibs->sdr.last_clear[i] = 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0;;) {
|
ipmi_sdr_init(ibs);
|
||||||
struct ipmi_sdr_header *sdrh;
|
|
||||||
int len;
|
|
||||||
if ((i + IPMI_SDR_HEADER_SIZE) > sizeof(init_sdrs)) {
|
|
||||||
error_report("Problem with recid 0x%4.4x", i);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
sdrh = (struct ipmi_sdr_header *) &init_sdrs[i];
|
|
||||||
len = ipmi_sdr_length(sdrh);
|
|
||||||
recid = ipmi_sdr_recid(sdrh);
|
|
||||||
if (recid == 0xffff) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if ((i + len) > sizeof(init_sdrs)) {
|
|
||||||
error_report("Problem with recid 0x%4.4x", i);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
sdr_add_entry(ibs, sdrh, len, NULL);
|
|
||||||
i += len;
|
|
||||||
}
|
|
||||||
|
|
||||||
ibs->acpi_power_state[0] = 0;
|
ibs->acpi_power_state[0] = 0;
|
||||||
ibs->acpi_power_state[1] = 0;
|
ibs->acpi_power_state[1] = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user