Should ppc32 use CONFIG_HIGHPTE or not?
Dave Hansen
dave at linux.vnet.ibm.com
Sat May 2 04:37:03 EST 2009
arch/powerpc/mm/pgtable_32.c has the following function:
pgtable_t pte_alloc_one(struct mm_struct *mm, unsigned long address)
{
struct page *ptepage;
#ifdef CONFIG_HIGHPTE
gfp_t flags = GFP_KERNEL | __GFP_HIGHMEM | __GFP_REPEAT | __GFP_ZERO;
#else
gfp_t flags = GFP_KERNEL | __GFP_REPEAT | __GFP_ZERO;
#endif
...
But there's no trace of CONFIG_HIGHPTE anywhere in arch/powerpc. But,
the one and only definition on 32-bit of pte_offset_map() (in
arch/powerpc/include/asm/pgtable-ppc32.h) seems to have HIGHPTE
semantics:
#define pte_offset_map(dir, addr) \
((pte_t *) kmap_atomic(pmd_page(*(dir)), KM_PTE0) + pte_index(addr))
#define pte_offset_map_nested(dir, addr) \
((pte_t *) kmap_atomic(pmd_page(*(dir)), KM_PTE1) + pte_index(addr))
So, it looks like ppc32 never actually allocates highmem pte pages, but
it *does* go to the trouble of at least trying to kmap_atomic() them.
Should we just give ppc32 unconditional direct-mapped ptes? Or, should
we remove that #ifdef and let it allocate them in highmem when it can
since we also have the code to support that?
-- Dave
More information about the Linuxppc-dev
mailing list