x86/mm: account for PGDIR_SIZE alignment
authorjerry.hoemann@hp.com <jerry.hoemann@hp.com>
Tue, 7 May 2013 16:14:54 +0000 (10:14 -0600)
committerBen Hutchings <ben@decadent.org.uk>
Mon, 13 May 2013 14:02:44 +0000 (15:02 +0100)
commit6af66ec5050bc0a5426192af0429240e8a87e9ca
treec6e9802ff6229008337c0a164b2c3dfd991adafc
parent88933df65d758f1568359393cae98b972e1559ff
x86/mm: account for PGDIR_SIZE alignment

Patch for 3.0-stable.  Function find_early_table_space removed upstream.

Fixes panic in alloc_low_page due to pgt_buf overflow during
init_memory_mapping.

find_early_table_space sizes pgt_buf based upon the size of the
memory being mapped, but it does not take into account the alignment
of the memory.  When the region being mapped spans a 512GB (PGDIR_SIZE)
alignment, a panic from alloc_low_pages occurs.

kernel_physical_mapping_init takes into account PGDIR_SIZE alignment.
This causes an extra call to alloc_low_page to be made.  This extra call
isn't accounted for by find_early_table_space and causes a kernel panic.

Change is to take into account PGDIR_SIZE alignment in find_early_table_space.

Signed-off-by: Jerry Hoemann <jerry.hoemann@hp.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/x86/mm/init.c