lkml.org 
[lkml]   [2022]   [Oct]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: [PATCH] LoongArch: Do not create sysfs control file for io master CPUs
From
Date


On 10/08/2022 05:27 PM, WANG Xuerui wrote:
> On 2022/10/8 16:59, Tiezhu Yang wrote:
>> Now io master CPUs are not hotpluggable on LoongArch, in the current
>> code,
>> only /sys/devices/system/cpu/cpu0/online is not created, let us set the
>> hotpluggable field of all the io master CPUs as 0, then prevent to create
>> sysfs control file for the other io master CPUs which confuses some user
>> space tools. This is similar with commit 9cce844abf07 ("MIPS: CPU#0 is
>> not
>> hotpluggable").
>>
>> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
>> ---
>> arch/loongarch/kernel/smp.c | 8 --------
>> arch/loongarch/kernel/topology.c | 12 +++++++++++-
>> 2 files changed, 11 insertions(+), 9 deletions(-)
>>
>> diff --git a/arch/loongarch/kernel/smp.c b/arch/loongarch/kernel/smp.c
>> index b5fab30..ef89292 100644
>> --- a/arch/loongarch/kernel/smp.c
>> +++ b/arch/loongarch/kernel/smp.c
>> @@ -240,19 +240,11 @@ void loongson3_smp_finish(void)
>> #ifdef CONFIG_HOTPLUG_CPU
>> -static bool io_master(int cpu)
>> -{
>> - return test_bit(cpu, &loongson_sysconf.cores_io_master);
>> -}
>> -
>> int loongson3_cpu_disable(void)
>> {
>> unsigned long flags;
>> unsigned int cpu = smp_processor_id();
>> - if (io_master(cpu))
>> - return -EBUSY;
>> -
>
> Could this get invoked from somewhere other than the sysfs entries that
> "confuse user-space tools", e.g. from somewhere else in kernel land? If
> so (or if we can't rule out the possibility) keeping the guard here
> might prove more prudent.
>

If c->hotpluggable is 0, it will not generate a control file in sysfs
for this CPU, for example:

[root@linux loongson]# cat /sys/devices/system/cpu/cpu0/online
cat: /sys/devices/system/cpu/cpu0/online: No such file or directory
[root@linux loongson]# echo 0 > /sys/devices/system/cpu/cpu0/online
bash: /sys/devices/system/cpu/cpu0/online: Permission denied

So no need to check it here, just remove the code.

This was done in commit cbab54d9c2b2 ("MIPS: No need to check CPU 0 in
{loongson3,bmips,octeon}_cpu_disable()").

>> #ifdef CONFIG_NUMA
>> numa_remove_cpu(cpu);
>> #endif
>> diff --git a/arch/loongarch/kernel/topology.c
>> b/arch/loongarch/kernel/topology.c
>> index ab1a75c..7e7a77f 100644
>> --- a/arch/loongarch/kernel/topology.c
>> +++ b/arch/loongarch/kernel/topology.c
>> @@ -5,6 +5,7 @@
>> #include <linux/node.h>
>> #include <linux/nodemask.h>
>> #include <linux/percpu.h>
>> +#include <asm/bootinfo.h>
>> static DEFINE_PER_CPU(struct cpu, cpu_devices);
>> @@ -33,6 +34,11 @@ void arch_unregister_cpu(int cpu)
>> EXPORT_SYMBOL(arch_unregister_cpu);
>> #endif
>> +static bool io_master(int cpu)
>> +{
>> + return test_bit(cpu, &loongson_sysconf.cores_io_master);
>> +}
>> +
>> static int __init topology_init(void)
>> {
>> int i, ret;
>> @@ -40,7 +46,11 @@ static int __init topology_init(void)
>> for_each_present_cpu(i) {
>> struct cpu *c = &per_cpu(cpu_devices, i);
>> - c->hotpluggable = !!i;
>> + if (io_master(i))
>> + c->hotpluggable = 0;
>> + else
>> + c->hotpluggable = 1;
>> +
>
> This is just "c->hotpluggable = !io_master(i);".
>

Yes, I am OK either way, if it is necessary to send v2,
please let me know.

>> ret = register_cpu(c, i);
>> if (ret < 0)
>> pr_warn("topology_init: register_cpu %d failed (%d)\n",
>> i, ret);
> Other changes should be okay as they are in line with the previous MIPS
> change you referenced, but let's see what Huacai thinks.
>

Thanks,
Tiezhu

\
 
 \ /
  Last update: 2022-10-08 11:52    [W:0.046 / U:1.548 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site