[RFC PATCH 1/7] x86/kexec: Clean up and document register use in relocate_kernel_64.S

David Woodhouse dwmw2 at infradead.org
Tue Nov 5 12:17:05 PST 2024


On Tue, 2024-11-05 at 10:00 +0000, Huang, Kai wrote:
> On Sun, 2024-11-03 at 05:35 +0000, David Woodhouse wrote:
> > From: David Woodhouse <dwmw at amazon.co.uk>
> > 
> > Add more comments explaining what each register contains, and save the
> > preserve_context flag to a non-clobbered register sooner, to keep things
> > simpler.
> > 
> > Signed-off-by: David Woodhouse <dwmw at amazon.co.uk>
> > ---
> >  arch/x86/kernel/relocate_kernel_64.S | 17 +++++++++++++----
> >  1 file changed, 13 insertions(+), 4 deletions(-)
> > 
> > diff --git a/arch/x86/kernel/relocate_kernel_64.S b/arch/x86/kernel/relocate_kernel_64.S
> > index e9e88c342f75..c065806884f8 100644
> > --- a/arch/x86/kernel/relocate_kernel_64.S
> > +++ b/arch/x86/kernel/relocate_kernel_64.S
> > @@ -100,6 +100,9 @@ SYM_CODE_START_NOALIGN(relocate_kernel)
> >         movq    %r10, CP_PA_SWAP_PAGE(%r11)
> >         movq    %rdi, CP_PA_BACKUP_PAGES_MAP(%r11)
> >  
> > +       /* Save the preserve_context to %r11 as swap_pages clobbers %rcx. */
> > +       movq    %rcx, %r11
> > +
> 
> Seems moving this here won't break anything.  From functionality's perspective
> there's no need move this here, but fine to me since the move is needed for the
> sake of adding the comment (below) to identity_mapped.

I believe I did actually use %rcx in the debug code I added later,
didn't I?

> >         /* Switch to the identity mapped page tables */
> >         movq    %r9, %cr3
> >  
> > @@ -116,6 +119,13 @@ SYM_CODE_END(relocate_kernel)
> >  
> >  SYM_CODE_START_LOCAL_NOALIGN(identity_mapped)
> >         UNWIND_HINT_END_OF_STACK
> > +       /*
> > +        * %rdi indirection page
> > +        * %rdx start address
> > +        * %r11 preserve_context
> > +        * %r12 host_mem_enc_active
> > +        */
> > +
> 
> I think adding this comment is the main purpose of this patch.  Since we have
> listed 4 regs in the comment, how about also add an entry for %r13?
> 
> Something like:
> 
>         %r13 original CR4 when relocate_kernel() is invoked
> 
> Yeah this is kinda mentioned in later code but it seems it's more complete if we
> also mention %r13 here.

Ack, I'll add that too. Thanks.

> Anyway, I suppose adding this comment is kinda helpful, so:
> 
> Acked-by: Kai Huang <kai.huang at intel.com>
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5965 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/kexec/attachments/20241105/6ca2bb9d/attachment.p7s>


More information about the kexec mailing list