[Qemu-devel] [PATCH 3/7] ipmi: Don't set the timestamp on add events that don't have it

2018-02-01 Thread minyard
From: Corey Minyard 

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 
Reviewed-by: Cédric Le Goater 
---
 hw/ipmi/ipmi_bmc_sim.c | 9 +++--
 1 file 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(>sel);
-- 
2.7.4




[Qemu-devel] [PATCH 3/7] ipmi: Don't set the timestamp on add events that don't have it

2018-01-15 Thread minyard
From: Corey Minyard 

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 
Reviewed-by: Cédric Le Goater 
---
 hw/ipmi/ipmi_bmc_sim.c | 9 +++--
 1 file 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(>sel);
-- 
2.7.4