Gregory, On Mon, Oct 12, 2015 at 2:17 AM, Gregory Herrero <gregory.herrero@xxxxxxxxx> wrote: > - qh->desc_list = kzalloc(qh->desc_list_sz, flags | GFP_DMA32); > + qh->desc_list = kmem_cache_zalloc(desc_cache, flags | GFP_DMA32); I haven't gotten your series to work yet on Rockchip rk3288, but when I was trying the first error I got was a crash due to this line. Specifically: BUG_ON(flags & GFP_SLAB_BUG_MASK); In "new_slab()" in slub.c. I'm running on kernel 3.14 (with dwc2 backported), so maybe things are different on ToT mainline, but I still see this in mainline: if (unlikely(flags & GFP_SLAB_BUG_MASK)) { pr_emerg("gfp: %u\n", flags & GFP_SLAB_BUG_MASK); BUG(); } I see that: mm/internal.h:#define GFP_SLAB_BUG_MASK (__GFP_DMA32|__GFP_HIGHMEM|~__GFP_BITS_MASK) The stack crawl I had was: [<c020ff38>] (new_slab) from [<c0211a94>] (__slab_alloc.constprop.65+0x49c/0x548) [<c0211a94>] (__slab_alloc.constprop.65) from [<c0211f58>] (kmem_cache_alloc+0x68/0x174) [<c0211f58>] (kmem_cache_alloc) from [<c0462b7c>] (dwc2_hcd_qh_init_ddma+0x94/0x2f0) [<c0462b7c>] (dwc2_hcd_qh_init_ddma) from [<c0461c6c>] (dwc2_hcd_qh_create+0x1f4/0x23c) [<c0461c6c>] (dwc2_hcd_qh_create) from [<c045dd90>] (_dwc2_hcd_urb_enqueue+0x250/0x558) [<c045dd90>] (_dwc2_hcd_urb_enqueue) from [<c0449690>] (usb_hcd_submit_urb+0x694/0x7e0) [<c0449690>] (usb_hcd_submit_urb) from [<c044a814>] (usb_submit_urb+0x3f8/0x428) [<c044a814>] (usb_submit_urb) from [<c044af64>] (usb_start_wait_urb+0x60/0xe8) [<c044af64>] (usb_start_wait_urb) from [<c044b0b0>] (usb_control_msg+0xc4/0x104) [<c044b0b0>] (usb_control_msg) from [<c0444814>] (hub_port_init+0x368/0x948) [<c0444814>] (hub_port_init) from [<c044618c>] (hub_thread+0x898/0xf4c) [<c044618c>] (hub_thread) from [<c013e970>] (kthread+0xe4/0xfc) [<c013e970>] (kthread) from [<c0106278>] (ret_from_fork+0x14/0x20) Anyway, I'll try to continue to debug a little tomorrow, but I figured I'd post my findings for now. When I reverted this patch and tried to enable DMA descriptor transfers, I got no crash but got: [ 40.956331] dwc2 ff540000.usb: AHB ERROR, Channel 0 [ 40.961214] dwc2 ff540000.usb: hcchar 0x80b418c0, hcsplt 0x00000000 [ 40.967652] dwc2 ff540000.usb: hctsiz 0x60003fff, hc_dma 0x20c3b0c0 [ 40.974084] dwc2 ff540000.usb: Device address: 2 [ 40.978868] dwc2 ff540000.usb: Endpoint: 3, OUT [ 40.983565] dwc2 ff540000.usb: Endpoint type: ISOCHRONOUS [ 40.989129] dwc2 ff540000.usb: Speed: FULL [ 40.993392] dwc2 ff540000.usb: Max packet size: 192 [ 40.998434] dwc2 ff540000.usb: Data buffer length: 1152 [ 41.003824] dwc2 ff540000.usb: Transfer buffer: f142d000, Transfer DMA: 258f6000 [ 41.011383] dwc2 ff540000.usb: Setup buffer: (null), Setup DMA: 00000000 [ 41.018420] dwc2 ff540000.usb: Interval: 1 ...I haven't tried debugging that at all yet. ;) -Doug -- 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