diff options
-rw-r--r-- | arch/x86/machine/boot.c | 1 | ||||
-rw-r--r-- | arch/x86/machine/pmap.c | 7 | ||||
-rw-r--r-- | arch/x86/machine/pmap.h | 7 |
3 files changed, 13 insertions, 2 deletions
diff --git a/arch/x86/machine/boot.c b/arch/x86/machine/boot.c index 3a4ab2be..27b07b29 100644 --- a/arch/x86/machine/boot.c +++ b/arch/x86/machine/boot.c @@ -274,6 +274,7 @@ void __init boot_ap(void) { cpu_ap_setup(); + pmap_ap_bootstrap(); cpu_info(cpu_current()); cpu_intr_enable(); diff --git a/arch/x86/machine/pmap.c b/arch/x86/machine/pmap.c index 1b5e6c99..dafa6b70 100644 --- a/arch/x86/machine/pmap.c +++ b/arch/x86/machine/pmap.c @@ -342,6 +342,13 @@ pmap_bootstrap(void) pmap_klimit = VM_MIN_KERNEL_ADDRESS; } +void __init +pmap_ap_bootstrap(void) +{ + if (cpu_has_global_pages()) + cpu_enable_global_pages(); +} + unsigned long __init pmap_bootalloc(unsigned int nr_pages) { diff --git a/arch/x86/machine/pmap.h b/arch/x86/machine/pmap.h index 694bc1a3..fcd8b617 100644 --- a/arch/x86/machine/pmap.h +++ b/arch/x86/machine/pmap.h @@ -138,8 +138,6 @@ pmap_pte_t * pmap_setup_paging(void); /* * This function is called by the AP bootstrap code before paging is enabled. - * It merely returns the physical address of the already existing kernel root - * page table. */ pmap_pte_t * pmap_ap_setup_paging(void); @@ -149,6 +147,11 @@ pmap_pte_t * pmap_ap_setup_paging(void); void pmap_bootstrap(void); /* + * Early initialization of the MMU on APs. + */ +void pmap_ap_bootstrap(void); + +/* * Allocate pure virtual memory. * * This memory is obtained from a very small pool of reserved pages located |