usb-uhci: fix expire time initialization.
expire_time must be initialited when the guest activates the usb scheduler, not at device creation time. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
9bba1eb180
commit
94cc916a8c
|
@ -424,6 +424,8 @@ static void uhci_ioport_writew(void *opaque, uint32_t addr, uint32_t val)
|
||||||
case 0x00:
|
case 0x00:
|
||||||
if ((val & UHCI_CMD_RS) && !(s->cmd & UHCI_CMD_RS)) {
|
if ((val & UHCI_CMD_RS) && !(s->cmd & UHCI_CMD_RS)) {
|
||||||
/* start frame processing */
|
/* start frame processing */
|
||||||
|
s->expire_time = qemu_get_clock_ns(vm_clock) +
|
||||||
|
(get_ticks_per_sec() / FRAME_TIMER_FREQ);
|
||||||
qemu_mod_timer(s->frame_timer, qemu_get_clock_ns(vm_clock));
|
qemu_mod_timer(s->frame_timer, qemu_get_clock_ns(vm_clock));
|
||||||
s->status &= ~UHCI_STS_HCHALTED;
|
s->status &= ~UHCI_STS_HCHALTED;
|
||||||
} else if (!(val & UHCI_CMD_RS)) {
|
} else if (!(val & UHCI_CMD_RS)) {
|
||||||
|
@ -1131,8 +1133,6 @@ static int usb_uhci_common_initfn(UHCIState *s)
|
||||||
usb_port_location(&s->ports[i].port, NULL, i+1);
|
usb_port_location(&s->ports[i].port, NULL, i+1);
|
||||||
}
|
}
|
||||||
s->frame_timer = qemu_new_timer_ns(vm_clock, uhci_frame_timer, s);
|
s->frame_timer = qemu_new_timer_ns(vm_clock, uhci_frame_timer, s);
|
||||||
s->expire_time = qemu_get_clock_ns(vm_clock) +
|
|
||||||
(get_ticks_per_sec() / FRAME_TIMER_FREQ);
|
|
||||||
s->num_ports_vmstate = NB_PORTS;
|
s->num_ports_vmstate = NB_PORTS;
|
||||||
QTAILQ_INIT(&s->async_pending);
|
QTAILQ_INIT(&s->async_pending);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue