Quantcast
Channel: Processors
Viewing all articles
Browse latest Browse all 124577

Forum Post: RE: PCIESS hangs?

$
0
0

After adjusting the pre-emphasis settings on both ends of the link (between am3874 and PLX 8605), we have been able to achieve link-up most of the time. It is still not reliable, but it's better than it ever has been. 

I still have that fault-hook function registered early, that keeps the kernel from crashing. 

I also created a script to run when the pciess locks up, this resets it (and thereafter restores access to the 0x5100xxxx window): 

[root@am3874:~]# cat /bin/resetpci
#!/bin/sh

devmem 0x48180b10 32 0x09c
sleep 1

devmem 0x48180578 32 0
devmem 0x48180510 32 0
sleep 1

devmem 0x48180510 32 0x02
devmem 0x48180578 32 0x02
sleep 1

devmem 0x48180b10 32 0x001c

echo Done

I am curious about  memory allotted during pcie enumeration though. The am3874 has an embedded pci-pci bridge, that has a BAR8 as : 

cat /sys/bus/pci/devices/0000\:00\:00.0/resource
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000020000000 0x00000000200fffff 0x0000000000000200
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000

According to the L3 memory map, PCIE has a window 256MB in size.. from 0x20000000 to 0x2FFFFFFF. Why is the RC only using 0x20000000 to 0x200FFFFF ?  16MB

Although I don't have any endpoints, pci enumeration sees the 4 downstream ports of the PLX switch: 

cat /sys/bus/pci/devices/0000\:01\:00.0/resource
0x0000000020000000 0x0000000020003FFF 0x0000000000040200
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 0x0000000000000000

So from that initial 16MB, the first enumerated device gets a 16K chunk. Seems strange the whole available memory window isn't used for the pool? 


Viewing all articles
Browse latest Browse all 124577

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>