mirror of https://gitee.com/openkylin/qemu.git
ipmi: Don't set the timestamp on add events that don't have it
According to the spec, from section "32.3 OEM SEL Record - Type E0h-FFh", event types from 0x0e to 0xff do not have a timestamp. So don't set it when adding those types. This required putting the timestamp in a temporary buffer, since it's still required to set the last addition time. Signed-off-by: Corey Minyard <cminyard@mvista.com> Reviewed-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
7f11cb6585
commit
9f7d1d92a7
|
@ -443,16 +443,21 @@ static void sel_inc_reservation(IPMISel *sel)
|
||||||
/* Returns 1 if the SEL is full and can't hold the event. */
|
/* Returns 1 if the SEL is full and can't hold the event. */
|
||||||
static int sel_add_event(IPMIBmcSim *ibs, uint8_t *event)
|
static int sel_add_event(IPMIBmcSim *ibs, uint8_t *event)
|
||||||
{
|
{
|
||||||
|
uint8_t ts[4];
|
||||||
|
|
||||||
event[0] = 0xff;
|
event[0] = 0xff;
|
||||||
event[1] = 0xff;
|
event[1] = 0xff;
|
||||||
set_timestamp(ibs, event + 3);
|
set_timestamp(ibs, ts);
|
||||||
|
if (event[2] < 0xe0) { /* Don't set timestamps for type 0xe0-0xff. */
|
||||||
|
memcpy(event + 3, ts, 4);
|
||||||
|
}
|
||||||
if (ibs->sel.next_free == MAX_SEL_SIZE) {
|
if (ibs->sel.next_free == MAX_SEL_SIZE) {
|
||||||
ibs->sel.overflow = 1;
|
ibs->sel.overflow = 1;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
event[0] = ibs->sel.next_free & 0xff;
|
event[0] = ibs->sel.next_free & 0xff;
|
||||||
event[1] = (ibs->sel.next_free >> 8) & 0xff;
|
event[1] = (ibs->sel.next_free >> 8) & 0xff;
|
||||||
memcpy(ibs->sel.last_addition, event + 3, 4);
|
memcpy(ibs->sel.last_addition, ts, 4);
|
||||||
memcpy(ibs->sel.sel[ibs->sel.next_free], event, 16);
|
memcpy(ibs->sel.sel[ibs->sel.next_free], event, 16);
|
||||||
ibs->sel.next_free++;
|
ibs->sel.next_free++;
|
||||||
sel_inc_reservation(&ibs->sel);
|
sel_inc_reservation(&ibs->sel);
|
||||||
|
|
Loading…
Reference in New Issue