mpc5200 fec error

Jon Smirl jonsmirl at gmail.com
Thu May 21 01:14:46 EST 2009


On Wed, May 20, 2009 at 9:42 AM, Eric Millbrandt
<emillbrandt at dekaresearch.com> wrote:
>> > I am able to reproduce the error using 2.6.29.2-rt11.  I was able to
>> > mitigate the problem by raising the priority of the transmit irq.
>> > However when running an NFS server on the pcm030 under high cpu load I
>> > now get
>> >
>> > [  132.477503] net eth0: FEC_IEVENT_RFIFO_ERROR
>> > [  132.892329] net eth0: FEC_IEVENT_RFIFO_ERROR
>> > [  133.884109] net eth0: FEC_IEVENT_RFIFO_ERROR
>> > [  134.876059] net eth0: FEC_IEVENT_RFIFO_ERROR
>> >
>> > Raising the priority of the rx irq does not seem to fix this problem
>> > though.
>>
>> Hi Eric,
>>
>> This error has been seen before in non-rt kernels.  I haven't had the
>> chance to track it down and kill it yet.  I believe there are locking
>> issues associated with it.
>
> Uuuh, I recall this message. Kept me busy for some time :(
>
> You might try this patch which helped in our situation.
>
> ===========
>
> Subject: Enable XLB pipelining for MPC5200B
> From: Wolfram Sang <w.sang at pengutronix.de>
>
> Enable pipelining as it helps getting rid of FEC problems.
> Not intended for upstream, this must be dealt differently there.
>
> This patch is disabled by default. The bootloader should enable this feature.
> So, this patch is only intended to be used where the bootloader does it in a
> wrong manner and can't be replaced.
>
> Signed-off-by: Wolfram Sang <w.sang at pengutronix.de>
> Acked-by: Juergen Beisert <j.beisert at pengutronix.de>
>
> ---
>  arch/powerpc/platforms/52xx/mpc52xx_common.c |    7 +++++++
>  1 file changed, 7 insertions(+)
>
> Index: arch/powerpc/platforms/52xx/mpc52xx_common.c
> ===================================================================
> --- arch/powerpc/platforms/52xx/mpc52xx_common.c.orig
> +++ arch/powerpc/platforms/52xx/mpc52xx_common.c
> @@ -107,6 +107,13 @@ mpc5200_setup_xlb_arbiter(void)
>         */
>        if ((mfspr(SPRN_SVR) & MPC5200_SVR_MASK) == MPC5200_SVR)
>                out_be32(&xlb->config, in_be32(&xlb->config) | MPC52xx_XLB_CFG_PLDIS);
> +#if 0
> +       /*
> +        * Enable pipelining, fixes FEC problems. The previous workaround is not
> +        * needed, as we have an MPC5200B (not A).
> +        */
> +       out_be32(&xlb->config, in_be32(&xlb->config) & ~MPC52xx_XLB_CFG_PLDIS);
> +#endif
>
>        iounmap(xlb);
>  }
>
> --
> Pengutronix e.K.                           | Wolfram Sang                |
> Industrial Linux Solutions                 | http://www.pengutronix.de/  |
>
> Wolfram,
>
> Thanks, but no luck with this patch.  It was already setup correctly by U-Boot.


I don't see where this gets enabled in the u-boot source. Have you
added it locally?

These are the only two I see:
cpu/mpc5xxx/cpu_init.c:	*(vu_long *)(MPC5XXX_XLBARB + 0x40) |= (1 << 13);
cpu/mpc5xxx/cpu_init.c:	*(vu_long *)(MPC5XXX_XLBARB + 0x40) |= (1 << 15);


-- 
Jon Smirl
jonsmirl at gmail.com



More information about the Linuxppc-dev mailing list