• Matt Fleming's avatar
    sh: Correct the PTRS_PER_PMD and PMD_SHIFT values · 3f5ab768
    Matt Fleming authored
    The previous expressions were wrong which made free_pmd_range() explode
    when using anything other than 4KB pages (which is why 8KB and 64KB
    pages were disabled with the 3-level page table layout).
    
    The problem was that pmd_offset() was returning an index of non-zero
    when it should have been returning 0. This non-zero offset was used to
    calculate the address of the pmd table to free in free_pmd_range(),
    which ended up trying to free an object that was not aligned on a page
    boundary.
    
    Now 3-level page tables should work with 4KB, 8KB and 64KB pages.
    Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
    3f5ab768
pgtable_pmd.h 1.45 KB