> -----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�����٥