[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4585de6e-a7ec-45a3-8421-dc9e1490cdf7@leemhuis.info>
Date: Thu, 28 Aug 2025 10:53:41 +0200
From: Thorsten Leemhuis <linux@...mhuis.info>
To: Vlastimil Babka <vbabka@...e.cz>, Suren Baghdasaryan <surenb@...gle.com>,
"Liam R. Howlett" <Liam.Howlett@...cle.com>,
Christoph Lameter <cl@...two.org>, David Rientjes <rientjes@...gle.com>
Cc: Roman Gushchin <roman.gushchin@...ux.dev>,
Harry Yoo <harry.yoo@...cle.com>, Uladzislau Rezki <urezki@...il.com>,
linux-mm@...ck.org, linux-kernel@...r.kernel.org, rcu@...r.kernel.org,
maple-tree@...ts.infradead.org,
Linux Next Mailing List <linux-next@...r.kernel.org>,
Stephen Rothwell <sfr@...b.auug.org.au>,
Alexei Starovoitov <alexei.starovoitov@...il.com>,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>
Subject: Re: [PATCH v6 02/10] slab: add opt-in caching layer of percpu sheaves
On 28.08.25 10:01, Vlastimil Babka wrote:
> On 8/28/25 09:43, Thorsten Leemhuis wrote:
>> On 27.08.25 10:26, Vlastimil Babka wrote:
>>> Specifying a non-zero value for a new struct kmem_cache_args field
>>> sheaf_capacity will setup a caching layer of percpu arrays called
>>> sheaves of given capacity for the created cache.
>>>
>>> Allocations from the cache will allocate via the percpu sheaves (main or
>>> spare) as long as they have no NUMA node preference. Frees will also
>>> put the object back into one of the sheaves.
>>> [...]
>>
>> This patch showed up in linux-next today and from a *quick* glance at
>> things I suspect it might be the reason why my daily next rpm builds for
>> Fedora failed today like this:
>
> Hi, thanks for the report.
>> ""
>> In file included from ./include/linux/spinlock.h:63,
>> from ./include/linux/mmzone.h:8,
>> from ./include/linux/gfp.h:7,
>> from ./include/linux/mm.h:7,
>> from mm/slub.c:13:
>> mm/slub.c: In function ‘__pcs_replace_empty_main’:
>> mm/slub.c:4727:64: error: ‘local_trylock_t’ {aka ‘__seg_gs struct spinlock’} has no member named ‘llock’; did you mean ‘lock’?
>> 4727 | lockdep_assert_held(this_cpu_ptr(&s->cpu_sheaves->lock.llock));
>> | ^~~~~
>> ./include/linux/lockdep.h:392:61: note: in definition of macro ‘lockdep_assert_held’
>> 392 | #define lockdep_assert_held(l) do { (void)(l); } while (0)
>> | ^
>> [...]
>> mm/slub.c:5653:29: note: in expansion of macro ‘this_cpu_ptr’
>> 5653 | lockdep_assert_held(this_cpu_ptr(&s->cpu_sheaves->lock.llock));
>> | ^~~~~~~~~~~~
>> make[3]: *** [scripts/Makefile.build:287: mm/slub.o] Error 1
>> make[2]: *** [scripts/Makefile.build:556: mm] Error 2
>> make[2]: *** Waiting for unfinished jobs....
>> make[1]: *** [/builddir/build/BUILD/kernel-6.17.0-build/kernel-next-20250828/linux-6.17.0-0.0.next.20250828.432.vanilla.fc44.x86_64/Makefile:2017: .] Error 2
>> make: *** [Makefile:256: __sub-make] Error 2
>> ""
>>
>> Full log: https://download.copr.fedorainfracloud.org/results/@kernel-vanilla/next/fedora-rawhide-x86_64/09498568-next-next-all/builder-live.log.gz
>
> Oh so I assume the .config here has both LOCKDEP and PREEMPT_RT?
PREEMPT_RT yes, LOCKDEP no.
The config the failed build actually used is generated on the buildsys,
but it should be identical to the one I attached here when you process
it with olddefconfig.
> I tried to make lockdep_assert_held() with trylock but forgot about the RT
> difference. The solution is Alexei's patch
>
> https://lore.kernel.org/all/20250718021646.73353-2-
> alexei.starovoitov@...il.com/
Hmmm, that one didn't do the trick for me.
> Wonder if I can just fast-track it to here from that series?
Ciao, Thorsten
View attachment "kernel-6.17.0-x86_64-rt.config" of type "text/plain" (290082 bytes)
Powered by blists - more mailing lists