On Fri, Jun 25, 2021 at 10:12:32AM +0800, Jinhua Cao wrote: > 1) watchdog_expired is set bool which value could only be 0 or 1, > but watchdog_expired every bit mean different Timer Use. > > 2) Use the command -ipmitool mc get watchdog- to query > ipmi-watchdog status in guest. > ... > [root@localhost ~]# ipmitool mc watchdog get > Watchdog Timer Use: SMS/OS (0x44) > Watchdog Timer Is: Started/Running > Watchdog Timer Actions: Hard Reset (0x01) > Pre-timeout interval: 0 seconds > Timer Expiration Flags: 0x00 > Initial Countdown: 60 sec > Present Countdown: 57 sec > ... > bool for watchdog_expired results -Timer Expiration Flags- always > be 0x00 or 0x01, but the -Timer Expiration Flags- indicts the Timer Use > after timeout. So change watchdog_expired data type from bool to uint8_t > to fix this problem.
Yes, you are right. This is queued. I checked, a bool is sent as a byte, just like a uint8_t, so the vmstate transfer should be ok with this change. Thanks, -corey > > Signed-off-by: Jinhua Cao <caojinh...@huawei.com> > --- > hw/ipmi/ipmi_bmc_sim.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c > index 55fb81fa5a..905e091094 100644 > --- a/hw/ipmi/ipmi_bmc_sim.c > +++ b/hw/ipmi/ipmi_bmc_sim.c > @@ -189,7 +189,7 @@ struct IPMIBmcSim { > uint8_t watchdog_use; > uint8_t watchdog_action; > uint8_t watchdog_pretimeout; /* In seconds */ > - bool watchdog_expired; > + uint8_t watchdog_expired; > uint16_t watchdog_timeout; /* in 100's of milliseconds */ > > bool watchdog_running; > @@ -2110,7 +2110,7 @@ static const VMStateDescription vmstate_ipmi_sim = { > VMSTATE_UINT8(watchdog_use, IPMIBmcSim), > VMSTATE_UINT8(watchdog_action, IPMIBmcSim), > VMSTATE_UINT8(watchdog_pretimeout, IPMIBmcSim), > - VMSTATE_BOOL(watchdog_expired, IPMIBmcSim), > + VMSTATE_UINT8(watchdog_expired, IPMIBmcSim), > VMSTATE_UINT16(watchdog_timeout, IPMIBmcSim), > VMSTATE_BOOL(watchdog_running, IPMIBmcSim), > VMSTATE_BOOL(watchdog_preaction_ran, IPMIBmcSim), > -- > 2.27.0 >