[PATCH] Fix PPC440 pagetable attributes

Kumar Gala kumar.gala at freescale.com
Sat Jun 4 06:42:46 EST 2005


On Jun 3, 2005, at 11:30 AM, Geoff Levand wrote:

> Kumar Gala wrote:
>> On Jun 2, 2005, at 6:00 PM, Geoff Levand wrote:
>>
>>
>>> This patch fixes a bug in the PPC440 pagetable attributes that breaks
>>> swap support.  It also adds some notes on the PPC440 attribute 
>>> fields.
>>>
>>>  *
>>>  * Note that these bits preclude future use of a page size
>>>  * less than 4KB.
>>> + *
>>> + *
>>> + * PPC 440 core has following TLB attribute fields;
>>> + *
>>> + *   TLB1:
>>> + *   0  1  2  3  4  ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
>>> 31
>>> + *   RPN.................................  -  -  -  -  -  -
>>> ERPN.......
>>> + *
>>> + *   TLB2:
>>> + *   0  1  2  3  4  ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
>>> 31
>>> + *   -  -  -  -  -    - U0 U1 U2 U3 W  I  M  G  E   - UX UW UR SX SW
>>> SR
>>> + *
>>> + * There are some constrains and options, to decide mapping software
>>> bits
>>> + * into TLB entry.
>>> + *
>>> + *   - PRESENT *must* be in the bottom three bits because swap cache
>>> + *     entries use the top 29 bits for TLB2.
>>> + *
>>> + *   - FILE *must* be in the bottom three bits because swap cache
>>> + *     entries use the top 29 bits for TLB2.
>>> + *
>>> + *   - CACHE COHERENT bit (M) has no effect on PPC440 core, because 
>>> it
>>> + *     doesn't support SMP. So we can use this as software bit, like
>>> + *     DIRTY.
>>> + *
>>> + * PPC Book-E Linux implementation uses PPC HW PTE bit field
>>> definition,
>>> + * even it doesn't have HW PTE. 0-11th LSB of PTE stand for memory
>>> + * protection-related function. (See PTE structure in
>>> include/asm-ppc/mmu.h)
>>> + * Definition of _PAGE_XXX in "include/asm-ppc/pagetable.h" stands 
>>> for
>>> + * above bits. Note that those bits values are CPU dependent, not
>>> + * architecture.
>>> + *
>>
>> I disagree with this comment.  PPC Book-E PTE format has nothing to do
>> with PPC HW PTE format.
>>
>
> OK, is this more agreeable?
>
> * With the PPC Book-E Linux implementation, 0-11th LSB of PTE stand 
> for memory
> * protection-related function. (See PTE structure in 
> include/asm-ppc/mmu.h)
> * Definition of _PAGE_XXX here stands for above bits. Note that those 
> bits
> * values are CPU dependent, not architecture.

That's more reasonable, however I would make it say PPC 44x ... instead 
of Book-E, the e500 is also a Book-E processor and if you notice if we 
use a 64-bit PTE we end up using more than the 12 LSBs for PTE flags.

- kumar




More information about the Linuxppc-embedded mailing list