<meta http-equiv="content-type" content="text/html; charset=utf-8">Hi,<br><br>We are currently evaluating Serial RapidIO on two WindRiver SBC8548 boards that use a Freescale Powerquicc III processor (MPC8548E rev. 2). We are running U-Boot version 2010.09 as bootloader and are using kernel version 2.6.35.6 stable. <br>
<br>We have consulted multiple resources to collect al the requirements for a successful RapidIO connection (LAW, TLB, Registers) and we seem to have configured everything correctly. However, as soon as the board that is configured as the host starts the enumeration process, the system locks up. It locks in such a manner that we cannot use a JTAG interface to read any of the registers. We have also added a breakpoint just before the command that causes the lock up, to make sure the registers are correctly set at that point, and it seems they are. <br>
<br>We have tripple checked everything that we could possibly think of and everything seems to be configured as required but the system keeps locking-up so there must be something that we are missing. I really hope that someone could point us in the right direction. The lock-up occurs when __fsl_read_rio_config is called by fsl_rio_config_read in fsl-rio.c.<div>
<br></div><div>The LAW and TLB entries we have added to U-Boot are as follows:</div><div><br></div><div><div>#define CONFIG_RIO 1</div><div>#define CONFIG_SYS_RIO_MEM_VIRT<span class="Apple-tab-span" style="white-space:pre"> </span>0xc0000000<span class="Apple-tab-span" style="white-space:pre"> </span>/* base address */</div>
<div>#define CONFIG_SYS_RIO_MEM_BUS<span class="Apple-tab-span" style="white-space:pre"> </span>0xc0000000<span class="Apple-tab-span" style="white-space:pre"> </span>/* base address */</div><div>#define CONFIG_SYS_RIO_MEM_PHYS<span class="Apple-tab-span" style="white-space:pre"> </span>0xc0000000</div>
<div>#define CONFIG_SYS_RIO_MEM_SIZE<span class="Apple-tab-span" style="white-space:pre"> </span>0x20000000<span class="Apple-tab-span" style="white-space:pre"> </span>/* 512M */</div></div><div><br></div><div>SET_LAW(CONFIG_SYS_RIO_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_RIO),</div>
<div><br></div><div>-------------<br><br>Here is the kernel log:<br><br>Using SBC8548 machine description<br>Memory CAM mapping: 256 Mb, residual: 0Mb<br>Linux version 2.6.35.6 (dl704@lxws006) (gcc version 4.1.2 (Wind River Linux Sourcery G++ 4.1-91)) #7 We<br>
d Sep 29 13:27:18 CEST 2010<br>bootconsole [udbg0] enabled<br>setup_arch: bootmem<br>sbc8548_setup_arch()<br>arch: exit<br>Zone PFN ranges:<br> DMA 0x00000000 -> 0x00010000<br> Normal empty<br>Movable zone start PFN for each node<br>
early_node_map[1] active PFN ranges<br> 0: 0x00000000 -> 0x00010000<br>MMU: Allocated 1088 bytes of context maps for 255 contexts<br>Built 1 zonelists in Zone order, mobility grouping on. Total pages: 65024<br>Kernel command line: root=/dev/nfs rw nfsroot=192.168.100.21:/thales/target/rfs/sbc8548_wrlinux4 ip=192<br>
.168.100.151:192.168.100.21:192.168.100.21:255.255.255.0:sbc8548_1:eth0:off console=ttyS0,115200 riohdid=1<br>PID hash table entries: 1024 (order: 0, 4096 bytes)<br>Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)<br>
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)<br>Memory: 256884k/262144k available (2712k kernel code, 5260k reserved, 112k data, 77k bss, 144k init)<br>Kernel virtual memory layout:<br> * 0xfffdf000..0xfffff000 : fixmap<br>
* 0xfc7f9000..0xfe000000 : early ioremap<br> * 0xd1000000..0xfc7f9000 : vmalloc & ioremap<br>Hierarchical RCU implementation.<br> RCU-based detection of stalled CPUs is disabled.<br> Verbose stalled-CPUs detection is disabled.<br>
NR_IRQS:512 nr_irqs:512<br>mpic: Setting up MPIC " OpenPIC " version 1.2 at e0040000, max 1 CPUs<br>mpic: ISU size: 80, shift: 7, mask: 7f<br>mpic: Initializing for 80 sources<br>clocksource: timebase mult[50cede6] shift[22] registered<br>
pid_max: default: 32768 minimum: 301<br>Mount-cache hash table entries: 512<br>NET: Registered protocol family 16<br> <br>PCI: Probing PCI hardware<br>bio: create slab <bio-0> at 0<br>vgaarb: loaded<br>Switching to clocksource timebase<br>
NET: Registered protocol family 2<br>IP route cache hash table entries: 2048 (order: 1, 8192 bytes)<br>TCP established hash table entries: 8192 (order: 4, 65536 bytes)<br>TCP bind hash table entries: 8192 (order: 3, 32768 bytes)<br>
TCP: Hash tables configured (established 8192 bind 8192)<br>TCP reno registered<br>UDP hash table entries: 256 (order: 0, 4096 bytes)<br>UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)<br>NET: Registered protocol family 1<br>
RPC: Registered udp transport module.<br>RPC: Registered tcp transport module.<br>RPC: Registered tcp NFSv4.1 backchannel transport module.<br>Setting up RapidIO peer-to-peer network /soc8548@e0000000/rapidio@c0000<br>fsl-of-rio e00c0000.rapidio: Of-device full name /soc8548@e0000000/rapidio@c0000<br>
fsl-of-rio e00c0000.rapidio: Regs: [mem 0xe00c0000-0xe00dffff]<br>fsl-of-rio e00c0000.rapidio: LAW start 0x00000000c0000000, size 0x0000000020000000.<br>fsl-of-rio e00c0000.rapidio: pwirq: 48, bellirq: 50, txirq: 53, rxirq 54<br>
fsl-of-rio e00c0000.rapidio: DeviceID is 0x1<br>fsl-of-rio e00c0000.rapidio: Configured as HOST<br>fsl-of-rio e00c0000.rapidio: RapidIO PHY type: serial<br>fsl-of-rio e00c0000.rapidio: Hardware port width: 4<br>fsl-of-rio e00c0000.rapidio: Training connection status: Four-lane<br>
fsl-of-rio e00c0000.rapidio: RapidIO Common Transport System size: 256<br>RIO: enumerate master port 0, RIO0 mport<br>fsl_rio_config_read: index 0 destid 255 hopcount 0 offset 00000068 len 4<br>fsl_rio_config_read: Passed IS_ALIGNED.<br>
fsl_rio_config_read: Passed 'out_be32_1'<br>fsl_rio_config_read: Passed 'out_be32_2'<br>fsl_rio_config_read: len is 4<br>fsl_rio_config_read: about to trigger '__fsl_read_rio_config'<br><br>Regards,<br>
Bastiaan Nijkamp
</div>