Since commit ff6e1624b3 (pckbd: don't update OBF flags if KBD_STAT_OBF is set) the OSes Minoca OS and Visopsys no longer have a working PS/2 keyboard and mouse. This is caused by a PS/2 queue stall due to a lost interrupt in the guest OS. This already happened before commit ff6e1624b3, but no one noticed because up to that point QEMU sent gratuitous keyboard and mouse interrupts and the queue restarted with keyboard input or mouse movement.
The lost interrupt is a guest bug. The fact that it's always lost is due to an inexact PS/2 keyboard emulation. The way in which the two operating systems e.g. set the keyboard LEDs, leaves a keyboard ACK reply in the keyboard queue that is unexpected for the guests. This patch series improves the PS/2 keyboard emulation. There's a workaround for issue #501 and #502 so I don't think this is rc3 material. But that decision is up to the maintainers. To verify patch 2/3 I plugged in an additional PS/2 keyboard into the host and started Linux with the command line option initcall_blacklist=i8042_init. Here is an example of the sequence to set the keyboard LEDs. # #regular sequence to set the keyboard LEDs # inb --hex 0x64 1c # #PS/2 queue is empty # outb 0x60 0xed # inb --hex 0x64 15 # inb --hex 0x60 fa # inb --hex 0x64 14 # outb 0x60 0x01 # inb --hex 0x64 15 # inb --hex 0x60 fa # inb --hex 0x64 14 # #alternative sequence to set the keyboard LEDs # inb --hex 0x64 14 # outb 0x60 0xed # inb --hex 0x64 15 # outb 0x60 0x00 # inb --hex 0x64 15 # inb --hex 0x60 fa # inb --hex 0x64 14 v2: improved patch 2/3 commit message. Volker Rümelin (3): ps2: use the whole ps2 buffer but keep queue size ps2: use a separate keyboard command reply queue ps2: migration support for command reply queue hw/input/ps2.c | 214 ++++++++++++++++++++++++++++++------------------- 1 file changed, 133 insertions(+), 81 deletions(-) -- 2.26.2