On Wed, Jun 24, 2020 at 03:43:20AM -0600, Patrick Wildt wrote:
> CVSROOT:      /cvs
> Module name:  src
> Changes by:   patr...@cvs.openbsd.org 2020/06/24 03:43:20
> 
> Modified files:
>       sys/dev/usb    : xhci.c 
> 
> Log message:
> Acknowledge xhci(4) interrupts before calling usb_schedsoftintr().
> 
> On powerdown (halt -p), sd(4)'s suspend function tries to powerdown
> a USB mass storage using a STOP command.  In that case we are already
> cold and splhigh(), so that the xhci is supposed to run in polling-
> mode.
> 
> usb_schedsoftintr() behaves differently when running in polling-mode.
> Instead of scheduling a soft interrupt, it immediately dequeues from
> the event queue.  But dequeueing means touching the xhci registers.
> 
> Apparently we need to acknowledge the interrupts before touching those
> registers, the hardware doesn't like it otherwise and we will never get
> an interrupt status for the second transfer.
> 
> ok gerhard@

and ok mpi@

Reply via email to