[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH] kbc: Race zwischen send_kbd_command und IRQ-Handler gefixt
! kbc: send_kbd_command wartet auf ein ACK von der Tastatur. Wenn die
Tastatur aber ein ACK sendet, löst sie auch einen IRQ aus, und der
IRQ-Handler kann das ACK klauen, so dass send_kbd_command ewig wartet.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/modules/kbc/keyboard.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/modules/kbc/keyboard.c b/src/modules/kbc/keyboard.c
index bfacf01..89664a8 100644
--- a/src/modules/kbc/keyboard.c
+++ b/src/modules/kbc/keyboard.c
@@ -85,11 +85,13 @@ static void send_key_event(uint8_t keycode, bool release);
*/
static void send_kbd_command(uint8_t command)
{
+ p();
while (inb(0x64) & 0x2) {
yield();
}
outb(0x60, command);
while (inb(0x60) != 0xfa);
+ v();
}
--
1.6.0.2