bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH gnumach] kd_mouse: Fix IBM mouse irq getting stuck and blocking c


From: Damien Zammit
Subject: [PATCH gnumach] kd_mouse: Fix IBM mouse irq getting stuck and blocking console
Date: Sat, 25 Feb 2023 06:14:28 +0000

TESTED: With and without apic/smp

---
 i386/i386at/kd_mouse.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/i386/i386at/kd_mouse.c b/i386/i386at/kd_mouse.c
index c870cf5a..9bd001cb 100644
--- a/i386/i386at/kd_mouse.c
+++ b/i386/i386at/kd_mouse.c
@@ -106,6 +106,7 @@ boolean_t   mouse_char_cmd = FALSE;         /* mouse 
response is to cmd */
 boolean_t      mouse_char_wanted = FALSE;      /* want mouse response */
 int            mouse_char_index;               /* mouse response */

+#define IBM_MOUSE_IRQ  12

 /*
  * init_mouse_hw - initialize the serial port.
@@ -183,7 +184,7 @@ mouseopen(dev_t dev, int flags, io_req_t ior)
                break;
        case IBM_MOUSE:
                mousebufsize = 3;
-               kd_mouse_open(dev, 12);
+               kd_mouse_open(dev, IBM_MOUSE_IRQ);
                ibm_ps2_mouse_open(dev);
                break;
        case NO_MOUSE:
@@ -222,6 +223,7 @@ kd_mouse_open(

        oldvect = ivect[mouse_pic];
        ivect[mouse_pic] = kdintr;
+       unmask_irq(mouse_pic);
        splx(s);
 }

@@ -243,7 +245,7 @@ mouseclose(
                break;
        case IBM_MOUSE:
                ibm_ps2_mouse_close(dev);
-               kd_mouse_close(dev, 12);
+               kd_mouse_close(dev, IBM_MOUSE_IRQ);
                {int i = 20000; for (;i--;); }
                kd_mouse_drain();
                break;
@@ -282,6 +284,7 @@ kd_mouse_close(
 {
        spl_t s = splhi();

+       mask_irq(mouse_pic);
        ivect[mouse_pic] = oldvect;
        splx(s);
 }
--
2.34.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]