lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87frocwg64.ffs@tglx>
Date: Thu, 31 Oct 2024 14:33:23 +0100
From: Thomas Gleixner <tglx@...utronix.de>
To: Yicong Yang <yangyicong@...wei.com>, catalin.marinas@....com,
 will@...nel.org, sudeep.holla@....com, peterz@...radead.org,
 mpe@...erman.id.au, linux-arm-kernel@...ts.infradead.org,
 mingo@...hat.com, bp@...en8.de, dave.hansen@...ux.intel.com,
 pierre.gondois@....com, dietmar.eggemann@....com
Cc: yangyicong@...ilicon.com, linuxppc-dev@...ts.ozlabs.org, x86@...nel.org,
 linux-kernel@...r.kernel.org, morten.rasmussen@....com, msuchanek@...e.de,
 gregkh@...uxfoundation.org, rafael@...nel.org,
 jonathan.cameron@...wei.com, prime.zeng@...ilicon.com,
 linuxarm@...wei.com, xuwei5@...wei.com, guohanjun@...wei.com
Subject: Re: [PATCH v7 1/4] cpu/SMT: Provide a default
 topology_is_primary_thread()

On Thu, Oct 31 2024 at 20:17, Yicong Yang wrote:
> On 2024/10/30 22:55, Thomas Gleixner wrote:
>>> +static inline bool topology_is_primary_thread(unsigned int cpu)
>>> +{
>>> +	/*
>>> +	 * On SMT hotplug the primary thread of the SMT won't be disabled.
>>> +	 * Architectures do have a special primary thread (e.g. x86) need
>>> +	 * to override this function. Otherwise just make the first thread
>>> +	 * in the SMT as the primary thread.
>>> +	 */
>>> +	return cpu == cpumask_first(topology_sibling_cpumask(cpu));
>> 
>> How is that supposed to work? Assume both siblings are offline, then the
>> sibling mask is empty and you can't boot the CPU anymore.
>> 
>
> For architectures' using arch_topology, topology_sibling_cpumask() will at least
> contain the tested CPU itself. This is initialized in
> drivers/base/arch_topology.c:reset_cpu_topology(). So it won't be
> empty here.

Fair enough. Can you please expand the comment and say:

     The sibling cpumask of a offline CPU contains always the CPU
     itself.

> Besides we don't need to check topology_is_primary_thread() at boot time:
> -> cpu_up(cpu)
>      cpu_bootable()
>        if (cpu_smt_control == CPU_SMT_ENABLED &&
>            cpu_smt_thread_allowed(cpu)) // will always return true if !CONFIG_SMT_NUM_THREADS_DYNAMIC
>          return true; // we'll always return here and @cpu is always bootable

cpu_smt_control is not guaranteed to have CPU_SMT_ENABLED state, so this
argument is bogus.

> Also tested fine in practice.

I've heard that song before.

What matters is not what you tested. What matters is whether the code is
correct _and_ understandable.

Thanks,

        tglx

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ