diff -ur qemu-0.13.0~rc0+dfsg/debian/patches/nops2.patch qemu-0.13.0~rc0+dfsg.ps2dump/debian/patches/nops2.patch --- qemu-0.13.0~rc0+dfsg/debian/patches/nops2.patch 2010-10-07 15:24:24.000000000 +0200 +++ qemu-0.13.0~rc0+dfsg.ps2dump/debian/patches/nops2.patch 2010-10-07 14:37:24.000000000 +0200 @@ -1,6 +1,7 @@ -diff -ur qemu-0.13.0~rc0+dfsg/hw/isa.h qemu-0.13.0~rc0+dfsg-2.mod/hw/isa.h ---- qemu-0.13.0~rc0+dfsg/hw/isa.h 2010-07-29 03:54:56.000000000 +0200 -+++ qemu-0.13.0~rc0+dfsg-2.mod/hw/isa.h 2010-09-21 14:44:38.000000000 +0200 +Index: qemu-0.13.0~rc0+dfsg/hw/isa.h +=================================================================== +--- qemu-0.13.0~rc0+dfsg.orig/hw/isa.h 2010-10-07 14:33:53.000000000 +0200 ++++ qemu-0.13.0~rc0+dfsg/hw/isa.h 2010-10-07 14:33:55.000000000 +0200 @@ -31,6 +31,7 @@ ISADevice *isa_create_simple(const char *name); @@ -9,10 +10,11 @@ void isa_mmio_init(target_phys_addr_t base, target_phys_addr_t size, int be); -diff -ur qemu-0.13.0~rc0+dfsg/hw/pckbd.c qemu-0.13.0~rc0+dfsg-2.mod/hw/pckbd.c ---- qemu-0.13.0~rc0+dfsg/hw/pckbd.c 2010-07-29 03:54:56.000000000 +0200 -+++ qemu-0.13.0~rc0+dfsg-2.mod/hw/pckbd.c 2010-09-21 14:56:55.000000000 +0200 -@@ -167,7 +169,7 @@ +Index: qemu-0.13.0~rc0+dfsg/hw/pckbd.c +=================================================================== +--- qemu-0.13.0~rc0+dfsg.orig/hw/pckbd.c 2010-10-07 14:33:53.000000000 +0200 ++++ qemu-0.13.0~rc0+dfsg/hw/pckbd.c 2010-10-07 14:35:34.000000000 +0200 +@@ -167,7 +167,7 @@ } } qemu_set_irq(s->irq_kbd, irq_kbd_level); @@ -21,22 +23,23 @@ } static void kbd_update_kbd_irq(void *opaque, int level) -@@ -203,10 +205,11 @@ +@@ -203,10 +203,11 @@ static void kbd_queue(KBDState *s, int b, int aux) { - if (aux) - ps2_queue(s->mouse, b); - else +- ps2_queue(s->kbd, b); + if (aux) { -+ if (s->mouse) ps2_queue(s->mouse, b); ++ if (s->mouse) ps2_queue(s->mouse, b, 1); + } else { - ps2_queue(s->kbd, b); ++ ps2_queue(s->kbd, b, 0); + } } static void ioport92_write(void *opaque, uint32_t addr, uint32_t val) -@@ -306,12 +309,13 @@ +@@ -306,12 +307,13 @@ static uint32_t kbd_read_data(void *opaque, uint32_t addr) { KBDState *s = opaque; @@ -54,7 +57,7 @@ DPRINTF("kbd: read data=0x%02x\n", val); return val; -@@ -337,13 +341,13 @@ +@@ -337,13 +339,13 @@ kbd_queue(s, val, 0); break; case KBD_CCMD_WRITE_AUX_OBUF: @@ -70,7 +73,7 @@ break; default: break; -@@ -413,9 +417,10 @@ +@@ -413,9 +415,10 @@ { KBDState *s = qemu_mallocz(sizeof(KBDState)); int s_io_memory; @@ -82,7 +85,7 @@ s->mask = mask; vmstate_register(NULL, 0, &vmstate_kbd, s); -@@ -423,7 +428,8 @@ +@@ -423,7 +426,8 @@ cpu_register_physical_memory(base, size, s_io_memory); s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s); @@ -92,7 +95,7 @@ qemu_register_reset(kbd_reset, s); } -@@ -437,7 +443,7 @@ +@@ -437,7 +441,7 @@ ISADevice *dev = opaque; KBDState *s = &(DO_UPCAST(ISAKBDState, dev, dev)->kbd); @@ -101,7 +104,7 @@ } void i8042_setup_a20_line(ISADevice *dev, qemu_irq *a20_out) -@@ -461,9 +467,10 @@ +@@ -461,9 +465,10 @@ static int i8042_initfn(ISADevice *dev) { KBDState *s = &(DO_UPCAST(ISAKBDState, dev, dev)->kbd); @@ -113,7 +116,7 @@ register_ioport_read(0x60, 1, 1, kbd_read_data, s); register_ioport_write(0x60, 1, 1, kbd_write_data, s); -@@ -473,7 +480,8 @@ +@@ -473,7 +478,8 @@ register_ioport_write(0x92, 1, 1, ioport92_write, s); s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s); @@ -123,9 +126,10 @@ qemu_register_reset(kbd_reset, s); return 0; } -diff -ur qemu-0.13.0~rc0+dfsg/qemu-options.hx qemu-0.13.0~rc0+dfsg-2.mod/qemu-options.hx ---- qemu-0.13.0~rc0+dfsg/qemu-options.hx 2010-09-21 14:52:34.000000000 +0200 -+++ qemu-0.13.0~rc0+dfsg-2.mod/qemu-options.hx 2010-09-21 14:44:38.000000000 +0200 +Index: qemu-0.13.0~rc0+dfsg/qemu-options.hx +=================================================================== +--- qemu-0.13.0~rc0+dfsg.orig/qemu-options.hx 2010-10-07 14:33:55.000000000 +0200 ++++ qemu-0.13.0~rc0+dfsg/qemu-options.hx 2010-10-07 14:35:37.000000000 +0200 @@ -1750,6 +1750,15 @@ @end table ETEXI @@ -142,10 +146,19 @@ DEF("parallel", HAS_ARG, QEMU_OPTION_parallel, \ "-parallel dev redirect the parallel port to char device 'dev'\n", QEMU_ARCH_ALL) -diff -ur qemu-0.13.0~rc0+dfsg/vl.c qemu-0.13.0~rc0+dfsg-2.mod/vl.c ---- qemu-0.13.0~rc0+dfsg/vl.c 2010-07-29 03:54:57.000000000 +0200 -+++ qemu-0.13.0~rc0+dfsg-2.mod/vl.c 2010-09-21 14:44:38.000000000 +0200 -@@ -2039,6 +2039,9 @@ +Index: qemu-0.13.0~rc0+dfsg/vl.c +=================================================================== +--- qemu-0.13.0~rc0+dfsg.orig/vl.c 2010-10-07 14:33:53.000000000 +0200 ++++ qemu-0.13.0~rc0+dfsg/vl.c 2010-10-07 14:35:37.000000000 +0200 +@@ -222,6 +222,7 @@ + unsigned int nb_prom_envs = 0; + const char *prom_envs[MAX_PROM_ENVS]; + int boot_menu; ++int isa_psaux = 1; + + int nb_numa_nodes; + uint64_t node_mem[MAX_NODES]; +@@ -2039,6 +2040,9 @@ case QEMU_OPTION_portrait: graphic_rotate = 1; break; @@ -155,13 +168,3 @@ case QEMU_OPTION_kernel: kernel_filename = optarg; break; ---- a/vl.c 2010-09-21 15:40:11.000000000 +0200 -+++ a/vl.c 2010-09-21 15:42:04.000000000 +0200 -@@ -222,6 +222,7 @@ - unsigned int nb_prom_envs = 0; - const char *prom_envs[MAX_PROM_ENVS]; - int boot_menu; -+int isa_psaux = 1; - - int nb_numa_nodes; - uint64_t node_mem[MAX_NODES]; diff -ur qemu-0.13.0~rc0+dfsg/hw/ps2.c qemu-0.13.0~rc0+dfsg.ps2dump/hw/ps2.c --- qemu-0.13.0~rc0+dfsg/hw/ps2.c 2010-07-29 03:54:56.000000000 +0200 +++ qemu-0.13.0~rc0+dfsg.ps2dump/hw/ps2.c 2010-10-07 15:07:17.000000000 +0200 @@ -120,7 +120,7 @@ 19, 25, 57, 81, 83, 92, 95, 98, 99,100,101,103,104,106,109,110 }; -void ps2_queue(void *opaque, int b) +void ps2_queue(void *opaque, int b, int aux) { PS2State *s = (PS2State *)opaque; PS2Queue *q = &s->queue; @@ -132,6 +132,7 @@ q->wptr = 0; q->count++; s->update_irq(s->update_arg, 1); + if (aux) fprintf(stderr, "ps2_queue_aux : 0x%02x\n", b); } /* @@ -147,10 +148,10 @@ if (!s->translate && keycode < 0xe0 && s->scancode_set == 2) { if (keycode & 0x80) - ps2_queue(&s->common, 0xf0); + ps2_queue(&s->common, 0xf0, 0); keycode = ps2_raw_keycode[keycode & 0x7f]; } - ps2_queue(&s->common, keycode); + ps2_queue(&s->common, keycode, 0); } uint32_t ps2_read_data(void *opaque) @@ -177,6 +178,7 @@ s->update_irq(s->update_arg, 0); /* reassert IRQs if data left */ s->update_irq(s->update_arg, q->count != 0); + fprintf(stderr, "ps2_read_data : 0x%02x\n", val); } return val; } @@ -197,50 +199,50 @@ case -1: switch(val) { case 0x00: - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); break; case 0x05: - ps2_queue(&s->common, KBD_REPLY_RESEND); + ps2_queue(&s->common, KBD_REPLY_RESEND, 0); break; case KBD_CMD_GET_ID: - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); /* We emulate a MF2 AT keyboard here */ - ps2_queue(&s->common, KBD_REPLY_ID); + ps2_queue(&s->common, KBD_REPLY_ID, 0); if (s->translate) - ps2_queue(&s->common, 0x41); + ps2_queue(&s->common, 0x41, 0); else - ps2_queue(&s->common, 0x83); + ps2_queue(&s->common, 0x83, 0); break; case KBD_CMD_ECHO: - ps2_queue(&s->common, KBD_CMD_ECHO); + ps2_queue(&s->common, KBD_CMD_ECHO, 0); break; case KBD_CMD_ENABLE: s->scan_enabled = 1; - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); break; case KBD_CMD_SCANCODE: case KBD_CMD_SET_LEDS: case KBD_CMD_SET_RATE: s->common.write_cmd = val; - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); break; case KBD_CMD_RESET_DISABLE: ps2_reset_keyboard(s); s->scan_enabled = 0; - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); break; case KBD_CMD_RESET_ENABLE: ps2_reset_keyboard(s); s->scan_enabled = 1; - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); break; case KBD_CMD_RESET: ps2_reset_keyboard(s); - ps2_queue(&s->common, KBD_REPLY_ACK); - ps2_queue(&s->common, KBD_REPLY_POR); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); + ps2_queue(&s->common, KBD_REPLY_POR, 0); break; default: - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); break; } break; @@ -255,17 +257,17 @@ } else { if (val >= 1 && val <= 3) s->scancode_set = val; - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); } s->common.write_cmd = -1; break; case KBD_CMD_SET_LEDS: kbd_put_ledstate(val); - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); s->common.write_cmd = -1; break; case KBD_CMD_SET_RATE: - ps2_queue(&s->common, KBD_REPLY_ACK); + ps2_queue(&s->common, KBD_REPLY_ACK, 0); s->common.write_cmd = -1; break; } @@ -299,9 +301,9 @@ else if (dy1 < -127) dy1 = -127; b = 0x08 | ((dx1 < 0) << 4) | ((dy1 < 0) << 5) | (s->mouse_buttons & 0x07); - ps2_queue(&s->common, b); - ps2_queue(&s->common, dx1 & 0xff); - ps2_queue(&s->common, dy1 & 0xff); + ps2_queue(&s->common, b, 1); + ps2_queue(&s->common, dx1 & 0xff, 1); + ps2_queue(&s->common, dy1 & 0xff, 1); /* extra byte for IMPS/2 or IMEX */ switch(s->mouse_type) { default: @@ -311,7 +313,7 @@ dz1 = 127; else if (dz1 < -127) dz1 = -127; - ps2_queue(&s->common, dz1 & 0xff); + ps2_queue(&s->common, dz1 & 0xff, 1); break; case 4: if (dz1 > 7) @@ -319,7 +321,7 @@ else if (dz1 < -7) dz1 = -7; b = (dz1 & 0x0f) | ((s->mouse_buttons & 0x18) << 1); - ps2_queue(&s->common, b); + ps2_queue(&s->common, b, 1); break; } @@ -377,75 +379,75 @@ if (s->mouse_wrap) { if (val == AUX_RESET_WRAP) { s->mouse_wrap = 0; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); return; } else if (val != AUX_RESET) { - ps2_queue(&s->common, val); + ps2_queue(&s->common, val, 1); return; } } switch(val) { case AUX_SET_SCALE11: s->mouse_status &= ~MOUSE_STATUS_SCALE21; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_SET_SCALE21: s->mouse_status |= MOUSE_STATUS_SCALE21; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_SET_STREAM: s->mouse_status &= ~MOUSE_STATUS_REMOTE; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_SET_WRAP: s->mouse_wrap = 1; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_SET_REMOTE: s->mouse_status |= MOUSE_STATUS_REMOTE; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_GET_TYPE: - ps2_queue(&s->common, AUX_ACK); - ps2_queue(&s->common, s->mouse_type); + ps2_queue(&s->common, AUX_ACK, 1); + ps2_queue(&s->common, s->mouse_type, 1); break; case AUX_SET_RES: case AUX_SET_SAMPLE: s->common.write_cmd = val; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_GET_SCALE: - ps2_queue(&s->common, AUX_ACK); - ps2_queue(&s->common, s->mouse_status); - ps2_queue(&s->common, s->mouse_resolution); - ps2_queue(&s->common, s->mouse_sample_rate); + ps2_queue(&s->common, AUX_ACK, 1); + ps2_queue(&s->common, s->mouse_status, 1); + ps2_queue(&s->common, s->mouse_resolution, 1); + ps2_queue(&s->common, s->mouse_sample_rate, 1); break; case AUX_POLL: - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); ps2_mouse_send_packet(s); break; case AUX_ENABLE_DEV: s->mouse_status |= MOUSE_STATUS_ENABLED; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_DISABLE_DEV: s->mouse_status &= ~MOUSE_STATUS_ENABLED; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_SET_DEFAULT: s->mouse_sample_rate = 100; s->mouse_resolution = 2; s->mouse_status = 0; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); break; case AUX_RESET: s->mouse_sample_rate = 100; s->mouse_resolution = 2; s->mouse_status = 0; s->mouse_type = 0; - ps2_queue(&s->common, AUX_ACK); - ps2_queue(&s->common, 0xaa); - ps2_queue(&s->common, s->mouse_type); + ps2_queue(&s->common, AUX_ACK, 1); + ps2_queue(&s->common, 0xaa, 1); + ps2_queue(&s->common, s->mouse_type, 1); break; default: break; @@ -479,12 +481,12 @@ s->mouse_detect_state = 0; break; } - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); s->common.write_cmd = -1; break; case AUX_SET_RES: s->mouse_resolution = val; - ps2_queue(&s->common, AUX_ACK); + ps2_queue(&s->common, AUX_ACK, 1); s->common.write_cmd = -1; break; } diff -ur qemu-0.13.0~rc0+dfsg/hw/ps2.h qemu-0.13.0~rc0+dfsg.ps2dump/hw/ps2.h --- qemu-0.13.0~rc0+dfsg/hw/ps2.h 2010-05-04 17:27:48.000000000 +0200 +++ qemu-0.13.0~rc0+dfsg.ps2dump/hw/ps2.h 2010-10-07 14:32:42.000000000 +0200 @@ -4,6 +4,6 @@ void ps2_write_mouse(void *, int val); void ps2_write_keyboard(void *, int val); uint32_t ps2_read_data(void *); -void ps2_queue(void *, int b); +void ps2_queue(void *, int b, int aux); void ps2_keyboard_set_translation(void *opaque, int mode); void ps2_mouse_fake_event(void *opaque);