mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
ps2: Fix mouse stream corruption due to lost data
This fixes an issue by adding bounds checking to multi-byte packets where the PS/2 mouse data stream may become corrupted due to data being discarded when the PS/2 ringbuffer is full. Interrupts for Multi-byte responses are postponed until the final byte has been queued. These changes fix a bug where windows guests drop the mouse device entirely requring the guest to be restarted. Signed-off-by: Geoffrey McRae <geoff@hostfission.com> Message-Id: <20180507150310.2FEA0381924@moya.office.hostfission.com> [ kraxel: codestyle fixes ] Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
143c04c7e0
commit
7abe7eb294
2 changed files with 100 additions and 29 deletions
|
@ -37,7 +37,12 @@ void *ps2_mouse_init(void (*update_irq)(void *, int), void *update_arg);
|
|||
void ps2_write_mouse(void *, int val);
|
||||
void ps2_write_keyboard(void *, int val);
|
||||
uint32_t ps2_read_data(PS2State *s);
|
||||
void ps2_queue_noirq(PS2State *s, int b);
|
||||
void ps2_raise_irq(PS2State *s);
|
||||
void ps2_queue(PS2State *s, int b);
|
||||
void ps2_queue_2(PS2State *s, int b1, int b2);
|
||||
void ps2_queue_3(PS2State *s, int b1, int b2, int b3);
|
||||
void ps2_queue_4(PS2State *s, int b1, int b2, int b3, int b4);
|
||||
void ps2_keyboard_set_translation(void *opaque, int mode);
|
||||
void ps2_mouse_fake_event(void *opaque);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue