aboutsummaryrefslogtreecommitdiff
path: root/hw/ipmi
diff options
context:
space:
mode:
authorCorey Minyard <cminyard@mvista.com>2017-08-18 20:15:02 -0500
committerCorey Minyard <cminyard@mvista.com>2018-01-30 15:52:53 -0600
commit9f7d1d92a7adc74cb13305e0f542a030e27a3710 (patch)
tree9a76631a4630fb4f9a1adc5e7a89f5ca6b7f202b /hw/ipmi
parent7f11cb6585d97ecdb8a657c3d8732a494e409827 (diff)
downloadqemu-9f7d1d92a7adc74cb13305e0f542a030e27a3710.zip
qemu-9f7d1d92a7adc74cb13305e0f542a030e27a3710.tar.gz
qemu-9f7d1d92a7adc74cb13305e0f542a030e27a3710.tar.bz2
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>
Diffstat (limited to 'hw/ipmi')
-rw-r--r--hw/ipmi/ipmi_bmc_sim.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c
index cc068f2..a0bbfd5 100644
--- a/hw/ipmi/ipmi_bmc_sim.c
+++ b/hw/ipmi/ipmi_bmc_sim.c
@@ -443,16 +443,21 @@ static void sel_inc_reservation(IPMISel *sel)
/* Returns 1 if the SEL is full and can't hold the event. */
static int sel_add_event(IPMIBmcSim *ibs, uint8_t *event)
{
+ uint8_t ts[4];
+
event[0] = 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) {
ibs->sel.overflow = 1;
return 1;
}
event[0] = ibs->sel.next_free & 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);
ibs->sel.next_free++;
sel_inc_reservation(&ibs->sel);