From: Sudeep Holla <sudeep.holla@arm.com>
To: Yicong Yang <yangyicong@huawei.com>
Cc: <catalin.marinas@arm.com>, <will@kernel.org>,
<tglx@linutronix.de>, Sudeep Holla <sudeep.holla@arm.com>,
<peterz@infradead.org>, <mpe@ellerman.id.au>,
<linux-arm-kernel@lists.infradead.org>, <mingo@redhat.com>,
<bp@alien8.de>, <dave.hansen@linux.intel.com>,
<pierre.gondois@arm.com>, <dietmar.eggemann@arm.com>,
<linuxppc-dev@lists.ozlabs.org>, <x86@kernel.org>,
<linux-kernel@vger.kernel.org>, <morten.rasmussen@arm.com>,
<msuchanek@suse.de>, <gregkh@linuxfoundation.org>,
<rafael@kernel.org>, <jonathan.cameron@huawei.com>,
<prime.zeng@hisilicon.com>, <linuxarm@huawei.com>,
<yangyicong@hisilicon.com>, <xuwei5@huawei.com>,
<guohanjun@huawei.com>, <sshegde@linux.ibm.com>
Subject: Re: [PATCH v11 1/4] cpu/SMT: Provide a default topology_is_primary_thread()
Date: Fri, 28 Feb 2025 13:54:04 +0000 [thread overview]
Message-ID: <Z8G__C7n4zwje2MW@bogus> (raw)
In-Reply-To: <20250218141018.18082-2-yangyicong@huawei.com>
On Tue, Feb 18, 2025 at 10:10:15PM +0800, Yicong Yang wrote:
> From: Yicong Yang <yangyicong@hisilicon.com>
>
> Currently if architectures want to support HOTPLUG_SMT they need to
> provide a topology_is_primary_thread() telling the framework which
> thread in the SMT cannot offline. However arm64 doesn't have a
> restriction on which thread in the SMT cannot offline, a simplest
> choice is that just make 1st thread as the "primary" thread. So
> just make this as the default implementation in the framework and
> let architectures like x86 that have special primary thread to
> override this function (which they've already done).
>
> There's no need to provide a stub function if !CONFIG_SMP or
> !CONFIG_HOTPLUG_SMT. In such case the testing CPU is already
> the 1st CPU in the SMT so it's always the primary thread.
>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
> ---
> Pre questioned in v9 [1] whether this works on architectures not using
> CONFIG_GENERIC_ARCH_TOPOLOGY, See [2] for demonstration hacking on LoongArch
> VM and this also works. Architectures should use this on their own situation.
> [1] https://lore.kernel.org/linux-arm-kernel/427bd639-33c3-47e4-9e83-68c428eb1a7d@arm.com/
> [2] https://lore.kernel.org/linux-arm-kernel/a5690fee-3019-f26c-8bad-1d95e388e877@huawei.com/
>
> arch/powerpc/include/asm/topology.h | 1 +
> arch/x86/include/asm/topology.h | 2 +-
> include/linux/topology.h | 22 ++++++++++++++++++++++
> 3 files changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h
> index 16bacfe8c7a2..da15b5efe807 100644
> --- a/arch/powerpc/include/asm/topology.h
> +++ b/arch/powerpc/include/asm/topology.h
> @@ -152,6 +152,7 @@ static inline bool topology_is_primary_thread(unsigned int cpu)
> {
> return cpu == cpu_first_thread_sibling(cpu);
> }
> +#define topology_is_primary_thread topology_is_primary_thread
>
> static inline bool topology_smt_thread_allowed(unsigned int cpu)
> {
> diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
> index ec134b719144..6c79ee7c0957 100644
> --- a/arch/x86/include/asm/topology.h
> +++ b/arch/x86/include/asm/topology.h
> @@ -229,11 +229,11 @@ static inline bool topology_is_primary_thread(unsigned int cpu)
> {
> return cpumask_test_cpu(cpu, cpu_primary_thread_mask);
> }
> +#define topology_is_primary_thread topology_is_primary_thread
>
> #else /* CONFIG_SMP */
> static inline int topology_phys_to_logical_pkg(unsigned int pkg) { return 0; }
> static inline int topology_max_smt_threads(void) { return 1; }
> -static inline bool topology_is_primary_thread(unsigned int cpu) { return true; }
> static inline unsigned int topology_amd_nodes_per_pkg(void) { return 1; }
> #endif /* !CONFIG_SMP */
>
> diff --git a/include/linux/topology.h b/include/linux/topology.h
> index 52f5850730b3..b3aba443c4eb 100644
> --- a/include/linux/topology.h
> +++ b/include/linux/topology.h
> @@ -240,6 +240,28 @@ static inline const struct cpumask *cpu_smt_mask(int cpu)
> }
> #endif
>
> +#ifndef topology_is_primary_thread
> +
> +#define topology_is_primary_thread topology_is_primary_thread
> +
> +static inline bool topology_is_primary_thread(unsigned int cpu)
> +{
> + /*
> + * On SMT hotplug the primary thread of the SMT won't be disabled.
I may be misunderstanding the term "SMT hotplug" above. For me it is
comparable with logical CPU hotplug, so the above statement may be
misleading. IIUC, what you mean above is if SMT is disabled, the
primary thread will always remain enabled/active. Does that make sense
or am I missing something ?
--
Regards,
Sudeep
next prev parent reply other threads:[~2025-02-28 13:56 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-18 14:10 [PATCH v11 0/4] Support SMT control on arm64 Yicong Yang
2025-02-18 14:10 ` [PATCH v11 1/4] cpu/SMT: Provide a default topology_is_primary_thread() Yicong Yang
2025-02-28 11:10 ` Dietmar Eggemann
2025-03-03 13:35 ` Yicong Yang
2025-02-28 13:54 ` Sudeep Holla [this message]
2025-03-03 13:38 ` Yicong Yang
2025-02-18 14:10 ` [PATCH v11 2/4] arch_topology: Support SMT control for OF based system Yicong Yang
2025-02-28 11:11 ` Dietmar Eggemann
2025-03-03 14:03 ` Yicong Yang
2025-03-04 9:32 ` Dietmar Eggemann
2025-02-28 13:54 ` Sudeep Holla
2025-03-03 14:11 ` Yicong Yang
2025-02-18 14:10 ` [PATCH v11 3/4] arm64: topology: Support SMT control on ACPI " Yicong Yang
2025-02-25 6:08 ` Hanjun Guo
2025-03-03 14:42 ` Yicong Yang
2025-02-28 11:11 ` Dietmar Eggemann
2025-02-28 13:56 ` Sudeep Holla
2025-02-28 17:51 ` Pierre Gondois
2025-02-28 19:06 ` Sudeep Holla
2025-03-03 9:56 ` Pierre Gondois
2025-03-03 11:16 ` Sudeep Holla
2025-03-03 14:40 ` Yicong Yang
2025-03-04 8:25 ` Pierre Gondois
2025-03-04 10:02 ` Sudeep Holla
2025-03-04 15:07 ` Pierre Gondois
2025-03-05 9:01 ` Yicong Yang
2025-02-18 14:10 ` [PATCH v11 4/4] arm64: Kconfig: Enable HOTPLUG_SMT Yicong Yang
2025-02-28 11:12 ` [PATCH v11 0/4] Support SMT control on arm64 Dietmar Eggemann
2025-03-03 14:41 ` Yicong Yang
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=Z8G__C7n4zwje2MW@bogus \
--to=sudeep.holla@arm.com \
--cc=bp@alien8.de \
--cc=catalin.marinas@arm.com \
--cc=dave.hansen@linux.intel.com \
--cc=dietmar.eggemann@arm.com \
--cc=gregkh@linuxfoundation.org \
--cc=guohanjun@huawei.com \
--cc=jonathan.cameron@huawei.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mingo@redhat.com \
--cc=morten.rasmussen@arm.com \
--cc=mpe@ellerman.id.au \
--cc=msuchanek@suse.de \
--cc=peterz@infradead.org \
--cc=pierre.gondois@arm.com \
--cc=prime.zeng@hisilicon.com \
--cc=rafael@kernel.org \
--cc=sshegde@linux.ibm.com \
--cc=tglx@linutronix.de \
--cc=will@kernel.org \
--cc=x86@kernel.org \
--cc=xuwei5@huawei.com \
--cc=yangyicong@hisilicon.com \
--cc=yangyicong@huawei.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).