sh: Correct the PTRS_PER_PMD and PMD_SHIFT values
authorMatt Fleming <matt@console-pimps.org>
Thu, 24 Dec 2009 20:38:45 +0000 (20:38 +0000)
committerMatt Fleming <matt@console-pimps.org>
Sat, 2 Jan 2010 00:51:45 +0000 (00:51 +0000)
commit3f5ab768164df9a44721660b96e0accb92eb2c24
treeef4fb658cd28994fad4046844bc51a388bb6447b
parente591a517230a97e93f5edd19e7bef7ec8d22ac2b
sh: Correct the PTRS_PER_PMD and PMD_SHIFT values

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: Matt Fleming <matt@console-pimps.org>
arch/sh/include/asm/pgtable_pmd.h
arch/sh/mm/Kconfig