Re: aarch64 5.15.68 regression in topology/thread_siblings (huge file size and no content)
From: Greg Kroah-Hartman
Date: Thu Sep 22 2022 - 08:40:13 EST
On Thu, Sep 22, 2022 at 08:32:10AM -0400, Phil Auld wrote:
> On Thu, Sep 22, 2022 at 01:32:17PM +0200 Petr Štetiar wrote:
> > Hi,
> >
> > we've got a recent bug report[1], that lscpu segfaults on aarch64 board running
> > 5.15.y kernel. It is working fine on 5.10.y kernel.
> >
> > I've tracked it down[2] to the issue with `topology/thread_siblings` which
> > apart from very strange file size returns empty content. I assume, that it's
> > somehow related to the changes done in commit bb9ec13d156e ("topology: use
> > bin_attribute to break the size limitation of cpumap ABI"), but I didn't tried
> > to revert it yet to verify it.
> >
>
> This is actually due to a fix for that since returning 0 size breaks
> things as well.
>
> 7ee951acd31a drivers/base: fix userspace break from using bin_attributes for cpumap and cpulist
>
> The fix for small number of cpus as you have is now in Greg's driver core tree
>
> d7f06bdd6ee8 drivers/base: Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES
>
> and should work it's way back to stable trees soon.
That should fix up the file size issue.
The main problem being reported here is:
> > Kernel 5.15.68:
> >
> > root@OpenWrt:/# uname -a
> > Linux OpenWrt 5.15.68 #0 SMP Wed Sep 21 05:54:21 2022 aarch64 GNU/Linux
> >
> > root@OpenWrt:/# find /sys -name thread_siblings -exec ls -al {} \;
> > -r--r--r-- 1 root root 18446744073709551615 Sep 22 08:37 /sys/devices/system/cpu/cpu1/topology/thread_siblings
> > -r--r--r-- 1 root root 18446744073709551615 Sep 22 08:37 /sys/devices/system/cpu/cpu0/topology/thread_siblings
> >
> > root@OpenWrt:/# find /sys -name thread_siblings -exec cat {} \;
> > root@OpenWrt:/#
Nothing in the file in 5.15, yet 5.10:
> >
> > Kernel 5.10.138:
> >
> > root@OpenWrt:/# uname -a
> > Linux OpenWrt 5.10.138 #0 SMP Sat Sep 3 02:55:34 2022 aarch64 GNU/Linux
> >
> > root@OpenWrt:/# find /sys -name thread_siblings -exec cat {} \;
> > 2
> > 1
Has data in the files.
What caused that change?
thanks,
greg k-h