[PATCH 0/6] x86-64: Remove global variables from boot

Brian Gerst posted 6 patches 2 years, 6 months ago
There is a newer version of this series
arch/x86/include/asm/processor.h |   6 +-
arch/x86/include/asm/realmode.h  |   1 -
arch/x86/include/asm/smp.h       |   1 -
arch/x86/kernel/acpi/sleep.c     |   5 +-
arch/x86/kernel/asm-offsets.c    |   1 +
arch/x86/kernel/head_64.S        | 108 ++++++++++++-------------------
arch/x86/kernel/smpboot.c        |   6 +-
arch/x86/xen/xen-head.S          |   2 +-
kernel/smpboot.c                 |   2 +-
9 files changed, 53 insertions(+), 79 deletions(-)
[PATCH 0/6] x86-64: Remove global variables from boot
Posted by Brian Gerst 2 years, 6 months ago
This is on top of the parallel boot v10 series.

Remove the global variables initial_gs, initial_stack, and
early_gdt_descr from the 64-bit boot code.  The stack, GDT, and GSBASE
can be determined from the CPU number.

Brian Gerst (6):
  x86/smpboot: Use CPU number instead of APIC ID for single CPU startup
  x86/smpboot: Use current_task to get idle thread
  x86/smpboot: Remove initial_stack on 64-bit
  x86/smpbppt: Remove early_gdt_descr on 64-bit
  x86/smpboot: Remove initial_gs
  x86/smpboot: Simplify boot CPU setup

 arch/x86/include/asm/processor.h |   6 +-
 arch/x86/include/asm/realmode.h  |   1 -
 arch/x86/include/asm/smp.h       |   1 -
 arch/x86/kernel/acpi/sleep.c     |   5 +-
 arch/x86/kernel/asm-offsets.c    |   1 +
 arch/x86/kernel/head_64.S        | 108 ++++++++++++-------------------
 arch/x86/kernel/smpboot.c        |   6 +-
 arch/x86/xen/xen-head.S          |   2 +-
 kernel/smpboot.c                 |   2 +-
 9 files changed, 53 insertions(+), 79 deletions(-)

-- 
2.39.2
Re: [PATCH 0/6] x86-64: Remove global variables from boot
Posted by David Woodhouse 2 years, 6 months ago
On Wed, 2023-02-22 at 17:12 -0500, Brian Gerst wrote:
> This is on top of the parallel boot v10 series.
> 
> Remove the global variables initial_gs, initial_stack, and
> early_gdt_descr from the 64-bit boot code.  The stack, GDT, and GSBASE
> can be determined from the CPU number.
> 
> Brian Gerst (6):
>   x86/smpboot: Use CPU number instead of APIC ID for single CPU startup
>   x86/smpboot: Use current_task to get idle thread


I think those first two should be folded into the 'x86/smpboot: Support
parallel startup of secondary CPUs' patch rather than follow-on
patches?

>   x86/smpboot: Remove initial_stack on 64-bit
>   x86/smpbppt: Remove early_gdt_descr on 64-bit
>   x86/smpboot: Remove initial_gs
>   x86/smpboot: Simplify boot CPU setup

Those four probably make sense to come separately. For each of them,

Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>

I've pulled in the v10 series from Usama, squashed the first two as I
suggested, added the last four on top to do some testing:
https://git.infradead.org/users/dwmw2/linux.git/shortlog/refs/heads/parallel-6.2-rc8-part1

Rather than overthinking the SoB chain, I've left Usama's signoff as
the last on the original series, and on the assumption that Usama will
continue posting, I'll give them the choice of my R-b or S-o-B on what
are now the final four.
Re: [PATCH 0/6] x86-64: Remove global variables from boot
Posted by Brian Gerst 2 years, 6 months ago
On Thu, Feb 23, 2023 at 8:44 AM David Woodhouse <dwmw2@infradead.org> wrote:
>
> On Wed, 2023-02-22 at 17:12 -0500, Brian Gerst wrote:
> > This is on top of the parallel boot v10 series.
> >
> > Remove the global variables initial_gs, initial_stack, and
> > early_gdt_descr from the 64-bit boot code.  The stack, GDT, and GSBASE
> > can be determined from the CPU number.
> >
> > Brian Gerst (6):
> >   x86/smpboot: Use CPU number instead of APIC ID for single CPU startup
> >   x86/smpboot: Use current_task to get idle thread
>
>
> I think those first two should be folded into the 'x86/smpboot: Support
> parallel startup of secondary CPUs' patch rather than follow-on
> patches?

Yes, that makes sense.

> >   x86/smpboot: Remove initial_stack on 64-bit
> >   x86/smpbppt: Remove early_gdt_descr on 64-bit
> >   x86/smpboot: Remove initial_gs
> >   x86/smpboot: Simplify boot CPU setup
>
> Those four probably make sense to come separately. For each of them,
>
> Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
>
> I've pulled in the v10 series from Usama, squashed the first two as I
> suggested, added the last four on top to do some testing:
> https://git.infradead.org/users/dwmw2/linux.git/shortlog/refs/heads/parallel-6.2-rc8-part1

Looks good.  I noticed a typo in the commit log of the last patch
(dynammically -> dynamically).  Can you fix that or should I resend?

Thanks

--
Brian Gerst
Re: [External] Re: [PATCH 0/6] x86-64: Remove global variables from boot
Posted by Usama Arif 2 years, 6 months ago

On 23/02/2023 14:24, Brian Gerst wrote:
> On Thu, Feb 23, 2023 at 8:44 AM David Woodhouse <dwmw2@infradead.org> wrote:
>>
>> On Wed, 2023-02-22 at 17:12 -0500, Brian Gerst wrote:
>>> This is on top of the parallel boot v10 series.
>>>
>>> Remove the global variables initial_gs, initial_stack, and
>>> early_gdt_descr from the 64-bit boot code.  The stack, GDT, and GSBASE
>>> can be determined from the CPU number.
>>>
>>> Brian Gerst (6):
>>>    x86/smpboot: Use CPU number instead of APIC ID for single CPU startup
>>>    x86/smpboot: Use current_task to get idle thread
>>
>>
>> I think those first two should be folded into the 'x86/smpboot: Support
>> parallel startup of secondary CPUs' patch rather than follow-on
>> patches?
> 
> Yes, that makes sense.
> 
>>>    x86/smpboot: Remove initial_stack on 64-bit
>>>    x86/smpbppt: Remove early_gdt_descr on 64-bit
>>>    x86/smpboot: Remove initial_gs
>>>    x86/smpboot: Simplify boot CPU setup
>>
>> Those four probably make sense to come separately. For each of them,
>>
>> Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
>>
>> I've pulled in the v10 series from Usama, squashed the first two as I
>> suggested, added the last four on top to do some testing:
>> https://git.infradead.org/users/dwmw2/linux.git/shortlog/refs/heads/parallel-6.2-rc8-part1
> 
> Looks good.  I noticed a typo in the commit log of the last patch
> (dynammically -> dynamically).  Can you fix that or should I resend?
> 
> Thanks
> 
> --
> Brian Gerst

I have tested the branch on top of v6.2 release and sent it as v11. Have 
also fixed the typo.

Thanks,
Usama