Thread (9 messages) 9 messages, 4 authors, 2009-07-01

Re: RapidIO - general questions

From: Li Yang <hidden>
Date: 2009-05-15 07:57:00
Also in: lkml

On Fri, May 15, 2009 at 3:33 PM, Jan Neskudla [off-list ref] wr=
ote:
On Wed, 2009-05-13 at 18:57 +0800, ext Li Yang wrote:
quoted
cc'ed LKML

On Tue, May 12, 2009 at 5:17 PM, Jan Neskudla [off-list ref]=
 wrote:
quoted
quoted
Hallo

we'd likes to use a RapidIO as a general communication bus on our new
product, and so I have some questions about general design of Linux RI=
O
quoted
quoted
subsystem. I did not find any better mailing list for RapidIO
discussion.

[1] - we'd like to implement following features
=C2=A0 =C2=A0* Hot-plug (hot-insert/hot-remove) of devices
=C2=A0 =C2=A0* Error handling (port-write packets - configuration, han=
dling of
quoted
quoted
them)
=C2=A0 =C2=A0* Static ID configuration based on port numbers
=C2=A0 =C2=A0* Aux driver - basic driver, for sending messages over di=
fferent
quoted
quoted
mboxes, handling ranges of doorbells

=C2=A0 =C2=A0Is it here anyone who is working on any improvement, or a=
nyone who
quoted
quoted
knows the development plans for RapidIO subsystem?
AFAIK, there is no one currently working on these features for Linux.
It will be good if you can add these useful features.
Yes it looks like that, currently we are analyzing current rapidIO
system, and how we can add these features.
quoted
quoted
[2] - I have a following problem with a current implementation of
loading drivers. The driver probe-function call is based on comparison
of VendorID (VID) and DeviceID (DID) only. Thus if I have 3 devices wi=
th
quoted
quoted
same DID and VID connected to the same network (bus), the driver is
loaded 3times, instead only once for the actual device Master port.
This should be the correct way as you actually have 3 instances of the d=
evice.
quoted
quoted
Rionet driver solved this by enabling to call initialization function
just once, and it expect that this is the Master port.
Rionet is kind of special. =C2=A0It's not working like a simple device
driver, but more like a customized protocol stack to support multiple
ethernet over rio links.
quoted
Is it this correct behavior =C2=A0? It looks to me that RapidIO is han=
dled
quoted
quoted
like a local bus (like PCI)
This is correct behavior. =C2=A0All of them are using Linux device/drive=
r
quoted
infrastructure, but rionet is a special device.
But I do not have a 3 devices on one silicon. I am talking about 3
devices (3 x EP8548 boards + IDT switch) connected over rapidIO through
the switch. And in this case I'd like to have only one driver siting on
the top of Linux RapidIO subsystem. I don't see the advantage of loading
You are having one driver, but it probes 3 times for each device using
the driver.
a driver locally for remote device. Am I missing something =C2=A0?
If you want to interact with the remote device, you need the driver to
do the work locally.
And one more think, I am getting so much Bus errors OOPSes. Whenever
there is a problem with a comunication over Rio I get such a kernel OPS.
I had to add some delays into some function to be able to finish the
enum+discovery process. Did you have some experience with some bigger
rio network running under linux ?
It looks like an known issue for switched rio network, but I don't
have the correct equipment to reproduce the problem here.  Could you
do some basic debugging and share your findings?  Thanks.

- Leo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help