Re: [RFC] xhci: Intel Panther Point BEI quirk.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 24, 2012 at 07:58:04PM -0700, Andiry Xu wrote:
> On Mon, Sep 24, 2012 at 3:35 PM, Sarah Sharp
> <sarah.a.sharp@xxxxxxxxxxxxxxx> wrote:
> > On Mon, Sep 24, 2012 at 01:05:08PM -0700, Sarah Sharp wrote:
> >> On Mon, Sep 24, 2012 at 03:50:04PM -0400, Alan Stern wrote:
> >> > On Mon, 24 Sep 2012, Sarah Sharp wrote:
> >> >
> >> > > When a device with an isochronous endpoint is behind a hub plugged into
> >> > > the Intel Panther Point xHCI host controller, and the driver submits
> >> > > multiple frames per URB, the xHCI driver will set the Block Event
> >> > > Interrupt (BEI) flag on all but the last TD for the URB.  This causes
> >> > > the host controller to place an event on the event ring, but not send an
> >> > > interrupt.  When the last TD for the URB completes, BEI is cleared, and
> >> > > we get an interrupt for the whole URB.
> >> > >
> >> > > However, under a Panther Point xHCI host controller, if the parent hub
> >> > > is unplugged when one or more events from transfers with BEI set are on
> >> > > the event ring, a port status change event is placed on the event ring,
> >> > > but no interrupt is generated.  This means URBs stop completing, and the
> >> > > USB device disconnect is not noticed.  Something like a USB headset will
> >> > > cause mplayer to hang when the device is disconnected.
> >> >
> >> > Won't that also cause a problem for hot-unplug detection?  How will the
> >> > hub driver learn about the unplug event if there's no interrupt?
> >>
> >> There will be an interrupt if we don't use the BEI flag.  That's what
> >> this patch fixes.
> >>
> >> The BEI flag is only supposed to block isochronous interrupts, and only
> >> if there was no error associated with the transfer.  But the Panther
> >> Point xHCI host is broken, and the BEI flag stops unrelated interrupts,
> >> like the port status change event interrupt.
> >>
> >> > Also, does this same problem affect bulk transfers, in particular those
> >> > using scatter-gather?
> >>
> >> Bulk transfers, including scatter-gather transfers, are always
> >> translated into one TD, and the BEI flag is not used.  AFAIK, this bug
> >> only affects transfers with the BEI flag set, so bulk transfers should
> >> be fine.
> >
> > Alan, any more questions on this patch?  I'd like to get it (and a
> > couple other bug fixes) pushed to Greg this week before the 3.7 merge
> > window.
> >
> 
> Does this bug only affect isoc devices behind a hub? Can the
> workaround be limited so devices connected to the root hub can still
> use BEI?

I don't think it's isolated to isoc devices behind a hub, but I'll
double check with the hardware guys.

Sarah Sharp
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux