PL050 KMIDATA register does not reset static uint32_t pl050_read(void *opaque, target_phys_addr_t offset){ ... case 2: /* KMIDATA */ if (s->pending) s->last = ps2_read_data(s->dev); return s->last; } When the receive queue is empty (s->pending is false), is the KMIDATA register supposed to be reset to 0x00? In the current implementation, the KMIDATA does not reverse its value after interrupt is lowered.