Subject: Re: 8xx v2.6 TLB problems and suggested workaround

From: Marcelo Tosatti <[email-masked]>
Date: Fri, 8 Apr 2005 08:07:25 -0300

Hi Dan,

On Thu, Apr 07, 2005 at 10:09:58PM -0400, Dan Malek wrote:
> 
> On Apr 7, 2005, at 3:38 PM, Marcelo Tosatti wrote:
> 
> >Would be nice to have someone from 8xx team look into this?
> 
> I'll look into it and find some solution.  

What do you envision as another solution? 

We have two now: 

1) _tlbie() on update_mmu_cache() surrounded by CONFIG_8xx #ifdef 
Did you give up about it? 

2) jump directly from DataTLBMiss to fault handler. 
You seem to dislike it.

What else you think can be done? 

> I suspect it is an interaction with the previous TLB miss and the behavior
> of the dcbst TLB look up.  Perhaps, if we ensure the
> TLB entry is not valid at the time of the dcbst, it will work.

Note that the TLB entry is _not valid_ at the time of the dcbst:

BDI>rds 824
SPR  824 : 0x10011f05    268508933
BDI>rds 825
SPR  825 : 0x000001e0          480
BDI>rds 826
SPR  826 : 0x00001f00         7936 

bit 18 (valid bit) of SPR 826 is not set.

So even with the TLB invalid, dcbst misbehaves.

> This is why the tlbie() I added as a hack a long time
> ago made the "problem" disappear.  The other dcbxx
> instructions in the code work on already existing pages,
> while this one is a special case of a miss on a page
> that doesn't exist.
> 
> Thanks.
> 
> 	-- Dan