x86-64: Fix accounting in kernel_physical_mapping_init()
authorJan Beulich <JBeulich@suse.com>
Wed, 16 May 2012 13:06:26 +0000 (14:06 +0100)
committerIngo Molnar <mingo@kernel.org>
Fri, 18 May 2012 08:13:37 +0000 (10:13 +0200)
commit20167d3421a089a1bf1bd680b150dc69c9506810
tree3338cb5455b31473630679061fcd96addc8ac7e2
parent3e7f3db001de6133db1c385c92eec944409a8b4f
x86-64: Fix accounting in kernel_physical_mapping_init()

When finding a present and acceptable 2M/1G mapping, the number
of pages mapped this way shouldn't be incremented (as it was
already incremented when the earlier part of the mapping was
established). Instead, last_map_addr needs to be updated in this
case.

Further, address increments were wrong in one place each in both
phys_pmd_init() and phys_pud_init() (lacking the aligning down
to the respective page boundary).

As we're now doing the same calculation several times, fold it
into a single instance using a local variable (matching how
kernel_physical_mapping_init() itself does it at the PGD level).

Observed during code inspection, not because of an actual
problem.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/4FB3C27202000078000841A0@nat28.tlf.novell.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/mm/init_64.c