[SeaBIOS] Intermittent USB keyboard freeze

Gabriel L. Somlo gsomlo at gmail.com
Tue Feb 4 18:45:27 CET 2014


On Tue, Feb 04, 2014 at 12:27:47PM -0500, Kevin O'Connor wrote:
> The qemu patch below does fix it for me. 

This fixes it for me as well.

Thanks,
--G

> I think clearing the cache
> on reset is probably simpler then trying to verify the cache later on.
> It would be even better to clear the cache on a set_address command
> (to cover the admittedly obscure case of an OS changing a device's
> address later on).  But, I'm not familiar enough with the QEMU code to
> attempt that.
> 
> -Kevin
> 
> 
> --- a/hw/usb/hcd-uhci.c
> +++ b/hw/usb/hcd-uhci.c
> @@ -550,6 +552,13 @@ static void uhci_port_write(void *opaque, hwaddr addr,
>                       !(port->ctrl & UHCI_PORT_RESET) ) {
>                      usb_device_reset(dev);
>                  }
> +                UHCIQueue *queue, *nq;
> +
> +                QTAILQ_FOREACH_SAFE(queue, &s->queues, next, nq) {
> +                    if (queue->token == 0) {
> +                        uhci_queue_free(queue, "reset-port");
> +                    }
> +                }
>              }
>              port->ctrl &= UHCI_PORT_READ_ONLY;
>              /* enabled may only be set if a device is connected */



More information about the SeaBIOS mailing list