On Thu, 22 Jan 2015, Vivek Gautam wrote: > Hi all, > > > While working on our test board with Exynos7 SoC, we see that across > suspend/resume (Suspend to RAM) the EHCI can't resume the devices connected > to HSIC phy properly. > We have been using 3.16 kernel for our development, but on the ehci-exynos > driver > side there isn't any delta that we have added, and the driver is pretty much > in same shape > as in 3.19 > > We have a HSIC hub connected to the HSIC phy interface on the controller > which gets enumerated during boot up, and the devices connected across this > hub also get enumerated completely. > But once we suspend the system, after resume the hub gets disconnected from > the bus and we see **bad dma** error from dma_pool_free for ehci_qtd. Does the phy get resumed before the EHCI controller? Have you enabled dynamic debugging for usbcore and ehci-hcd? What does a usbmon trace show? > Below is a short log of the resume. > > -------------------------------------------------------------------------- > [ 11.231907] Resume caused by wakeup_stat 0x80000001 > [ 11.232926] PM: noirq resume of devices complete after 0.949 msecs > [ 11.239387] PM: early resume of devices complete after 1.[ 11.244699] > .. > .. > [ 11.262665] usb usb1: root hub lost power or was reset > [ 11.324501] usb usb2: root hub lost power or was reset > [ 11.328747] wake disabled for irq 5 > [ 11.337449] usb usb3: root hub lost power or was reset > [ 11.342472] usb usb4: root hub lost power or was reset > [ 11.360866] wake disabled for irq 6 > [ 11.540541] PM: resume of devices complete after 296.332 msecs > [ 11.545645] Restarting tasks ... > [ 11.549009] usb 1-2: USB disconnect, device number 2 > [ 11.554208] done. > [ 11.555727] exynos-ehci 15510000.usb: dma_pool_free ehci_qtd, > ffffff8000125120/b900002212876c62 (bad dma) > [ 11.564906] exynos-ehci 15510000.usb: dma_pool_free ehci_qtd, > ffffff8000125060/f2a20ae152806402 (bad dma) > -------------------------------------------------------------------------- > Any pointers for debugging this would be very much appreciated. You could add printk statements to the places where things get allocated from and returned to the ehci_qtd pool, namely, ehci_qtd_alloc() and ehci_qtd_free() in drivers/usb/host/ehci-mem.c. Print out the address and the DMA address of each entry and then compare the free's to the alloc's. Alan Stern -- 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