Re: [PATCH 0000/2297] [ANNOUNCE, RFC] "Fast Kernel Headers" Tree -v1: Eliminate the Linux kernel's "Dependency Hell"

From: Ingo Molnar
Date: Sat Jan 08 2022 - 10:17:14 EST



* Nathan Chancellor <nathan@xxxxxxxxxx> wrote:

> I tried to checkout at 9006a48618cc0cacd3f59ff053e6509a9af5cc18 to see if
> I could reproduce that breakage there but the build errors out at that
> change (I do see notes of bisection breakage in some of the commits) so I
> assume that is expected.

Yeah, so the underlying problem is that these two commits want to be a
single commit:

# Commit #117
headers/deps: Move task->thread_info to per_task()

# Commit #106
headers/deps: Move thread_info APIs to <linux/sched/thread_info_api.h>

As we can only switch ARM64's <asm/preempt.h> to use per_task() - which
requires <linux/sched.h> - if we first fix & simplify <linux/sched.h>'s
header dependencies, which is done to a sufficient level by:

# Commit #556
headers/deps: Optimize <linux/sched.h> dependencies, remove <linux/sched/thread_info_api_lowlevel.h> inclusion


So it's a catch-22, and quite a complication, and a bisection breakage
distance of ~450 commits, with a lot of ordering assumptions & conflicts
along the way, should we attempt to move the first two to later stages. :-/

But today I've restructured the tree, and the -v2-to-be tree is now fully
bisectable on ARM64 too. :-)

There's a single, late per_cpu() conversion commit, after the first phase
of <linux/sched.h> simplifications:

headers/deps: Move task->thread_info to per_task()

I'd guess that either this one is that breaks SCS for you, or the ::thread
conversion:

headers/deps: per_task, arm64, x86: Convert task_struct::thread to a per_task() field

I've pushed out these fixes to the sched/headers branch a couple of minutes
ago, and this will be part of the -v2 release as well.

Thanks,

Ingo