• Anatolij Gustschin's avatar
    USB: ehci-fsl: Fix kernel crash on mpc5121e · f941f692
    Anatolij Gustschin authored
    Since commit 28c56ea1
    (powerpc/usb: fix bug of kernel hang when initializing usb)
    the kernel crashes on mpc5121e. mpc5121e doesn't have system interface
    registers, accessing this register address space cause the machine check
    exception and a kernel crash:
    ...
    [    1.294596] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    [    1.316491] fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
    [    1.337334] fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
    [    1.358548] Machine check in kernel mode.
    [    1.375917] Caused by (from SRR1=49030): Transfer error ack signal
    [    1.395505] Oops: Machine check, sig: 7 [#1]
    [    1.413113] MPC5121 ADS
    [    1.428718] Modules linked in:
    [    1.444841] NIP: c026efc4 LR: c0278b50 CTR: 00000000
    [    1.463342] REGS: df837ba0 TRAP: 0200   Not tainted  (3.3.0-08839-gb5174fa3)
    [    1.484083] MSR: 00049030 <EE,ME,IR,DR>  CR: 42042022  XER: 20000000
    [    1.504099] TASK = df834000[1] 'swapper' THREAD: df836000
    [    1.509667] GPR00: 1c000000 df837c50 df834000 df9d74e0 00000003 00000010 00000000 00000000
    [    1.531650] GPR08: 00000020 00000000 c037cdd8 e1088000 22042028 1001a69c 00000000 00000000
    [    1.553762] GPR16: 1ffbce70 00000000 1fef5b28 1fef3e08 00000000 00000000 1ffcbc7c c045b264
    [    1.575824] GPR24: 0000008b 00000002 c04a7dd0 e1088000 df33c960 df9d74e0 00000000 df9d7400
    [    1.612295] NIP [c026efc4] ehci_fsl_setup_phy+0x110/0x124
    [    1.632454] LR [c0278b50] ehci_fsl_setup+0x29c/0x304
    [    1.652065] Call Trace:
    [    1.668923] [df837c50] [c0278a40] ehci_fsl_setup+0x18c/0x304 (unreliable)
    [    1.690332] [df837c70] [c025cba4] usb_add_hcd+0x1f0/0x66c
    [    1.710377] [df837cb0] [c0277ab8] ehci_fsl_drv_probe+0x180/0x308
    [    1.731322] [df837ce0] [c01fc7a8] platform_drv_probe+0x20/0x30
    [    1.752202] [df837cf0] [c01fb0ac] driver_probe_device+0x8c/0x214
    [    1.773491] [df837d10] [c01f956c] bus_for_each_drv+0x6c/0xa8
    [    1.794279] [df837d40] [c01fafdc] device_attach+0xb4/0xd8
    [    1.814574] [df837d60] [c01fa44c] bus_probe_device+0xa4/0xb4
    [    1.835343] [df837d80] [c01f87a8] device_add+0x52c/0x5dc
    [    1.855462] [df837dd0] [c01fcd58] platform_device_add+0x124/0x1d0
    [    1.876558] [df837df0] [c036dcec] fsl_usb2_device_register+0xa0/0xd4
    [    1.897512] [df837e10] [c036df28] fsl_usb2_mph_dr_of_probe+0x208/0x264
    [    1.918253] [df837e90] [c01fc7a8] platform_drv_probe+0x20/0x30
    [    1.938300] [df837ea0] [c01fb0ac] driver_probe_device+0x8c/0x214
    [    1.958511] [df837ec0] [c01fb2f0] __driver_attach+0xbc/0xc0
    [    1.978088] [df837ee0] [c01f9608] bus_for_each_dev+0x60/0x9c
    [    1.997589] [df837f10] [c01fab88] driver_attach+0x24/0x34
    [    2.016757] [df837f20] [c01fa744] bus_add_driver+0x1ac/0x274
    [    2.036339] [df837f50] [c01fb898] driver_register+0x88/0x150
    [    2.056052] [df837f70] [c01fcabc] platform_driver_register+0x68/0x78
    [    2.076650] [df837f80] [c0446500] fsl_usb2_mph_dr_driver_init+0x18/0x28
    [    2.097734] [df837f90] [c0003988] do_one_initcall+0x148/0x1b0
    [    2.117934] [df837fc0] [c042d89c] kernel_init+0xfc/0x190
    [    2.137667] [df837ff0] [c000d2c4] kernel_thread+0x4c/0x68
    [    2.157240] Instruction dump:
    [    2.174119] 90050004 4e800020 2f840003 419e0014 2f840004 409eff64 6400c000 4bffff5c
    [    2.196000] 64001000 7c0004ac 812b0500 0c090000 <4c00012c> 61290200 7c0004ac 912b0500
    [    2.218100] ---[ end trace 21659aedb84ad816 ]---
    [    2.237089]
    [    3.232940] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000007
    [    3.232954]
    [    3.271575] Rebooting in 1 seconds..
    
    Check pdata->have_sysif_regs flag before accessing system interface
    registers.
    Signed-off-by: default avatarAnatolij Gustschin <agust@denx.de>
    Cc: Shengzhou Liu <Shengzhou.Liu@freescale.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    f941f692
ehci-fsl.c 18.2 KB