Re: [TREE] "Fast Kernel Headers" Tree -v3

From: Lucas Tanure
Date: Sat Nov 04 2023 - 05:08:12 EST


On 22-03-2022 19:03, Kari Argillander wrote:
22.03.2022 18.22 Kari Argillander (kari.argillander@xxxxxxxxx) wrote:

22.03.2022 17.37 Randy Dunlap (rdunlap@xxxxxxxxxxxxx) wrote:

Hi Kari,

On 3/22/22 00:59, Kari Argillander wrote:
15.3.2022 12.35 Ingo Molnar (mingo@xxxxxxxxxx) wrote:

This is -v3 of the "Fast Kernel Headers" tree, which is an ongoing rework
of the Linux kernel's header hierarchy & header dependencies, with the dual
goals of:

- speeding up the kernel build (both absolute and incremental build times)

- decoupling subsystem type & API definitions from each other

The fast-headers tree consists of over 25 sub-trees internally, spanning
over 2,300 commits, which can be found at:

git://git.kernel.org/pub/scm/linux/kernel/git/mingo/tip.git master

I have had problems to build master branch (defconfig) with gcc9
gcc (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0

I did also test v2 and problems where there too. I have no problem with gcc10 or
Clang11. Error I get is:

In file included from ./include/linux/rcuwait_api.h:7,
from ./include/linux/rcuwait.h:6,
from ./include/linux/irq_work.h:7,
from ./include/linux/perf_event_types.h:44,
from ./include/linux/perf_event_api.h:17,
from arch/x86/kernel/kprobes/opt.c:8:
./include/linux/rcuwait_api.h: In function ‘rcuwait_active’:
./include/linux/rcupdate.h:328:9: error: dereferencing pointer to
incomplete type ‘struct task_struct’
328 | typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
| ^
./include/linux/rcupdate.h:439:31: note: in expansion of macro
‘__rcu_access_pointer’
439 | #define rcu_access_pointer(p) __rcu_access_pointer((p),
__UNIQUE_ID(rcu), __rcu)
| ^~~~~~~~~~~~~~~~~~~~
./include/linux/rcuwait_api.h:15:11: note: in expansion of macro
‘rcu_access_pointer’
15 | return !!rcu_access_pointer(w->task);

Argillander

You could try the patch here:
https://lore.kernel.org/all/917e9ce0-c8cf-61b2-d1ba-ebf25bbd979d@xxxxxxxxxxxxx/

I have to edit it to <linux/cgroup_types.h> as there is no <linux/cgroup-defs.h>
with fast headers. I also tried a couple other things but it didn't
seem to make a
difference.

although the build error that it fixes doesn't look exactly the same
as yours.

Quite close still. Maybe I should try to bisect this and I will also
see how bisectable
this branch is.

Ok. I have now bisect first bad to this commit.
c4ad6fcb67c4 ("sched/headers: Reorganize, clean up and optimize
kernel/sched/fair.c dependencies")
Note that this has been also bisect by others.

With this I get little bit different error:

In file included from ./arch/x86/include/generated/asm/rwonce.h:1,
from ./include/linux/compiler.h:255,
from ./include/linux/export.h:43,
from ./include/linux/linkage.h:7,
from ./include/linux/kernel.h:17,
from ./include/linux/cpumask.h:10,
from ./include/linux/energy_model.h:4,
from kernel/sched/fair.c:23:
./include/linux/psi.h: In function ‘cgroup_move_task’:
./include/linux/rcupdate.h:414:36: error: dereferencing pointer to
incomplete type ‘struct css_set’
414 | #define RCU_INITIALIZER(v) (typeof(*(v)) __force __rcu *)(v)
| ^~~~

Which is actually the same error that is in Randy's message. Patch of
Randy works
on top of this commit. But I cannot get this patch to work with HEAD,
but probably
I'm just missing something obvious. Still nice to see that probably a
solution is near.

There's various changes in -v3, and it's now ported to the latest kernel
(v5.17-rc8).

Diffstat difference:

-v2: 25332 files changed, 178498 insertions(+), 74790 deletions(-)
-v3: 25513 files changed, 180947 insertions(+), 74572 deletions(-)


--
~Randy

Hi Ingo,

What is the fate of this patch series? Are you going to push this?
If not, can I? My approach would be take one by one, understand, test and push.
Would take years, but I have the time.

Thanks
Lucas Tanure