summaryrefslogtreecommitdiffstats
path: root/MAINTAINERS
diff options
context:
space:
mode:
authorRussell King2008-08-07 23:36:59 +0200
committerRussell King2008-08-07 23:36:59 +0200
commit058ddee5625ade9e9e011b9ae155ac3b8d4eda3a (patch)
tree2821d666c06733da81f606624bf2a16bdf86ce73 /MAINTAINERS
parentMerge branch 'for-rmk' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmia... (diff)
downloadkernel-qcow2-linux-058ddee5625ade9e9e011b9ae155ac3b8d4eda3a.tar.gz
kernel-qcow2-linux-058ddee5625ade9e9e011b9ae155ac3b8d4eda3a.tar.xz
kernel-qcow2-linux-058ddee5625ade9e9e011b9ae155ac3b8d4eda3a.zip
[ARM] Fix SMP booting with non-zero PHYS_OFFSET
The existing code tries to get the pmd for the temporary page table by doing: pgd = pgd_alloc(&init_mm); pmd = pmd_offset(pgd, PHYS_OFFSET); Since we have a two level page table, pmd_offset() is a no-op, so this just has a casting effect from a pgd to a pmd - the address argument is unused. So this can't work. Normally, we'd do: pgd = pgd_offset(&init_mm, PHYS_OFFSET); ... pmd = pmd_offset(pgd, PHYS_OFFSET); to get the pmd you want. However, pgd_offset() takes the mm_struct, not the (unattached) pgd we just allocated. So, instead use: pgd = pgd_alloc(&init_mm); pmd = pmd_offset(pgd + pgd_index(PHYS_OFFSET), PHYS_OFFSET); Reported-by: Antti P Miettinen <ananaza@iki.fi> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'MAINTAINERS')
0 files changed, 0 insertions, 0 deletions