diff options
| -rw-r--r-- | arch/x86/lguest/boot.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index 45e64b37b237..24e49737df7a 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c | |||
| @@ -531,7 +531,10 @@ static void lguest_write_cr3(unsigned long cr3) | |||
| 531 | { | 531 | { |
| 532 | lguest_data.pgdir = cr3; | 532 | lguest_data.pgdir = cr3; |
| 533 | lazy_hcall1(LHCALL_NEW_PGTABLE, cr3); | 533 | lazy_hcall1(LHCALL_NEW_PGTABLE, cr3); |
| 534 | cr3_changed = true; | 534 | |
| 535 | /* These two page tables are simple, linear, and used during boot */ | ||
| 536 | if (cr3 != __pa(swapper_pg_dir) && cr3 != __pa(initial_page_table)) | ||
| 537 | cr3_changed = true; | ||
| 535 | } | 538 | } |
| 536 | 539 | ||
| 537 | static unsigned long lguest_read_cr3(void) | 540 | static unsigned long lguest_read_cr3(void) |
| @@ -703,9 +706,9 @@ static void lguest_set_pmd(pmd_t *pmdp, pmd_t pmdval) | |||
| 703 | * to forget all of them. Fortunately, this is very rare. | 706 | * to forget all of them. Fortunately, this is very rare. |
| 704 | * | 707 | * |
| 705 | * ... except in early boot when the kernel sets up the initial pagetables, | 708 | * ... except in early boot when the kernel sets up the initial pagetables, |
| 706 | * which makes booting astonishingly slow: 1.83 seconds! So we don't even tell | 709 | * which makes booting astonishingly slow: 48 seconds! So we don't even tell |
| 707 | * the Host anything changed until we've done the first page table switch, | 710 | * the Host anything changed until we've done the first real page table switch, |
| 708 | * which brings boot back to 0.25 seconds. | 711 | * which brings boot back to 4.3 seconds. |
| 709 | */ | 712 | */ |
| 710 | static void lguest_set_pte(pte_t *ptep, pte_t pteval) | 713 | static void lguest_set_pte(pte_t *ptep, pte_t pteval) |
| 711 | { | 714 | { |
