diff options
author | Corey Minyard <cminyard@mvista.com> | 2019-08-16 09:09:21 -0500 |
---|---|---|
committer | Corey Minyard <cminyard@mvista.com> | 2019-09-20 14:08:10 -0500 |
commit | 6af94767daf6364dcc74d70f494fe0dda795824f (patch) | |
tree | 35c33c27ad2e6f2980c2228ae59aa936b9e8332c /hw/ipmi | |
parent | a77d20bafcd4cb7684168a9b4c6dc2a321aaeb50 (diff) | |
download | qemu-6af94767daf6364dcc74d70f494fe0dda795824f.zip qemu-6af94767daf6364dcc74d70f494fe0dda795824f.tar.gz qemu-6af94767daf6364dcc74d70f494fe0dda795824f.tar.bz2 |
ipmi: Fix watchdog NMI handling
The wrong logic was used for detection (so it wouldn't work at all)
and the wrong interface was used to inject the NMI if the detection
logic was correct.
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.c | 6 | ||||
-rw-r--r-- | hw/ipmi/ipmi_bmc_sim.c | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/hw/ipmi/ipmi.c b/hw/ipmi/ipmi.c index 136c86b..cbe158f 100644 --- a/hw/ipmi/ipmi.c +++ b/hw/ipmi/ipmi.c @@ -28,9 +28,8 @@ #include "qom/object_interfaces.h" #include "sysemu/runstate.h" #include "qapi/error.h" -#include "qapi/qapi-commands-misc.h" -#include "qapi/visitor.h" #include "qemu/module.h" +#include "hw/nmi.h" static uint32_t ipmi_current_uuid = 1; @@ -60,7 +59,8 @@ static int ipmi_do_hw_op(IPMIInterface *s, enum ipmi_op op, int checkonly) if (checkonly) { return 0; } - qmp_inject_nmi(NULL); + /* We don't care what CPU we use. */ + nmi_monitor_handle(0, NULL); return 0; case IPMI_SHUTDOWN_VIA_ACPI_OVERTEMP: diff --git a/hw/ipmi/ipmi_bmc_sim.c b/hw/ipmi/ipmi_bmc_sim.c index 246a6d3..8f63bb7 100644 --- a/hw/ipmi/ipmi_bmc_sim.c +++ b/hw/ipmi/ipmi_bmc_sim.c @@ -1194,7 +1194,7 @@ static void set_watchdog_timer(IPMIBmcSim *ibs, break; case IPMI_BMC_WATCHDOG_PRE_NMI: - if (!k->do_hw_op(s, IPMI_SEND_NMI, 1)) { + if (k->do_hw_op(s, IPMI_SEND_NMI, 1)) { /* NMI not supported. */ rsp_buffer_set_error(rsp, IPMI_CC_INVALID_DATA_FIELD); return; |