Skip resuming KERNEL pages since it is already KERNEL CR3

Signed-off-by: Lai Jiangshan <la...@linux.alibaba.com>
---
 arch/x86/entry/calling.h | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/arch/x86/entry/calling.h b/arch/x86/entry/calling.h
index 1c7f13bb6728..505246185624 100644
--- a/arch/x86/entry/calling.h
+++ b/arch/x86/entry/calling.h
@@ -268,14 +268,13 @@ For 32-bit we have the following conventions - kernel is 
built with
 .macro RESTORE_CR3 scratch_reg:req save_reg:req
        ALTERNATIVE "jmp .Lend_\@", "", X86_FEATURE_PTI
 
-       ALTERNATIVE "jmp .Lwrcr3_\@", "", X86_FEATURE_PCID
-
        /*
-        * KERNEL pages can always resume with NOFLUSH as we do
-        * explicit flushes.
+        * Skip resuming KERNEL pages since it is already KERNEL CR3.
         */
        bt      $PTI_USER_PGTABLE_BIT, \save_reg
-       jnc     .Lnoflush_\@
+       jnc     .Lend_\@
+
+       ALTERNATIVE "jmp .Lwrcr3_\@", "", X86_FEATURE_PCID
 
        /*
         * Check if there's a pending flush for the user ASID we're
@@ -293,10 +292,6 @@ For 32-bit we have the following conventions - kernel is 
built with
        SET_NOFLUSH_BIT \save_reg
 
 .Lwrcr3_\@:
-       /*
-        * The CR3 write could be avoided when not changing its value,
-        * but would require a CR3 read *and* a scratch register.
-        */
        movq    \save_reg, %cr3
 .Lend_\@:
 .endm
-- 
2.20.1

Reply via email to