Re: Serial RapidIO Maintaintance read causes lock up
From: Bastiaan Nijkamp <hidden>
Date: 2010-10-13 15:06:02
How the host ID is set on your host board?
Normally rio_enum_host() should increment next_destid in your case. The hostID is set to 0x0 with the riohdid parameter as boot argument.
Make sure that you have the MASTER bit is set in agent's GCCSR register
(0xC_013C). If your board uses HW config switches to set host/agent mode this bit will be 0 for agent. For quick test you may keep both boards in the host mode - the current RIO implementation relies on "riohdid=" command line parameter instead of HOST bit. This seems to have done the trick :-) However, i wonder, doesn't it make more sense to make the driver check this setting and correcting it or giving an error instead of entering a endless loop? Thank you for helping out, it is very much appreciated. Bastiaan. 2010/10/13 Bounine, Alexandre [off-list ref]
Bastiaan Nijkamp wrote:quoted
Has the driver ever been tested/used without a switch attached? Becausewhen the host >(which has ID 0x0) enumerates the other board it also assigns ID 0x0 to the agent, it seems >that the agent should have been assigned 0x1 as ID. How the host ID is set on your host board? Normally rio_enum_host() should increment next_destid in your case.quoted
Another thing is that the agent is now hanging on the discovery process.Make sure that you have the MASTER bit is set in agent's GCCSR register (0xC_013C). If your board uses HW config switches to set host/agent mode this bit will be 0 for agent. For quick test you may keep both boards in the host mode - the current RIO implementation relies on "riohdid=" command line parameter instead of HOST bit. Alex.