diff mbox series

[5/8] ipmi: disable IRQ and ATN on an external disconnect

Message ID 1512682213-4354-6-git-send-email-minyard@acm.org
State Superseded
Headers show
Series [1/8] ipmi: Fix SEL get/set time commands | expand

Commit Message

Corey Minyard Dec. 7, 2017, 9:30 p.m. UTC
From: Corey Minyard <cminyard@mvista.com>


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>

---
 hw/ipmi/ipmi_bmc_extern.c | 5 +++++
 1 file changed, 5 insertions(+)

-- 
2.7.4

Comments

Marc-André Lureau Jan. 12, 2018, 5 p.m. UTC | #1
Hi

On Thu, Dec 7, 2017 at 10:30 PM,  <minyard@acm.org> wrote:
> From: Corey Minyard <cminyard@mvista.com>

>

> 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>


I don't know if anyone knows the specifics better than you. Why aren't
you the maintainer of hw/ipmi? (in MAINTAINERS)

> ---

>  hw/ipmi/ipmi_bmc_extern.c | 5 +++++

>  1 file changed, 5 insertions(+)

>

> diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c

> index abab3bb..58ade79 100644

> --- a/hw/ipmi/ipmi_bmc_extern.c

> +++ b/hw/ipmi/ipmi_bmc_extern.c

> @@ -424,6 +424,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;

> --

> 2.7.4

>

>




-- 
Marc-André Lureau
diff mbox series

Patch

diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c
index abab3bb..58ade79 100644
--- a/hw/ipmi/ipmi_bmc_extern.c
+++ b/hw/ipmi/ipmi_bmc_extern.c
@@ -424,6 +424,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;