RE: xhci_hcd HC died; cleaning up with TUSB7340 and µPD720201

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

 



> -----Original Message-----
> From: Vignesh R [mailto:vigneshr@xxxxxx]
> Sent: Wednesday, November 22, 2017 5:41 AM
> To: Chris Welch <Chris.Welch@xxxxxxxxxxxxxxxxxx>; Quadros, Roger
> <rogerq@xxxxxx>
> Cc: linux-usb@xxxxxxxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx; Joao Pinto
> <jpinto@xxxxxxxxxxxx>; KISHON VIJAY ABRAHAM <kishon@xxxxxx>
> Subject: Re: xhci_hcd HC died; cleaning up with TUSB7340 and µPD720201
> 
> 
> 
> On Tuesday 21 November 2017 08:20 PM, Chris Welch wrote:
> >
> >
> >> -----Original Message-----
> >> From: Vignesh R [mailto:vigneshr@xxxxxx]
> >> Sent: Tuesday, November 21, 2017 12:48 AM
> >> To: Roger Quadros <rogerq@xxxxxx>
> >> Cc: Chris Welch <Chris.Welch@xxxxxxxxxxxxxxxxxx>;
> >> linux-usb@xxxxxxxxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx; Joao Pinto
> >> <jpinto@xxxxxxxxxxxx>; KISHON VIJAY ABRAHAM <kishon@xxxxxx>
> >> Subject: Re: xhci_hcd HC died; cleaning up with TUSB7340 and
> >> µPD720201
> >>
> >>
> >>
> >> On Monday 20 November 2017 07:01 PM, Roger Quadros wrote:
> >>> On 20/11/17 15:19, Vignesh R wrote:
> >>>>
> >>>>
> >>>> On Monday 20 November 2017 01:31 PM, Roger Quadros wrote:
> >>>> [...]
> >>>>>>
> >>>>>> So, could you try reverting commit 8c934095fa2f3 and also apply
> >>>>>> below patch and let me know if that fixes the issue?
> >>>>>>
> >>>>>> -----------
> >>>>>>
> >>>>>> diff --git a/drivers/pci/dwc/pci-dra7xx.c
> >>>>>> b/drivers/pci/dwc/pci-dra7xx.c index e77a4ceed74c..8280abc56f30
> >>>>>> 100644
> >>>>>> --- a/drivers/pci/dwc/pci-dra7xx.c
> >>>>>> +++ b/drivers/pci/dwc/pci-dra7xx.c
> >>>>>> @@ -259,10 +259,17 @@ static irqreturn_t
> >> dra7xx_pcie_msi_irq_handler(int irq, void *arg)
> >>>>>>         u32 reg;
> >>>>>>
> >>>>>>         reg = dra7xx_pcie_readl(dra7xx,
> >>>>>> PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI);
> >>>>>> +       dra7xx_pcie_writel(dra7xx,
> >>>>>> + PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI, reg);
> >>>>>>
> >>>>>>         switch (reg) {
> >>>>>>         case MSI:
> >>>>>> -               dw_handle_msi_irq(pp);
> >>>>>> +               /*
> >>>>>> +                * Need to make sure no MSI IRQs are pending before
> >>>>>> +                * exiting handler, else the wrapper will not catch new
> >>>>>> +                * IRQs. So loop around till dw_handle_msi_irq() returns
> >>>>>> +                * IRQ_NONE
> >>>>>> +                */
> >>>>>> +               while (dw_handle_msi_irq(pp) != IRQ_NONE);
> >
> > The patch looks good, I haven't had a failure in a few days of testing.
> >
> > You should also look at incorporating the following that I needed to change to
> get our product working.  The first change fixes a miss by one error with the
> interrupt lines.
> >
> > The second change extends a patch you developed for errata i870 but we
> found is applicable to RC operation as well as EPs.  Thanks very much for your
> help!
> 
> BTW, do you have a test case which fails w/o errata i870 workaround?

Yes, we have a PEX8606 PCI switch attached to the RC which fails to probe if the i870 workaround is not used.

The code picks up the wrong class for the switch if the work around is not in place.

> 
> 
> --
> Regards
> Vignesh
��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥




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

  Powered by Linux