x86_32: Calculate additional memory needed by the fixmapx86/mm
commitb17a5f97d413c9bd882ea5011462f7a530d37ae0
authorStefano Stabellini <stefano.stabellini@eu.citrix.com>
Wed, 20 Jul 2011 16:07:54 +0000 (20 17:07 +0100)
committerH. Peter Anvin <hpa@linux.intel.com>
Fri, 22 Jul 2011 18:45:55 +0000 (22 11:45 -0700)
tree1491efdfd750264fe5849c69927739a28509f071
parent2e9fbad5955f34bf1934bd6a8165c1f49ac8cc46
x86_32: Calculate additional memory needed by the fixmap

When NR_CPUS increases the fixmap might need more than the page
allocated by head_32.S.
This patch introduces the logic to calculate the additional memory that
is going to be required by early_ioremap_page_table_range_init:

- enough memory to allocate the pte pages needed to cover the fixmap
virtual memory range, minus the single page allocated by head_32.S;

- account for the page already allocated by early_ioremap_init;

- account for the two additional pages that might be needed to make sure
that the kmap's ptes are contiguous.

Changes to v1:

- refactor the fixmap space calculation in a new function to make it
easier to read and avoid compilation warnings on x86_64.

Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Link: http://lkml.kernel.org/r/1311178074-16833-1-git-send-email-stefano.stabellini@eu.citrix.com
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Reported-and-Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/mm/init.c