Gregory,
On Mon, Oct 12, 2015 at 2:17 AM, Gregory Herrero
<[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html