On Wed, Dec 15, 2021 at 6:55 PM Jakub Kicinski <kuba@xxxxxxxxxx> wrote: > > Changes to bpf.h tend to clog up our build systems. The netdev/bpf > build bot does incremental builds to save time (reusing the build > directory to only rebuild changed objects). > > This is the rough breakdown of how many objects needs to be rebuilt > based on file touched: > > kernel.h 40633 > bpf.h 17881 > bpf-cgroup.h 17875 > skbuff.h 10696 > bpf-netns.h 7604 > netdevice.h 7452 > filter.h 5003 > sock.h 4959 > tcp.h 4048 > > As the stats show touching bpf.h is _very_ expensive. > > Bulk of the objects get rebuilt because MM includes cgroup headers. > Luckily bpf-cgroup.h does not fundamentally depend on bpf.h so we > can break that dependency and reduce the number of objects. > > With the patches applied touching bpf.h causes 5019 objects to be rebuilt > (17881 / 5019 = 3.56x). That's pretty much down to filter.h plus noise. > > v2: > Try to make the new headers wider in scope. Collapse bpf-link and > bpf-cgroup-types into one header, which may serve as "BPF kernel > API" header in the future if needed. Rename bpf-cgroup-storage.h > to bpf-inlines.h. > > Add a fix for the s390 build issue. > > v3: https://lore.kernel.org/all/20211215061916.715513-1-kuba@xxxxxxxxxx/ > Merge bpf-includes.h into bpf.h. > > v4: https://lore.kernel.org/all/20211215181231.1053479-1-kuba@xxxxxxxxxx/ > Change course - break off cgroup instead of breaking off bpf. > > v5: > Add forward declaration of struct bpf_prog to perf_event.h > when !CONFIG_BPF_SYSCALL (kbuild bot). Applied. Thanks