aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Minyard <cminyard@mvista.com>2017-09-19 15:19:26 -0500
committerCorey Minyard <cminyard@mvista.com>2018-01-30 15:52:53 -0600
commit53d34b8c1ba74f14053deeb2cce7d2501695e83d (patch)
tree86c34d685486c603f9b4b39a86c67971fa5b5988
parentc9c47229145e82ab7a0f27838fd74738d71fed8e (diff)
ipmi: disable IRQ and ATN on an external disconnect
Otherwise there's no way to clear them without an external command, and it could lock the OS in the VM if they were stuck. Signed-off-by: Corey Minyard <cminyard@mvista.com>
-rw-r--r--hw/ipmi/ipmi_bmc_extern.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index 8c0535d3dd..bf0b7ee0f5 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -425,6 +425,11 @@ static void chr_event(void *opaque, int event)
return;
}
ibe->connected = false;
+ /*
+ * Don't hang the OS trying to handle the ATN bit, other end will
+ * resend on a reconnect.
+ */
+ k->set_atn(s, 0, 0);
if (ibe->waiting_rsp) {
ibe->waiting_rsp = false;
ibe->inbuf[1] = ibe->outbuf[1] | 0x04;