On Mar 16, 2009, at 5:44 AM, David Jander wrote:

On Friday 13 March 2009 16:23:15 Kumar Gala wrote:
[...]
This errata impacts a number of cores and so we should make this a
CPU
feature fixup rather than #ifdef code.

It should impact only MPC5121e and probably MPC5123, but according to
Freescale no other processors that use this core...

Not sure about that.. But the errata impacts all e300c2/c3/c4 parts.

Can someone please check if this is true? There should be errata's for all
other parts that use one of these cores then.

Anyway, I'll try to investigate about how to write a "CPU feature
fixup",
I've never done that before (If you could give me a hint?)

I've posted a patch that should add the CPU feature support.  This is
only compile tested.  You'll need to try it out on real HW :)

That's a problem right now: The only useable kernel for the MPC5121e is the one on the 'ads5121' head from denx, and that is version 2.6.24.6. Your patch (v3) does not apply to that kernel, so I would have to change a few things
before I can actually try it out:

#define CPU_FTR_NEED_DTLB_SW_LRU       ASM_CONST(0x0000000000010000)

In 2.6.24.6 this constant is used for something else. Would it be possible to pick anotherone, in order to make dual-kernel patches easier to maintain for
now?

+       mfspr   r3,SPRN_DMISS
+       rlwinm  r3,r3,19,25,29 /* Get Address bits 19:15 */
+       lis     r2,l...@ha       /* Search index in lrw[] */
+       addi    r2,r2,l...@l
+       tophys(r2,r2)
+       lwzx    r1,r3,r2       /* Get item from lrw[] */
+       cmpwi   0,r1,0         /* Was it way 0 last time? */

Why not use a bit vector since we only need one bit of information.
Additionally we can use a single SPRG at that point instead to keep
track of the LRU information.

Sounds interesting. I am just learning my first steps in powerpc-
assembly, so
please forgive if this is a little inefficient still. I'll try again
next week.

Not at all.  This has been on my todo list just not high priority so
I'm happy to get someone to work on it and have setup already that can
show perf differences.

On your Todo list? Does that mean you know about another processor that has
the same problem?

Yes, I work at Freescale and am aware that the errata impacts all c2/ c3/c4 class chips.

I might work up a newer version w/the SPRG idea if I'm feeling up to it.

Do you mean it is possible to just pick an SPRG that will be used only by this handler and make sure no other piece of software will touch it? Would be great. Is there a way of knowing which SPRG's are used by linux? I read in the e300 core-RM, that SPRG4...7 are unique to this iteration of the G2
anyway, so one of those might be a good candidate?

I was thinking one from SPRG4..7 should be fine since Linux doesn't use them for anything.

We should try this w/SPRG & w/memory to see if we notice any perf difference.

I have quite a lot of work pressure right now, and unfortunately very little time I can dedicate to this. Given the fact that I also cannot test patches for mainline, because MPC5121e support is just not complete enough yet, do you agree if I modify my own patch (with ifdef's instead of CPU_FTR...) to give you feedback on performance impacts, while you implement it as CPU_FTR afterwards for mainline? That way I can avoid doing double work, and spend
more time on testing it actually....
If you agree, I'll start hacking away on the SPRG version immediately :-)

I think that's fine. The CPU feature bit is minor to deal with and Ben has stated he wants it to be a MMU feature which is something new as well. It should be easy to convert the CPU_FTR wrapping into #ifdefs instead.

I have a few other patches related to this that I am not sure if they will apply to the 2.6.24.6 tree you are based on.

- k
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to