Serial RapidIO Maintaintance read causes lock up

Bounine, Alexandre Alexandre.Bounine at idt.com
Thu Oct 14 02:34:31 EST 2010


Bastiaan Nijkamp <bastiaan.nijkamp at gmail.com> wrote:

>> 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. 
>

In this case I would expect to see ID=1 assigned to the endpoint. I will take a look based on your use scenario. Let me know if you find the source of problem before I get back to you about this issue. 

>> 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? 

One of my recent patches handles the MASTER bit. It is in -mm tree now.

In the case that you have seen, the agent does not enter endless loop - it just has request that cannot leave the SRIO controller. As result that request cannot be timed out and hangs the processor (no machine check).

Alex.
  




More information about the Linuxppc-dev mailing list