Standalone SRIO Driver for Linux

Bounine, Alexandre Alexandre.Bounine at
Tue Jul 17 00:15:06 EST 2012


With current way of device reporting in RapidIO subsystem you will need
to have at least one SRIO device (switch or EP) attached to your mport
to be able to find a reference to that mport device object. Like in the code fragment below:

static int rioport_init_module(void)
	int ret, i;
	dev_t dev = 0;
	struct rio_mport *mport;
	struct rio_net *net;
	struct rio_dev *rdev = NULL;
	struct rio_mport *port;

... skip ...

	rdev = rio_get_device(RIO_ANY_ID, RIO_ANY_ID, rdev);
	if (NULL == rdev)
		return -ENODEV;

	mport = rdev->net->hport;
	net = rdev->net;
... skip ...

I would like to mention that 2.6.34 kernel is quite behind on rapidio support updates.
There are multiple changes/updates added added since 2.6.34.
You may consider backporting these updates to your kernel version
if you are unable to use one of the latest kernel versions.


From: Saravanan S [mailto:sarans1987 at] 
Sent: Saturday, July 14, 2012 2:25 AM
To: Bounine, Alexandre
Cc: linuxppc-dev at
Subject: Re: Standalone SRIO Driver for Linux

Hi ,
     Thanks for the reply . i will try to share some of my code later . Looking forward to ur ideas. 


On Fri, Jul 13, 2012 at 6:18 PM, Bounine, Alexandre <Alexandre.Bounine at> wrote:
This should work. We use similar approach to test our mport HW drivers.
From: Linuxppc-dev [ at] On Behalf Of Saravanan S
Sent: Friday, July 13, 2012 2:16 AM
To: linuxppc-dev at
Subject: Standalone SRIO Driver for Linux
Hi ,

      Iam currently working on the GE make DSP230 board consisting of Quad PowerPC8640 nodes   interconnected by SRIO with Linux 2.6.34 . However the only way to access the SRIO is through rionet facility . Our requirement is to use the SRIO interconnect without the Ethernet overheads. This would definitely enable higher speeds (though I cant find any throughput figures for SRIO in Linux on the net ??? ).  My query is that whether any attempt has been made  to develop a  standalone driver and API to access the messaging  and doorbell services of SRIO . If no then request you to please provide inputs on the same. From my study I have the following thoughts for the driver :

a) Have a character device interface for user .
b) Basically use the rio support functions provided in rio.c like  rio_add_inb_buffer ,  rio_add_outb_message to transfer and receive messages and add buffers .
c) Maintain a dedicated ring of buffers in the driver and transfer  data to and from the buffer to user space .

Is this the right direction . Would really appreciate any inputs . thanks in advance.



Linuxppc-dev mailing list
Linuxppc-dev at

More information about the Linuxppc-dev mailing list