On 10/01/13 16:57, Dave Hansen wrote: > On 01/10/2013 07:30 AM, James Hogan wrote: >> +pte_t *huge_pte_alloc(struct mm_struct *mm, >> + unsigned long addr, unsigned long sz) >> +{ >> + pgd_t *pgd; >> + pud_t *pud; >> + pmd_t *pmd; >> + pte_t *pte; >> + >> + pgd = pgd_offset(mm, addr); >> + pud = pud_offset(pgd, addr); >> + pmd = pmd_offset(pud, addr); >> + pte = pte_alloc_map(mm, NULL, pmd, addr); >> + pgd->pgd &= ~_PAGE_SZ_MASK; >> + pgd->pgd |= _PAGE_SZHUGE; >> + >> + return pte; >> +} > > I'd be a bit surprised if you don't have to check for NULL during the > walk down the page tables. Is there a special reason on your > architecture that this is unnecessary? > > (There are several of these, not just this one). > Meta only has 2 levels of page tables which map to the linux levels. asm/pgtable.h includes asm-generic/pgtable-nopmd.h, which includes asm-generic/pgtable-nopud.h, so the pmd and pud levels get folded into the pgd. Cheers James -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html