Subject: using srio in linux2.6.34.6 causes kernel panic

From: liulijun <[email-masked]>
Date: Mon, 27 Jul 2015 14:26:40 +0800

I've been struggling with a kernel panic during enumeration of a Rapid IO system.
I am using the AM4140 with Freescale P4080 processor.  The Linux kernel'version is 2.6.34.6.  I've set riohdid=0 on the kernel command line.But when the OS boots up,the kernel panic as following:
DP-Lite hash table entries: 512 (order: 2, 16384 bytes)                                                                     NET: Registered protocol family 1                                                                                            RPC: Registered udp transport module.                                                                                        RPC: Registered tcp transport module.                                                                                        RPC: Registered tcp NFSv4.1 backchannel transport module.                                                                    Setting Freescale static PAMU/IOMMU configuration                                                                            Freescale PowerQUICC MII Bus: probed                                                                                         Setting up RapidIO peer-to-peer network /rapidio@ffe0c0000                                                                   fsl-of-rio ffe0c0000.rapidio: Of-device full name /rapidio@ffe0c0000                                                         fsl-of-rio ffe0c0000.rapidio: Regs: [mem 0xffe0c0000-0xffe0dffff]                                                            fsl-of-rio ffe0c0000.rapidio: LAW start 0x0000000dc0000000, size 0x0000000002000000.                                         fsl-of-rio ffe0c0000.rapidio: errirq: 16, bellirq: 57, txirq: 60, rxirq 61                                                   fsl-of-rio ffe0c0000.rapidio: RapidIO PHY type: serial                                                                       fsl-of-rio ffe0c0000.rapidio: Hardware port width: 4                                                                         fsl-of-rio ffe0c0000.rapidio: Training connection status: Four-lane                                                          fsl-of-rio ffe0c0000.rapidio: RapidIO Common Transport System size: 256                                                      RIO: enumerate master port 0, RIO0 mport                                                                                     Unrecoverable FP Unavailable Exception 801 at deadbeec                                                                       Oops: Unrecoverable FP Unavailable Exception, sig: 6 [#1]                                                                    SMP NR_CPUS=8 D0801-AM4140                                                                                                   last sysfs file:                                                                                                             Modules linked in:                                                                                                           NIP: deadbeec LR: c0495914 CTR: deadbeef                                                                                     REGS: eb073cc0 TRAP: 0801   Not tainted  (2.6.34.6)                                                                          MSR: 00029002 <EE,ME,CE>  CR: 24042024  XER: 00000000                                                                        TASK = eb05da30[1] 'swapper' THREAD: eb072000 CPU: 6                                                                         GPR00: deadbeef eb073d70 eb05da30 eb1fbc00 000000ff 00000000 000000ff 00000000                                               GPR08: 00000004 eb539640 f1150c20 eb5c0000 24042022                                                                          NIP [deadbeec] 0xdeadbeec                                                                                                    LR [c0495914] rio_enum_peer+0x1b8/0x3e4                                                                                      Call Trace:                                                                                                                  [eb073d70] [c04958e4] rio_enum_peer+0x188/0x3e4 (unreliable)                                                                 [eb073dd0] [c0495c28] rio_enum_mport+0xe8/0x244                                                                              [eb073e10] [c049504c] rio_init_mports+0x90/0xe4                                                                              [eb073e30] [c0492648] fsl_of_rio_rpn_probe+0x3c/0x50                                                                         [eb073e40] [c03c6a14] of_platform_device_probe+0x58/0x98                                                                     [eb073e60] [c02b395c] driver_probe_device+0xa4/0x1b4       [eb073ed0] [c02b2f94] bus_probe_device+0x2c/0x44                                                                             [eb073ee0] [c02b0c34] device_add+0x40c/0x4c0                                                                                 [eb073f30] [c03c6580] of_device_register+0x34/0x48                                                                           [eb073f40] [c0009010] of_platform_device_create+0x44/0x74                                                                    [eb073f50] [c000923c] of_platform_bus_probe+0x130/0x15c                                                                      [eb073f70] [c0607d90] declare_of_platform_devices+0x24/0x140                                                                 [eb073f90] [c0607ab8] __machine_initcall_d0801_declare_of_platform_devices+0x2c/0x3c[eb073fa0] [c0001dd0] do_one_initcall+0x3c/0x1d0[eb073fd0] [c05fe9ec] kernel_init+0x190/0x230[eb073ff0] [c000f804] kernel_thread+0x4c/0x68Instruction dump:XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX---[ end trace 561bb236c800851f ]---Kernel panic - not syncing: Attempted to kill init!Call Trace:[eb073bc0] [c0007548] show_stack+0x44/0x160 (unreliable)[eb073bf0] [c048e774] panic+0x90/0x104[eb073c40] [c0046b38] do_exit+0x61c/0x668[eb073c90] [c000cf1c] die+0xdc/0x1b8[eb073cb0] [c00100e0] ret_from_except+0x0/0x18[eb073d70] [c04958e4] rio_enum_peer+0x188/0x3e4[eb073dd0] [c0495c28] rio_enum_mport+0xe8/0x244[eb073e10] [c049504c] rio_init_mports+0x90/0xe4[eb073e30] [c0492648] fsl_of_rio_rpn_probe+0x3c/0x50[eb073e40] [c03c6a14] of_platform_device_probe+0x58/0x98[eb073e60] [c02b395c] driver_probe_device+0xa4/0x1b4[eb073e80] [c02b2598] bus_for_each_drv+0x6c/0xa8[eb073eb0] [c02b37e0] device_attach+0xa4/0xc8[eb073ed0] [c02b2f94] bus_probe_device+0x2c/0x44[eb073ee0] [c02b0c34] device_add+0x40c/0x4c0[eb073f30] [c03c6580] of_device_register+0x34/0x48[eb073f40] [c0009010] of_platform_device_create+0x44/0x74[eb073f50] [c000923c] of_platform_bus_probe+0x130/0x15c[eb073f70] [c0607d90] declare_of_platform_devices+0x24/0x140[eb073f90] [c0607ab8] __machine_initcall_d0801_declare_of_platform_devices+0x2c/0x3c[eb073fa0] [c0001dd0] do_one_initcall+0x3c/0x1d0[eb073fd0] [c05fe9ec] kernel_init+0x190/0x230[eb073ff0] [c000f804] kernel_thread+0x4c/0x68ipmi message handler version 39.2could not create IPMI user, error -22Rebooting in 180 seconds..             
I donnot know how to deal with it.Do you have any ideas?
Thanks very much!!

liulijun