All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Gleixner <tglx@linutronix.de>
To: Usama Arif <usama.arif@bytedance.com>,
	dwmw2@infradead.org, kim.phillips@amd.com, brgerst@gmail.com
Cc: piotrgorski@cachyos.org, oleksandr@natalenko.name,
	arjan@linux.intel.com, mingo@redhat.com, bp@alien8.de,
	dave.hansen@linux.intel.com, hpa@zytor.com, x86@kernel.org,
	pbonzini@redhat.com, paulmck@kernel.org,
	linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	rcu@vger.kernel.org, mimoja@mimoja.de, hewenliang4@huawei.com,
	thomas.lendacky@amd.com, seanjc@google.com,
	pmenzel@molgen.mpg.de, fam.zheng@bytedance.com,
	punit.agrawal@bytedance.com, simon.evans@bytedance.com,
	liangma@liangbit.com, David Woodhouse <dwmw@amazon.co.uk>,
	Usama Arif <usama.arif@bytedance.com>
Subject: Re: [PATCH v12 06/11] x86/smpboot: Remove initial_stack on 64-bit
Date: Tue, 28 Feb 2023 17:13:55 +0100	[thread overview]
Message-ID: <87k001n4xo.ffs@tglx> (raw)
In-Reply-To: <20230226110802.103134-7-usama.arif@bytedance.com>

On Sun, Feb 26 2023 at 11:07, Usama Arif wrote:
> From: Brian Gerst <brgerst@gmail.com>
>
> Eliminating global variables from the CPU startup path in order to simplify
> it and facilitate parallel startup.

As this patch is now part of the parallel boot series and actually
introduces smpboot_control, the above is neither accurate nor useful.

Folks, really.

> Remove initial_stack, and load RSP from current_task->thread.sp instead.

  
>  #ifdef CONFIG_SMP
> -	initial_stack = (unsigned long)temp_stack + sizeof(temp_stack);
> +	current->thread.sp = (unsigned long)temp_stack + sizeof(temp_stack);

This lacks a comment about the temporary (ab)use of current->thread.sp

>  	early_gdt_descr.address =
>  			(unsigned long)get_cpu_gdt_rw(smp_processor_id());
>  	initial_gs = per_cpu_offset(smp_processor_id());
> +	smpboot_control = smp_processor_id();
>  #endif

> @@ -241,6 +241,24 @@ SYM_INNER_LABEL(secondary_startup_64_no_verify, SYM_L_GLOBAL)
>  	UNWIND_HINT_EMPTY
>  	ANNOTATE_NOENDBR // above
>  
> +#ifdef CONFIG_SMP
> +	movl	smpboot_control(%rip), %ecx
> +
> +	/* Get the per cpu offset for the given CPU# which is in ECX */
> +	movq	__per_cpu_offset(,%rcx,8), %rdx
> +#else
> +	xorl	%edx, %edx
> +#endif /* CONFIG_SMP */

Sigh, we should finally make CONFIG_SMP def_bool y ...

> +	/*
> +	 * Setup a boot time stack - Any secondary CPU will have lost its stack
> +	 * by now because the cr3-switch above unmaps the real-mode stack.
> +	 *
> +	 * RDX contains the per-cpu offset
> +	 */
> +	movq	pcpu_hot + X86_current_task(%rdx), %rax
> +	movq	TASK_threadsp(%rax), %rsp
> +
> diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
> index b18c1385e181..62e3bf37f0b8 100644
> --- a/arch/x86/kernel/smpboot.c
> +++ b/arch/x86/kernel/smpboot.c
> @@ -1112,7 +1112,12 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle,
>  	idle->thread.sp = (unsigned long)task_pt_regs(idle);
>  	early_gdt_descr.address = (unsigned long)get_cpu_gdt_rw(cpu);
>  	initial_code = (unsigned long)start_secondary;
> -	initial_stack  = idle->thread.sp;
> +
> +	if (IS_ENABLED(CONFIG_X86_32)) {
> +		initial_stack  = idle->thread.sp;
> +	} else {
> +		smpboot_control = cpu;
> +	}

Please remove the pointless brackets.
  
Thanks,

        tglx

  reply	other threads:[~2023-02-28 16:14 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-26 11:07 [PATCH v12 00/11] Parallel CPU bringup for x86_64 Usama Arif
2023-02-26 11:07 ` [PATCH v12 01/11] x86/apic/x2apic: Allow CPU cluster_mask to be populated in parallel Usama Arif
2023-02-26 11:07 ` [PATCH v12 02/11] cpu/hotplug: Move idle_thread_get() to <linux/smpboot.h> Usama Arif
2023-02-26 11:07 ` [PATCH v12 03/11] cpu/hotplug: Add dynamic parallel bringup states before CPUHP_BRINGUP_CPU Usama Arif
2023-02-26 11:07 ` [PATCH v12 04/11] x86/smpboot: Reference count on smpboot_setup_warm_reset_vector() Usama Arif
2023-02-26 11:07 ` [PATCH v12 05/11] x86/smpboot: Split up native_cpu_up into separate phases and document them Usama Arif
2023-02-26 11:07 ` [PATCH v12 06/11] x86/smpboot: Remove initial_stack on 64-bit Usama Arif
2023-02-28 16:13   ` Thomas Gleixner [this message]
2023-02-28 16:25     ` David Woodhouse
2023-02-28 20:32       ` Thomas Gleixner
2023-02-28 17:09     ` David Woodhouse
2023-02-28 20:17       ` Thomas Gleixner
2023-02-28 20:43         ` David Woodhouse
2023-03-01 10:18           ` Thomas Gleixner
2023-03-01 10:42             ` David Woodhouse
2023-02-28 22:22     ` Brian Gerst
2023-02-26 11:07 ` [PATCH v12 07/11] x86/smpboot: Remove early_gdt_descr " Usama Arif
2023-02-28 21:01   ` Thomas Gleixner
2023-02-28 21:02     ` Arjan van de Ven
2023-03-01 20:32       ` Josh Triplett
2023-03-01 22:16         ` Paul E. McKenney
2023-03-01 22:25           ` Josh Triplett
2023-03-02  0:28             ` Paul E. McKenney
2023-03-02  1:05               ` Randy Dunlap
2023-03-02  1:37                 ` Paul E. McKenney
2023-02-28 21:57     ` David Woodhouse
2023-02-28 22:41       ` David Woodhouse
2023-02-28 22:48         ` Brian Gerst
2023-02-28 23:42           ` David Woodhouse
2023-03-01  0:02             ` H. Peter Anvin
2023-03-01  7:39               ` David Woodhouse
2023-03-01  0:03             ` Brian Gerst
2023-03-01 10:27       ` Thomas Gleixner
2023-02-28 22:09     ` Brian Gerst
2023-02-26 11:07 ` [PATCH v12 08/11] x86/smpboot: Remove initial_gs Usama Arif
2023-02-26 11:08 ` [PATCH v12 09/11] x86/smpboot: Support parallel startup of secondary CPUs Usama Arif
2023-02-26 11:08 ` [PATCH v12 10/11] x86/smpboot: Send INIT/SIPI/SIPI to secondary CPUs in parallel Usama Arif
2023-02-26 11:08 ` [PATCH v12 11/11] x86/smpboot: Serialize topology updates for secondary bringup Usama Arif
2023-02-26 18:31 ` [PATCH v12 00/11] Parallel CPU bringup for x86_64 Oleksandr Natalenko
2023-02-26 20:59   ` [External] " Usama Arif
2023-02-27  6:13     ` David Woodhouse
2023-02-27  6:25       ` Usama Arif
2023-02-27  6:14     ` Usama Arif
2023-02-27 15:29       ` David Woodhouse
2023-02-27 16:32         ` Usama Arif
2023-02-27 21:39 ` Guilherme G. Piccoli
2023-02-28  9:07   ` David Woodhouse
2023-02-28 10:13   ` Paul Menzel
2023-02-28 12:04     ` Guilherme G. Piccoli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k001n4xo.ffs@tglx \
    --to=tglx@linutronix.de \
    --cc=arjan@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=brgerst@gmail.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dwmw2@infradead.org \
    --cc=dwmw@amazon.co.uk \
    --cc=fam.zheng@bytedance.com \
    --cc=hewenliang4@huawei.com \
    --cc=hpa@zytor.com \
    --cc=kim.phillips@amd.com \
    --cc=kvm@vger.kernel.org \
    --cc=liangma@liangbit.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mimoja@mimoja.de \
    --cc=mingo@redhat.com \
    --cc=oleksandr@natalenko.name \
    --cc=paulmck@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=piotrgorski@cachyos.org \
    --cc=pmenzel@molgen.mpg.de \
    --cc=punit.agrawal@bytedance.com \
    --cc=rcu@vger.kernel.org \
    --cc=seanjc@google.com \
    --cc=simon.evans@bytedance.com \
    --cc=thomas.lendacky@amd.com \
    --cc=usama.arif@bytedance.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.