]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/kexec: Add comments around swap_pages() assembly to improve readability
authorKai Huang <kai.huang@intel.com>
Sun, 25 Aug 2024 08:18:06 +0000 (20:18 +1200)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 25 Aug 2024 12:29:39 +0000 (14:29 +0200)
The current assembly around swap_pages() in the relocate_kernel() takes
some time to follow because the use of registers can be easily lost when
the line of assembly goes long.  Add a couple of comments to clarify the
code around swap_pages() to improve readability.

Signed-off-by: Kai Huang <kai.huang@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Link: https://lore.kernel.org/all/8b52b0b8513a34b2a02fb4abb05c6700c2821475.1724573384.git.kai.huang@intel.com
arch/x86/kernel/relocate_kernel_64.S

index f7a3ca3dee5386a5995224fe1e9131b0b7407b3d..e9e88c342f752e69126a02329af483b5360a2c11 100644 (file)
@@ -170,6 +170,7 @@ SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
        wbinvd
 .Lsme_off:
 
+       /* Save the preserve_context to %r11 as swap_pages clobbers %rcx. */
        movq    %rcx, %r11
        call    swap_pages
 
@@ -289,18 +290,21 @@ SYM_CODE_START_LOCAL_NOALIGN(swap_pages)
        movq    %rcx,   %rsi  /* For ever source page do a copy */
        andq    $0xfffffffffffff000, %rsi
 
-       movq    %rdi, %rdx
-       movq    %rsi, %rax
+       movq    %rdi, %rdx    /* Save destination page to %rdx */
+       movq    %rsi, %rax    /* Save source page to %rax */
 
+       /* copy source page to swap page */
        movq    %r10, %rdi
        movl    $512, %ecx
        rep ; movsq
 
+       /* copy destination page to source page */
        movq    %rax, %rdi
        movq    %rdx, %rsi
        movl    $512, %ecx
        rep ; movsq
 
+       /* copy swap page to destination page */
        movq    %rdx, %rdi
        movq    %r10, %rsi
        movl    $512, %ecx