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