xen: x86/32: perform initial startup on initial_page_table
authorIan Campbell <ian.campbell@citrix.com>
Wed, 24 Nov 2010 12:09:41 +0000 (12:09 +0000)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 24 Nov 2010 17:07:44 +0000 (12:07 -0500)
commit5b5c1af104ab5adec1be9dcb4c787492d83d8d83
tree38292f2f54e581c341e63fe0eeb837907931b753
parente53beacd23d9cb47590da6a7a7f6d417b941a994
xen: x86/32: perform initial startup on initial_page_table

Only make swapper_pg_dir readonly and pinned when generic x86 architecture code
(which also starts on initial_page_table) switches to it.  This helps ensure
that the generic setup paths work on Xen unmodified. In particular
clone_pgd_range writes directly to the destination pgd entries and is used to
initialise swapper_pg_dir so we need to ensure that it remains writeable until
the last possible moment during bring up.

This is complicated slightly by the need to avoid sharing kernel PMD entries
when running under Xen, therefore the Xen implementation must make a copy of
the kernel PMD (which is otherwise referred to by both intial_page_table and
swapper_pg_dir) before switching to swapper_pg_dir.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: H. Peter Anvin <hpa@linux.intel.com>
Cc: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
arch/x86/xen/enlighten.c
arch/x86/xen/mmu.c