This patch series fixes two different PS/2 mouse stream corruptions and adds a feature that allows some old misbehaving DOS programs to have a working keyboard. With the last few patches, the PS/2 con- troller behaves more like a real controller.
v2: Introduce the function kbd_pending() in a preliminary patch to ease the review of patch "pckbd: correctly disable PS/2 communication", as Philippe suggested. v3: Patch "pckbd: correctly disable PS/2 communication" exposed a bug in SeaBIOS. The updated patch keeps the relevant code. Until SeaBIOS is fixed, the PS/2 controller command KBD_CCMD_KBD_DISABLE must disable the keyboard interrupt. In patch "pckbd: PS/2 keyboard throttle" in function kbd_throttle_timeout() an unnecessary if statement was removed. The KBD_STAT_OBF flag is never set when kbd_throttle_timeout() gets called. v4: Use a subsection for additional pckbd state variables. This allows users to migrate old qemu to new qemu and back. Patches "pckbd: don't update OBF flags if KBD_STAT_OBF is set", "pckbd: PS/2 keyboard throttle", "pckbd: add state variable for interrupt source", "pckbd: add controller response queue" and "pckbd: correctly disable PS/2 communication" look now a little bit different. New patch "pckbd: clear outport_present in outer pre_load()". Volker Rümelin (12): ps2: fix mouse stream corruption ps2: don't raise an interrupt if queue is full ps2: don't deassert irq twice if queue is empty pckbd: split out interrupt line changing code pckbd: don't update OBF flags if KBD_STAT_OBF is set pckbd: PS/2 keyboard throttle pckbd: add state variable for interrupt source pckbd: add controller response queue pckbd: add function kbd_pending() pckbd: correctly disable PS/2 communication pckbd: remove duplicated keyboard and mouse defines pckbd: clear outport_present in outer pre_load() hw/core/machine.c | 1 + hw/input/pckbd.c | 353 ++++++++++++++++++++++++++++++++++++---------- hw/input/ps2.c | 11 +- 3 files changed, 286 insertions(+), 79 deletions(-) -- 2.26.2