aboutsummaryrefslogtreecommitdiff
path: root/hw/ipmi
diff options
context:
space:
mode:
authorCorey Minyard <cminyard@mvista.com>2019-08-16 09:09:21 -0500
committerCorey Minyard <cminyard@mvista.com>2019-09-20 14:08:10 -0500
commit6af94767daf6364dcc74d70f494fe0dda795824f (patch)
tree35c33c27ad2e6f2980c2228ae59aa936b9e8332c /hw/ipmi
parenta77d20bafcd4cb7684168a9b4c6dc2a321aaeb50 (diff)
downloadqemu-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.c6
-rw-r--r--hw/ipmi/ipmi_bmc_sim.c2
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;