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
|
||||
};
|
||||
|
||||
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 = {
|
||||
.name = TYPE_IPMI_BMC_SIMULATOR,
|
||||
.version_id = 1,
|
||||
@ -1726,7 +1753,6 @@ static void ipmi_sim_realize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
IPMIBmc *b = IPMI_BMC(dev);
|
||||
unsigned int i;
|
||||
unsigned int recid;
|
||||
IPMIBmcSim *ibs = IPMI_BMC_SIMULATOR(b);
|
||||
|
||||
qemu_mutex_init(&ibs->lock);
|
||||
@ -1743,26 +1769,7 @@ static void ipmi_sim_realize(DeviceState *dev, Error **errp)
|
||||
ibs->sdr.last_clear[i] = 0xff;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
ipmi_sdr_init(ibs);
|
||||
|
||||
ibs->acpi_power_state[0] = 0;
|
||||
ibs->acpi_power_state[1] = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user