On Wed, Aug 24, 2022 at 9:14 AM Piyush Mehta <piyush.mehta@xxxxxxx> wrote: > For ARM processor, unaligned access to device memory is not allowed. > Method memcpy does not take care of alignment. > > USB detection failure with the unaligned address of memory access, with > below kernel crash. To fix the unaligned address the kernel panic issue, > replace memcpy with memcpy_toio method. > > Kernel crash: > Unable to handle kernel paging request at virtual address ffff80000c05008a > Mem abort info: > ESR = 0x96000061 > EC = 0x25: DABT (current EL), IL = 32 bits > SET = 0, FnV = 0 > EA = 0, S1PTW = 0 > FSC = 0x21: alignment fault > Data abort info: > ISV = 0, ISS = 0x00000061 > CM = 0, WnR = 1 > swapper pgtable: 4k pages, 48-bit VAs, pgdp=000000000143b000 > [ffff80000c05008a] pgd=100000087ffff003, p4d=100000087ffff003, > pud=100000087fffe003, pmd=1000000800bcc003, pte=00680000a0010713 > Internal error: Oops: 96000061 [#1] SMP > Modules linked in: > CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.15.19-xilinx-v2022.1 #1 > Hardware name: ZynqMP ZCU102 Rev1.0 (DT) > pstate: 200000c5 (nzCv daIF -PAN -UAO -TCO -DIT -SSBS BTYPE=--) > pc : __memcpy+0x30/0x260 > lr : __xudc_ep0_queue+0xf0/0x110 > sp : ffff800008003d00 > x29: ffff800008003d00 x28: ffff800009474e80 x27: 00000000000000a0 > x26: 0000000000000100 x25: 0000000000000012 x24: ffff000800bc8080 > x23: 0000000000000001 x22: 0000000000000012 x21: ffff000800bc8080 > x20: 0000000000000012 x19: ffff000800bc8080 x18: 0000000000000000 > x17: ffff800876482000 x16: ffff800008004000 x15: 0000000000004000 > x14: 00001f09785d0400 x13: 0103020101005567 x12: 0781400000000200 > x11: 00000000c5672a10 x10: 00000000000008d0 x9 : ffff800009463cf0 > x8 : ffff8000094757b0 x7 : 0201010055670781 x6 : 4000000002000112 > x5 : ffff80000c05009a x4 : ffff000800a15012 x3 : ffff00080362ad80 > x2 : 0000000000000012 x1 : ffff000800a15000 x0 : ffff80000c050088 > Call trace: > __memcpy+0x30/0x260 > xudc_ep0_queue+0x3c/0x60 > usb_ep_queue+0x38/0x44 > composite_ep0_queue.constprop.0+0x2c/0xc0 > composite_setup+0x8d0/0x185c > configfs_composite_setup+0x74/0xb0 > xudc_irq+0x570/0xa40 > __handle_irq_event_percpu+0x58/0x170 > handle_irq_event+0x60/0x120 > handle_fasteoi_irq+0xc0/0x220 > handle_domain_irq+0x60/0x90 > gic_handle_irq+0x74/0xa0 > call_on_irq_stack+0x2c/0x60 > do_interrupt_handler+0x54/0x60 > el1_interrupt+0x30/0x50 > el1h_64_irq_handler+0x18/0x24 > el1h_64_irq+0x78/0x7c > arch_cpu_idle+0x18/0x2c > do_idle+0xdc/0x15c > cpu_startup_entry+0x28/0x60 > rest_init+0xc8/0xe0 > arch_call_rest_init+0x10/0x1c > start_kernel+0x694/0x6d4 > __primary_switched+0xa4/0xac > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 1f7c51660034 ("usb: gadget: Add xilinx usb2 device support") > Signed-off-by: Piyush Mehta <piyush.mehta@xxxxxxx> > --- > Changes in V2: > - Address Greg KH review comments: > - Added information in the form of a Fixes: commit Id (commit message). > - Cc stable kernel. > > Link:https://lore.kernel.org/all/YwW8zE8ieLCsSxPN@xxxxxxxxx/ That link should be up under the commit message, but it's not very important. The solution looks reasonable. Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Yours, Linus Walleij