Just like I did last year, I want to do a yearly report/retrospective for 2023 to look at what I (and the whole ClangBuiltLinux team in some cases) accomplished. I do monthly reports but looking at a high level across the year helps put things into perspective and drive improvements going into the new year.

Linux kernel

This year, I had 129 commits accepted into maintainer trees (not all will be merged into mainline in 2023 but they were written and added in maintainer trees in 2023). They can be viewed on the web or by running the following command in an up-to-date Linux repository locally:

$ git log \
    --author='Nathan Chancellor' \
    --oneline \
    --since-as-filter='Jan 1, 2023' \
    --until='Jan 1, 2024' \
    origin/master

A similar command will be used to generate all following commit logs, which are included for convenience behind some collapsible Markdown with links.

Kernel contributions in 2023 (git.kernel.org)

231092d19b86d ("MAINTAINERS: Add scripts/clang-tools to Kbuild section")
0353ebb12324c ("buffer: add cast in grow_buffers() to avoid a multiplication libcall")
8af7920d0eb76 ("s390/traps: only define is_valid_bugaddr() under CONFIG_GENERIC_BUG")
0706cfc7a5e9d ("s390/dasd: remove dasd_stats_generic_show()")
562a3aeaa7175 ("hexagon: traps: add internal prototypes for functions only called from asm")
6b0180e6db1cc ("hexagon: traps: remove sys_syscall()")
212acda71d938 ("hexagon: irq: add prototype for arch_do_IRQ()")
9f85d8be96900 ("hexagon: vm_events: remove unused dummy_handler()")
75eb3344ef188 ("hexagon: vdso: include asm/elf.h for arch_setup_additional_pages() prototype")
4ba0eab469d59 ("hexagon: process: add internal prototype for do_work_pending()")
0f731229a2551 ("hexagon: process: include linux/cpu.h for arch_cpu_idle() prototype")
e06373780bd94 ("hexagon: reset: include linux/reboot.h for prototypes")
b0085b0d694ab ("hexagon: signal: switch to SYSCALL_DEFINE0 for sys_rt_sigreturn()")
068b1237e3204 ("hexagon: time: include asm/delay.h for prototypes")
f443caea93e76 ("hexagon: time: mark time_init_deferred() as static")
279333097b22e ("hexagon: time: include asm/time.h for prototypes")
ebac3e6151c28 ("hexagon: vm_tlb: include asm/tlbflush.h for prototypes")
126fafece234f ("hexagon: vm_fault: include asm/vm_fault.h for prototypes")
9d106ce60760a ("hexagon: vm_fault: mark do_page_fault() as static")
f14250ec7d42a ("hexagon: smp: mark handle_ipi() and start_secondary() as static")
ba07109f57d12 ("hexagon: mm: include asm/setup.h for setup_arch_memory()'s prototype")
00acbea29533d ("hexagon: mm: mark paging_init() as static")
14a5c107d0c45 ("hexagon: uaccess: remove clear_user_hexagon()")
88a50f6f93af2 ("MAINTAINERS: Add scripts/clang-tools to Kbuild section")
18a38660786db ("mmc: sdhci-of-dwcmshc: Use logical OR instead of bitwise OR in dwcmshc_probe()")
12cc1da7ffd9e ("drm/bridge: Return NULL instead of plain 0 in drm_dp_hpd_bridge_register() stub")
3c0343bdf8d43 ("usb: typec: qcom-pmic-typec: Only select DRM_AUX_HPD_BRIDGE with OF")
908cbe82ef77f ("usb: typec: nb7vpq904m: Only select DRM_AUX_BRIDGE with OF")
225952d74d43e ("x86/tools: Remove chkobjdump.awk")
192ad2adde821 ("arm64: vdso32: Define BUILD_VDSO32_64 to correct prototypes")
1945968d8b128 ("LoongArch: Mark __percpu functions as always inline")
425627b2b2cd6 ("tcp: Fix -Wc23-extensions in tcp_options_write()")
740ec97bcdbe9 ("drm/amd/display: Increase frame warning limit with KASAN or KCSAN in dml2")
ba4590036855f ("ASoC: codecs: aw88399: Fix -Wuninitialized in aw_dev_set_vcalb()")
46a15b873353f ("arm64: Restrict CPU_BIG_ENDIAN to GNU as or LLVM IAS 15.x or newer")
82f5f40f2b936 ("bcachefs: Fix -Wcompare-distinct-pointer-types in bch2_copygc_get_buckets()")
3eda6f7130adb ("bcachefs: Fix -Wcompare-distinct-pointer-types in do_encrypt()")
f70225d7791e6 ("bcachefs: Fix -Wincompatible-function-pointer-types-strict from key_invalid callbacks")
940863fd2186c ("bcachefs: Fix -Wformat in bch2_bucket_gens_invalid()")
4f63ff3f66179 ("bcachefs: Fix -Wformat in bch2_alloc_v4_invalid()")
7ed15eb177ffd ("bcachefs: Fix -Wformat in bch2_btree_key_cache_to_text()")
ac1250a8cc3af ("bcachefs: Fix -Wformat in bch2_set_bucket_needs_journal_commit()")
040c0d96fd66e ("RDMA/bnxt_re: Fix clang -Wimplicit-fallthrough in bnxt_re_handle_cq_async_error()")
89dbf6a06f1dc ("drm/amd/display: Respect CONFIG_FRAME_WARN=0 in DML2")
8a555dc31e5aa ("eventfs: Use ERR_CAST() in eventfs_create_events_dir()")
d8a18697ad834 ("remoteproc: st: Fix sometimes uninitialized ret in st_rproc_probe()")
8882c7657bb27 ("scsi: ibmvfc: Use 'unsigned int' for single-bit bitfields in 'struct ibmvfc_host'")
1cb1126bed152 ("ASoC: tegra: Fix -Wuninitialized in tegra210_amx_platform_probe()")
84ff4f721638e ("OPP: Fix -Wunsequenced in _of_add_opp_table_v1()")
4ecb3d44a117b ("mlx5: Fix type of mode parameter in mlx5_dpll_device_mode_get()")
6cc115d590c70 ("ptp: Fix type of mode parameter in ptp_ocp_dpll_mode_get()")
9af5ad0f5b599 ("vfio/cdx: Add parentheses between bitwise AND expression and logical NOT")
286c48018dea3 ("drm/debugfs: Fix drm_debugfs_remove_files() stub")
c71f615fd08a5 ("drm/amd/display: Fix -Wuninitialized in dm_helpers_dp_mst_send_payload_allocation()")
ff81bb24f68f7 ("LoongArch: Drop unused parse_r and parse_v macros")
9775a27ff6d03 ("lib/Kconfig.debug: Restrict DEBUG_INFO_SPLIT for RISC-V")
4781807f05055 ("scsi: qla2xxx: Fix unused variable warning in qla2xxx_process_purls_pkt()")
5d1d3a433f0a0 ("clk: qcom: Fix SM_GPUCC_8450 dependencies")
8d84f35d2c3bf ("wifi: rtw89: Fix clang -Wimplicit-fallthrough in rtw89_query_sar()")
74048432fbb30 ("ASoC: cs42l43: Initialize ret in default case in cs42l43_pll_ev()")
71fe5095f78b6 ("MIPS: VDSO: Conditionally export __vdso_gettimeofday()")
0a3d1de89876f ("x86/hyperv: Add missing 'inline' to hv_snp_boot_ap() stub")
8334dc292fddb ("watchdog: xilinx_wwdt: Use div_u64() in xilinx_wwdt_start()")
cf2a1acc6ebdf ("rtc: stm32: Use NOIRQ_SYSTEM_SLEEP_PM_OPS()")
2382d744176f2 ("lib: test_scanf: Add explicit type cast to result initialization in test_number_prefix()")
c28423d3caae6 ("ASoC: SOF: Intel: Initialize chip in hda_sdw_check_wakeen_irq()")
696ec8654016d ("mISDN: Update parameter type of dsp_cmx_send()")
eedd3a82678d8 ("drm/i915: Avoid -Wconstant-logical-operand in nsecs_to_jiffies_timeout()")
27211db61aed8 ("drm/v3d: Avoid -Wconstant-logical-operand in nsecs_to_jiffies_timeout()")
362bf82fb5441 ("Input: mcs-touchkey - fix uninitialized use of error in mcs_touchkey_probe()")
9ba2975e98a4b ("ASoC: cs35l45: Select REGMAP_IRQ")
4762718b391b5 ("drm/amdgpu: Move clocks closer to its only usage in amdgpu_parse_cg_state()")
e3f85d1c071ed ("drm/amdgpu: Remove CONFIG_DEBUG_FS guard around body of amdgpu_rap_debugfs_init()")
e68dae946e3a0 ("clk: ralink: mtmips: Fix uninitialized use of ret in mtmips_register_{fixed,factor}_clocks()")
77e91191ccf07 ("leds: leds-mt6323: Adjust return/parameter types in wled get/set callbacks")
e6251317c962b ("MIPS: Mark core_vpe_count() as __init")
85891f03f7126 ("coresight: dummy: Update type of mode parameter in dummy_{sink,source}_enable()")
e70da985cef95 ("drm/amdgpu: Wrap -Wunused-but-set-variable in cc-option")
c882a573bc1d6 ("drm/amdgpu: Fix return types of certain NBIOv7.9 callbacks")
93d9b240a1fa2 ("percpu: Fix self-assignment of __old in raw_cpu_generic_try_cmpxchg()")
3fc0a99906e04 ("kbuild: Add KBUILD_CPPFLAGS to as-option invocation")
ff6e7f50bd315 ("kbuild: Add CLANG_FLAGS to as-instr")
7e5eb53bf9b80 ("powerpc/vdso: Include CLANG_FLAGS explicitly in ldflags-y")
8f6554ff90ef1 ("mips: Include KBUILD_CPPFLAGS in CHECKFLAGS invocation")
c315434fdb6ab ("drm/i915/pxp: Fix size_t format specifier in gsccs_send_message()")
baeef6cd2229e ("drm/i915/gt: Fix parameter in gmch_ggtt_insert_{entries, page}()")
722e2ebe6f216 ("drm/i915/gt: Fix second parameter type of pre-gen8 pte_encode callbacks")
fe1e67e6987b6 ("x86/csum: Fix clang -Wuninitialized in csum_partial()")
5c812050ebdfe ("drm/i915: Fix clang -Wimplicit-fallthrough in intel_async_flip_check_hw()")
b694fc96fe33a ("powerpc/boot: Disable power10 features after BOOTAFLAGS assignment")
c667d5a5a3ec1 ("clk: sp7021: Adjust width of _m in HWM_FIELD_PREP()")
3d6bdfea21ce1 ("riscv: Adjust dependencies of HAVE_DYNAMIC_FTRACE selection")
56dd6c5981260 ("ext4: fix unused iterator variable warnings")
4670a1b30f886 ("MIPS: Sink body of check_bugs_early() into its only call site")
5b5baf81001a8 ("MIPS: Mark check_bugs() as __init")
002725b9e3369 ("powerpc/32: Include thread_info.h in head_booke.h")
cc11ac9dcaffd ("Documentation/llvm: Add a note about prebuilt kernel.org toolchains")
75aca650e76e2 ("MIPS: Drop unused positional parameter in local_irq_{dis,en}able")
292004c90c8ab ("net: ethernet: ti: Fix format specifier in netcp_create_interface()")
cf882d9aa9e8f ("wifi: iwlwifi: mvm: Use 64-bit division helper in iwl_mvm_get_crosstimestamp_fw()")
89c2e815e7647 ("riscv: Handle zicsr/zifencei issues between clang and binutils")
8384d4a51e7cb ("net: pasemi: Fix return type of pasemi_mac_start_tx()")
99183cc3b5261 ("wifi: iwlwifi: Avoid disabling GCC specific flag with clang")
11334d8327b3f ("powerpc: Allow CONFIG_PPC64_BIG_ENDIAN_ELF_ABI_V2 with ld.lld 15+")
c3bd8362b06cf ("powerpc: Fix use of '-mabi=elfv2' with clang")
1c5accacb234c ("powerpc/boot: Only use '-mabi=elfv2' with CONFIG_PPC64_BOOT_WRAPPER")
cf9d015be160e ("clk: Avoid invalid function names in CLK_OF_DECLARE()")
d5bcdcda8799c ("bpf: Increase size of BTF_ID_LIST without CONFIG_DEBUG_INFO_BTF again")
176060a4c76ed ("drm: omapdrm: Do not use helper unininitialized in omap_fbdev_init()")
7e1f3acc339b2 ("net/sched: cls_api: Move call to tcf_exts_miss_cookie_base_destroy()")
48ea32d2dbd81 ("macintosh: windfarm: Use unsigned type for 1-bit bitfields")
e3feaad6ff8a7 ("powerpc/vdso: Filter clang's auto var init zero enabler when linking")
18674a45930c7 ("ASoC: mchp-spdifrx: Fix uninitialized use of mr in mchp_spdifrx_hw_params()")
eb6e280432ddc ("ARM: 9289/1: Allow pre-ARMv5 builds with ld.lld 16.0.0 and newer")
d9acfce33329d ("kbuild: Stop using '-Qunused-arguments' with clang")
b1547c5688674 ("kbuild: Turn a couple more of clang's unused option warnings into errors")
db038d9790eda ("drm/amd/display: Do not add '-mhard-float' to dml_ccflags for clang")
6bfe497d044a0 ("s390/purgatory: Remove unused '-MD' and unnecessary '-c' flags")
d8589dce8107e ("s390/vdso: Drop '-shared' from KBUILD_CFLAGS_64")
8210229f1f3e1 ("s390/vdso: Drop unused '-s' flag from KBUILD_AFLAGS_64")
5e05bfc92d196 ("powerpc/vdso: Remove an unsupported flag from vgettimeofday-32.o with clang")
0a42fbab447ed ("powerpc/vdso: Improve linker flags")
24734d132846d ("powerpc/vdso: Remove unused '-s' flag from ASFLAGS")
1f48f16264bc7 ("powerpc: Remove linker flag from KBUILD_AFLAGS")
37ff6bb8960fd ("MIPS: Prefer cc-option for additions to cflags")
0a20d2f8288af ("MIPS: Always use -Wa,-msoft-float and eliminate GAS_HAS_SET_HARDFLOAT")
f62847cf6ae49 ("ARM: 9287/1: Reduce __thumb2__ definition to crypto files that require it")
7b5de622ea3fe ("x86/build: Move '-mindirect-branch-cs-prefix' out of GCC-only block")
e1cae22898cf1 ("ASoC: amd: ps: Fix uninitialized ret in create_acp64_platform_devs()")


I am particularly proud of the work I did as part of the series that culminates in commit db1547c56886 ("kbuild: Turn a couple more of clang's unused option warnings into errors") and commit 8d9acfce3332 ("kbuild: Stop using '-Qunused-arguments' with clang"). It feels particularly rewarding to kill off a flag that hides issues, as it means that we cleaned up all the issues that were present and no more are allowed to creep back in because they will break the build. That work forced me to become even more familiar with Kbuild internals and by the end of it, I felt much more confident in being able to debug these errors in the future, which came in handy for this three patch series and commit 43fc0a99906e ("kbuild: Add KBUILD_CPPFLAGS to as-option invocation").

Another seemingly simple yet memorable fix was commit 093d9b240a1f ("percpu: Fix self-assignment of __old in raw_cpu_generic_try_cmpxchg()"). While the solution was not particularly challenging, the investigation into what was going on was interesting because compiling with W=2 gave us the smoking gun, which is not something I have ever relied on before. Getting -Wshadow cleaned up and enabled would be a nice goal but it has been shot down by high level kernel people in the past, so it is unlikely to happen any time soon in my opinion.

Last year, Nick Desaulniers and I worked on generating statically linked versions of LLVM/clang, so that we could distribute them on kernel.org for other developers to use without worrying about dynamic dependencies. Unfortunately, we were not able to complete that work due to other fires and we have not been able to double back to it since. I strongly believe that having accessible toolchains for developers to use is really important because it can ease the friction of testing with another toolchain, either regularly as part of CI or just as part of regular development. Because of that, I developed tooling to build a version of LLVM/clang in an older distribution container with a relatively minimal set of dynamic dependencies. While that does not eliminate the problem of developers potentially lacking these dynamic dependencies and not being able to run the toolchains, the goal of these toolchains is that they can be used with the most common distributions with a relatively simple list of packages that may already be installed. These toolchains now live on kernel.org for all to use; in fact, the RISC-V folks use them in their Patchwork CI.

It is important to keep in mind that sending patches is only part of the development process. The others are reporting problems and testing and reviewing solutions to those problems. The kernel keeps track of these through particular tags: Reported-by, Reviewed-by, and Tested-by. In 2023, I provided those tags on 162 patches. The break down of patches that contained:

  • Reported-by: 55
  • Reviewed-by: 79
  • Tested-by: 63

A full list of those commits are below, generated with the following command in an up-to-date Linux checkout:

$ git log \
    --extended-regexp \
    --grep='(Report|Review|Test)ed-by: Nathan Chancellor' \
    --oneline \
    --since-as-filter='Jan 1, 2023' \
    --until='Jan 1, 2024' \
    origin/master
Reported-by, Reviewed-by, and Tested-by in 2023

583ce66ddf7ed ("docs: rust: remove `CC=clang` mentions")
6778b49c9a2cb ("kunit: Add a macro to wrap a deferred action function")
9f2b8d45aa453 ("modpost: remove unreachable code after fatal()")
cac96f937021d ("modpost: remove unneeded initializer in section_rel()")
6a473f60edc30 ("modpost: inform compilers that fatal() never returns")
c87b7c06f2a6a ("modpost: move __attribute__((format(printf, 2, 3))) to modpost.h")
2ef432f027cff ("kbuild: support W=c and W=e shorthands for Kconfig")
c50065325f8b8 ("x86/callthunks: Correct calculation of dest address in is_callthunk()")
4570ebd836363 ("x86/tools: objdump_reformat.awk: Allow for spaces")
0c2ea7c89e375 ("x86/tools: objdump_reformat.awk: Ensure regex matches fwait")
a0cbc1b506b09 ("LoongArch: Record pc instead of offset in la_abs relocation")
e0be3f50c0e85 ("linux/export: clean up the IA-64 KSYM_FUNC macro")
bfaa37fd3486e ("kbuild: dummy-tools: pretend we understand -fpatchable-function-entry")
09af0551f5cfa ("leds: pca955x: Fix -Wvoid-pointer-to-enum-cast warning")
45561ba6d5de4 ("lkdtm: Fix CFI_BACKWARD on RISC-V")
40fef858d002f ("riscv: Use separate IRQ shadow call stacks")
1584d791a297a ("riscv: Implement Shadow Call Stack")
609b4f4252a2a ("riscv: Move global pointer loading to a macro")
2982fdd5133fa ("riscv: Deduplicate IRQ stack switching")
e97d0db5f44c0 ("riscv: VMAP_STACK overflow detection thread-safe")
65cc423155d56 ("bcachefs: Fix -Wself-assign")
d7ce49f58dc95 ("x86/retpoline: Make sure there are no unconverted return thunks due to KCSAN")
19102313466ea ("clk: ralink: mtmips: quiet unused variable warning")
55d4aee76ca72 ("kbuild: make binrpm-pkg always produce kernel-devel package")
45346841b77af ("crypto: skcipher - Add dependency on ecb")
250c7ead8ad95 ("drm/i915: enable W=1 warnings by default")
e1defac4b158c ("drm/i915: drop -Wall and related disables from cflags as redundant")
8c2efa260e6d0 ("pmdomain: renesas: rmobile-sysc: fix -Wvoid-pointer-to-enum-cast warning")
fa46bbc5892eb ("kbuild: rpm-pkg: generate kernel.spec in rpmbuild/SPECS/")
e32552652917f ("x86/boot: Move x86_cache_alignment initialization to correct spot")
077fc228f09c9 ("bpf: Use kmalloc_size_roundup() to adjust size_index")
3dbab3bba5f00 ("overlayfs: set ctime when setting mtime and atime")
b72d5207008db ("mfd: cs42l43: Use correct macro for new-style PM runtime ops")
d424743256b01 ("x86/bitops: Remove unused __sw_hweight64() assembly implementation on x86-32")
f908db7778263 ("bpf: Fix BTF_ID symbol generation collision")
ec7b666fb4247 ("power: vexpress: fix -Wvoid-pointer-to-enum-cast warning")
7cf2242466504 ("s390/dasd: fix string length handling")
3c6bfba442912 ("Documentation/llvm: refresh docs")
9415b03f0213f ("fbdev: neofb: Shorten Neomagic product name in info struct")
0bae4d99beb1f ("powerpc/xmon: Reapply "Relax frame size for clang"")
f301dc292eb12 ("LoongArch: Replace -ffreestanding with finer-grained -fno-builtin's")
4883eb269f087 ("drm/repaper: fix -Wvoid-pointer-to-enum-cast warning")
4f8fc31feb4b7 ("riscv: Allow CONFIG_CFI_CLANG to be selected")
72ab0361110db ("riscv/purgatory: Disable CFI")
f0ead42f69389 ("riscv: Add CFI error handling")
3a0c23f2539a6 ("riscv: Add ftrace_stub_graph")
f59c6855bad18 ("riscv: Add types to indirectly called assembly functions")
8d0ce30e0e4fc ("riscv: Implement syscall wrappers")
f4926723ac734 ("tty: gdm724x: use min_t() for size_t varable and a constant")
fbda5f4c7c1c8 ("dmaengine: owl-dma: fix clang -Wvoid-pointer-to-enum-cast warning")
49fde599db65d ("arch: enable HAS_LTO_CLANG with KASAN and KCOV")
fd122fe8591d5 ("backlight: lp855x: Drop ret variable in brightness change function")
417ab334dccb6 ("mtd: maps: fix -Wvoid-pointer-to-enum-cast warning")
9e002a34420e5 ("mtd: rawnand: fix -Wvoid-pointer-to-enum-cast warning")
f3c5d099b6f84 ("Revert "powerpc/xmon: Relax frame size for clang"")
3add6dec36d9d ("net: mdio: fix -Wvoid-pointer-to-enum-cast warning")
8248faf3ca276 ("Compiler Attributes: counted_by: Adjust name and identifier expansion")
e8d96909a23c8 ("asm-generic: partially revert "Unify uapi bitsperlong.h for arm64, riscv and loongarch"")
a5ca5e5e6a1d5 ("x86/retpoline: Don't clobber RFLAGS during srso_safe_ret()")
1bdc6decda074 ("btf, scripts: rust: drop is_rust_module.sh")
be8ded48b939b ("x86/srso: Fix build breakage with the LLVM linker")
16bceae250d0b ("drm/exec: use unique instead of local label")
c60c930a43c7c ("kbuild: rust_is_available: check that output looks as expected")
295522886a4eb ("kbuild: rust_is_available: handle failures calling `$RUSTC`/`$BINDGEN`")
cd6a3e1f94bab ("kbuild: rust_is_available: normalize version matching")
eb7e20e0c5cd0 ("kbuild: rust_is_available: fix confusion when a version appears in the path")
90db5521de2e0 ("kbuild: rust_is_available: check that environment variables are set")
2cae7f28ed6c3 ("kbuild: rust_is_available: add check for `bindgen` invocation")
ac284b1eb420c ("kbuild: rust_is_available: print docs reference")
ae90172c5b89f ("docs: rust: add paragraph about finding a suitable `libclang`")
ee3a6b819c96f ("kbuild: rust_is_available: fix version check when CC has multiple arguments")
824d2f98565e7 ("kbuild: rust_is_available: remove -v option")
e720f8c8c9d95 ("cpufreq: amd-pstate: fix global sysfs attribute type")
9287ea8ffc9be ("kbuild: deb-pkg: split debian/rules")
b970e436523ed ("kbuild: deb-pkg: use Debian compliant shebang for debian/rules")
b27d9ef0f63da ("s390/ftrace: use la instead of aghik in return_to_handler()")
40e60f00caf18 ("kbuild: Enable -Wenum-conversion by default")
9b4568843bb6c ("s390/kexec: make machine_kexec() depend on CONFIG_KEXEC_CORE")
c67921444bf68 ("gen_compile_commands: add assembly files to compilation database")
f7cd0371ea79d ("drm/amd/display: Allow building DC with clang on RISC-V")
ee8acd1b80350 ("media: verisilicon: fix excessive stack usage")
c5d234d7f55e4 ("ptp: Make max_phase_adjustment sysfs device attribute invisible when not supported")
31b3d1195d096 ("MIPS: Loongson: Fix build error when make modules_install")
901f17b0742e3 ("NFS: Don't cleanup sysfs superblock entry if uninitialized")
ddc7a3794ddd3 ("LoongArch: Include KBUILD_CPPFLAGS in CHECKFLAGS invocation")
89673a91a3171 ("LoongArch: vDSO: Use CLANG_FLAGS instead of filtering out '--target='")
38f0c35d7d93a ("s390/decompressor: fix misaligned symbol build error")
7b25a3801d11c ("mips: add pte_unmap() to balance pte_offset_map()")
020f0f9316b69 ("drm/amd/amdgpu: enable W=1 for amdgpu")
d90161ca5c723 ("powerpc/64: Force ELFv2 when building with LLVM linker")
034983db355da ("drm/amdgpu: Mark mmhub_v1_8_mmea_err_status_reg as __maybe_unused")
b9c384625dd60 ("bus: fsl-mc: fsl-mc-allocator: Drop a write-only variable")
0d43ed6389733 ("bus: fsl-mc: fsl-mc-allocator: Initialize mc_bus_dev before use")
4bb020f3dbb83 ("riscv: detect assembler support for .option arch")
caa71a7a600f7 ("KVM: arm64: Restore GICv2-on-GICv3 functionality")
28020b490eda9 ("perf: Re-instate the linear PMU search")
eb843a469fb0a ("kbuild: add $(CLANG_FLAGS) to KBUILD_CPPFLAGS")
ce1e94175696b ("s390/purgatory: Do not use fortified string functions")
c913a1c35aa61 ("KVM: arm64: Iterate arm_pmus list to probe for default PMU")
d06e72e68bcb4 ("Compiler Attributes: Add __counted_by macro")
a038f0183dd5d ("drm/panel: samsung-s6d7aa0: use pointer for drm_mode in panel desc struct")
8e4044243a668 ("ubsan: remove cc-option test for UBSAN_TRAP")
13552b360e726 ("soc: ti: pruss: Avoid cast to incompatible function type")
c1d05536f44ce ("start_kernel: Omit prevent_tail_call_optimization() for newer toolchains")
14ca14ed5444b ("start_kernel: Add __no_stack_protector function attribute")
168f095417643 ("jffs2: reduce stack usage in jffs2_build_xattr_subsystem()")
14dd3c29a2241 ("phy: mediatek: hdmi: mt8195: fix uninitialized variable usage in pll_calc")
892bd72efdc9d ("kbuild: deb-pkg: specify targets in debian/rules as .PHONY")
90b3bbff2a097 ("kbuild: rpm-pkg: remove kernel-drm PROVIDES")
a261a6e10e80c ("scripts: Remove ICC-related dead code")
0fd833609c824 ("kasan: remove hwasan-kernel-mem-intrinsic-prefix=1 for clang-14")
c65a2704cdd2a ("kbuild: do not create intermediate *.tar for tar packages")
8d94c4e403c89 ("kbuild: do not create intermediate *.tar for source tarballs")
6d8283549bc20 ("kbuild: merge cmd_archive_linux and cmd_archive_perf")
8f975594da8dc ("wifi: iwlwifi: mvm: fix the order of TIMING_MEASUREMENT notifications")
2887af5650e35 ("KVM: x86: Revert MSR_IA32_FLUSH_CMD.FLUSH_L1D enabling")
f1ccbf07453eb ("drm/vblank: Fix for drivers that do not drm_vblank_init()")
def41b03b3583 ("Revert "net: netcp: MAX_SKB_FRAGS is now 'int'"")
8570b7c8db6d9 ("gpu: host1x: fix uninitialized variable use")
eb39cde1e2487 ("kcsan: avoid passing -g for test")
e08ca18024412 ("kfence: avoid passing -g for test")
d31677bb7b194 ("gpu: host1x: fix uninitialized variable use")
28839ff93709a ("drm/vmwgfx: Fix src/dst_pitch confusion")
24c60f326c6e5 ("selftests: fix LLVM build for i386 and x86_64")
5207db8166ab9 ("Remove Intel compiler support")
cd35dbab871d6 ("powerpc/vmlinux.lds: Add .text.asan/tsan sections")
adf14d8aca1ea ("kbuild: rpm-pkg: remove unneeded KERNELRELEASE from modules/headers_install")
9cbe6ecfd97cb ("docs: kbuild: remove description of KBUILD_LDS_MODULE")
c34496e585688 ("objtool: Remove instruction::list")
ea17e848a8ba5 ("x86: Fix FILL_RETURN_BUFFER")
706bb08c81ac8 ("objtool: Fix overlapping alternatives")
6f5dc28fb3d73 ("objtool: Union instruction::{call_dest,jump_table}")
932dbe1f56804 ("objtool: Remove instruction::reloc")
b2de412158ecd ("objtool: Shrink instruction::{type,visited}")
5406654612142 ("objtool: Make instruction::alts a single-linked list")
ee88df1b06396 ("objtool: Make instruction::stack_ops a single-linked list")
0a554638dd266 ("objtool: Change arch_decode_instruction() signature")
99a55a94a0db8 ("ext4: fix function prototype mismatch for ext4_feat_ktype")
76e480da2f747 ("RDMA/cma: Distinguish between sockaddr_in and sockaddr_in6 by size")
78c8e32890ef7 ("powerpc/mm: Rearrange if-else block to avoid clang warning")
aee6bec0f44dd ("Documentation/llvm: add Chimera Linux, Google and Meta datacenters")
8980db94742f9 ("EDAC/amd64: Shut up an -Werror,-Wsometimes-uninitialized clang false positive")
7c45768fdf970 ("Revert "driver core: add error handling for devtmpfs_create_node()"")
8c9899affd51f ("Revert "devtmpfs: add debug info to handle()"")
3583f06782cae ("Revert "devtmpfs: remove return value of devtmpfs_delete_node()"")
8f7a3fd6dc66c ("randstruct: disable Clang 15 support")
6a2df7615fa05 ("tools/resolve_btfids: Compile resolve_btfids as host program")
088cf8eee1263 ("arm64: kprobes: Drop ID map text from kprobes blacklist")
8d0dd0bc302b2 ("udf: remove reporting loc in debug output")
a85923a954e77 ("crypto: hisilicon: Wipe entire pool on error")
18901ad1f25d2 ("ext4: Fix function prototype mismatch for ext4_feat_ktype")
048158c428e76 ("MIPS: remove CONFIG_MIPS_LD_CAN_LINK_VDSO")
ced0f30a426c7 ("arm64: head: Switch endianness before populating the ID map")
94f5f7816ff96 ("x86/boot/compressed: prefer cc-option for CFLAGS additions")
1ecf7ff1b036f ("kbuild: make W=1 warn files that are tracked but ignored by git")
daed6345d5880 ("VMCI: Use threaded irqs instead of tasklets")
1e506bec9be1e ("mm/thp: check and bail out if page in deferred queue already")
3f450533bbcb6 ("efi: tpm: Avoid READ_ONCE() for accessing the event log")
8c8e088427ad3 ("rseq: Increase AT_VECTOR_SIZE_BASE to match rseq auxvec entries")
debed3efe3a73 ("kbuild: export top-level LDFLAGS_vmlinux only to scripts/Makefile.vmlinux")
494398bde2731 ("s390: define RUNTIME_DISCARD_EXIT to fix link error with GNU ld < 2.36")
3970a1c9475b3 ("udf: initialize newblock to 0")


LLVM

I am far from a large LLVM contributor but I do have occasional patches there as part of this work. This year, I had 5 patches to LLVM, three of which were actual improvements or changes, rather than just reverts of other changes like in the previous retrospective. I wanted to try and fix more issues in the compiler this year and Nick Desaulniers helpfully pointed me to two issues that were simple to fix and helped me get more familiar with small parts of the LLVM code base.

LLVM contributions in 2023 (GitHub)

c2b09bee01714 ("[Clang][LoongArch] Generate _mcount instead of mcount (#65657)")
22d385f9656c9 ("[Sema] Do not emit -Wmissing-variable-declarations for register variables")
7f4f262fc5c43 ("Revert "Reapply [IR] Mark and constant expressions as undesirable"")
eecf89a1361cf ("[Clang] Add release note for 877210faa447")
77210faa447f4 ("[Sema] Do not emit -Wunused-variable for variables declared with cleanup attribute")


Tooling

We have a few different repositories in our GitHub organization that we use for testing and development, which I call “tooling”. Tooling is very important for repetitive tasks or tasks where you want to take the human out of the equation so that mistakes are less likely, such as a bisect. Additionally, there are some other repositories that we rely on, like TuxMake, that I consistently contribute to.

The focus for a lot of this year’s work on tooling was improved maintainability in a few different aspects. The first major area of work I did was rewriting boot-utils and tc-build to be more object oriented and encapsulated. I felt like I was getting lost and experiencing a lack of confidence when modifying these projects, so I challenged myself to rewrite them with all of the extra experience I have gained with Python over the past few years. The end result is much more maintainable and has made adding additional functionality and changes much easier, as evidenced by the LoongArch addition to boot-utils. The next major area of work we improved on in our tooling is increased linting, primarily through the use of ruff, which has many different rules for keeping our code clean and free of issues before they are committed. Finally, one of the things I am pretty proud of changing in our tooling was eliminating the initial ramdisk images that were checked into boot-utils and improving the tooling around generating them. While the versions of those images up until that point will still be in the repository’s history (which increases its size when cloning), any future updates that we have to do to the images will not impact the repository’s size, which makes updating the images slightly “cheaper”, meaning we can potentially make them more useful as we need.

Like previously, I have included the git log output with direct links to commits, along with a web link to browse the history there.

boot-utils (GitHub)

f9130e5a42a78 ("boot-qemu.py: Allow memory value to be customized")
32146d9faf61f ("utils.py: Do not query GitHub's API at all with '--gh-json-file'")
bc72645aa41dc ("boot-qemu.py: Workaround PLW1509 warning from Ruff")
4f12ea606eea1 ("boot-qemu.py: Fix downloading LoongArch firmware")
b705206d26027 ("Revert "DO-NOT-MERGE: Check in loongarch image"")
9087cf8d5f9bb ("DO-NOT-MERGE: Check in loongarch image")
ad98994b8dbf8 ("boot-qemu.py: Add support for LoongArch")
500d1b017d738 ("buildroot: Add support for LoongArch")
0e89f87bebe15 ("buildroot: Add support for applying local patches")
ff63bfb4ffa57 ("buildroot: Upgrade to 2023.02.2")
940648942b1e8 ("boot-qemu.py: Handle dtb location shuffle in linux-next")
8f47f10513dce ("boot-utils: Add '--gh-json-file'")
29044427808a4 ("utils: Limit scope of limit variable")
c6a83f7e876a0 ("utils: Link to GitHub's authentication documentation")
6e906bb7f1fc0 ("images: Remove")
2afa0224a8a49 ("boot-utils: Download rootfs images from GitHub releases")
58d555b6a3baf ("boot-qemu.py: Fix check in _prepare_initrd()")
583db5068e20d ("buildroot/rebuild.py: Add support for uploading images to a GitHub release")
b62d3959c99a6 ("buildroot: Rewrite build script in Python")
6b306ec746800 ("utils: Expand relative paths in get_full_kernel_path()")
a42d6a098552b ("boot-qemu.py: Add ppc64 big endian ELFv2 file strings to file_rosetta")
1a58619ca334c ("boot-qemu.py: Add file strings for aarch64 with CONFIG_RELOCATABLE=n")
33f03c2edb26c ("ruff.toml: Disable S603 and S607")
e6963d09ecc5f ("boot-qemu.py: Add quotes around file in error")
008bf44bf397d ("boot-qemu.py: Attempt to guess architecture from vmlinux without '-a'")
c6388892b52bf ("boot-qemu.py: Do not add '-no-reboot' unconditionally")
5d75a6fc02ece ("boot-qemu.py: Avoid .with_stem() for Python 3.8 compatibility")
ea5c7d481b96d ("boot-qemu.py: Eliminate _can_use_kvm() for arm64 and x86")
ca85ba5d2bfd0 ("boot-qemu.py: Add comment around why firmware files are being copied")
cdf19f21bcded ("boot-qemu.py: Add a note above QEMU 6.2.50 check to point out gitlab links")
9206b1aaf4e09 ("boot-qemu.py: Pull large sections of ARM64QEMURunner.run() into new methods")
9a59ca6be1120 ("boot-qemu.py: Do not make gdb imply interactive")
845151d1e2e9c ("boot-qemu.py: Make supports_efi a member instead of method")
d70025276cf65 ("boot-qemu.py: Remove trailing comma from function call")
c98ddcb9651ca ("boot-qemu.py: Use find_first_file() for kernel image")
909dd4decfa36 ("boot-qemu.py: Add support for m68k")
4b984e11cab6f ("boot-qemu.py: Add support for s390")
0ce9f4f872932 ("boot-qemu.py: Add support for riscv")
21125e5199921 ("boot-qemu.py: Add support for powerpc")
d28e84ce16282 ("boot-qemu.py: Add support for mips")
1286a405aecd1 ("boot-qemu.py: Add support for arm32")
5353c9263d0fb ("boot-qemu.py: Add support for arm64")
2a0fa1849ffd6 ("boot-qemu.py: Implement '--gdb'")
a1363b2899420 ("boot-qemu.py: Implement '--efi'")
4d6205b6c993d ("boot-qemu.py: Implement '--smp'")
58761bd48e964 ("boot-qemu.py: Implement '--append'")
8c6eb42aefa4f ("boot-qemu.py: Implement '--interactive' and '--timeout'")
7f4157818a6f1 ("boot-qemu.py: Initial rewrite")
fdee4ebcafe1b ("boot-qemu.py: Remove current implementation")
0411d25cb551b ("boot-qemu.py + utils.py: Refactor finding EFI images")
bbfed72828944 ("utils.py: Combine an else + if into elif")
d004f30f20905 ("boot-qemu.py: Combine an else + if into elif")
5ecf73ed6e1c6 ("Selectively revert bdd0ce438bdabd20b4406151cfd96ccd35c2ad21")
4e6b62cc55f0c ("ruff.toml: Add link to all rules")
6ba09e9d9def8 ("boot-qemu.py: Use contextlib.suppress() instead of try except")
55011d9f053ba ("boot-qemu.py: Use unpacking instead of concatentation")
23ded710b53e4 ("boot-qemu.py: Use ternary operators in a couple of places")
7a1c4a3b9767b ("boot-qemu.py: Use .open() with pathlib object")
dd0ce438bdabd ("Run 'ruff --fix' for COM warnings")
47f417d6bcc38 ("boot-{qemu,uml}.py: Remove 'noqa: E251'")
ba30e4d0e154d ("Add a ruff configuration file")
709eae174f22e ("boot-qemu.py: Use context manager for pathlib open() calls")
6e18834da3fba ("boot-qemu.py: Use more specific exception class")


continuous-integration2 (GitHub)

be4ed2444f9a6 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
3b2c2b972bb38 ("Revert "TEMPORARY: generator.yml: Delay LLVM ToT builds until next Tuesday"")
e78de52ae9358 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
88c8f059adecf ("generate_workflow.py: Add spacing to context expressions")
30fd9bdc220d4 ("generate_workflow.py: Make formatting of cache job match others")
093dec9d57316 ("generate_workflow.py: Install full requirements.txt during cache setup")
a06e80320be4a ("generate_workflow.py: Disable yapf for cond in tuxsuite_setups()")
eb533a2f66aef ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
a6380f003cce1 ("generate_workflow.py: Apply tuxsuite if condition to all steps")
99079205f9b55 ("Revert "Temporarily change cron string to test caching"")
37fd93399b665 ("Temporarily change cron string to test caching")
48c1a12225d43 ("patches: Drop SRSO patches from android13-5.10")
50cb9b8aa233e ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
5bf042fb048ba ("patches: android-4.19: Drop RESERVE_BRK() patches")
4638d47214167 ("patches: stable: Drop LoongArch percpu patch")
4dcd11a9ece2d ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
0069ac3bbfa85 ("TEMPORARY: generator.yml: Delay LLVM ToT builds until next Tuesday")
d312f4c5c6d9e ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
925ee8751dedf ("patches: tip: Drop current list of patches")
b3e4bb6679dc7 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
75889aeb57b98 ("patches: mainline: Remove -Wuninitialized ASoC patch")
6495455561a32 ("patches: mainline: Drop LoongArch percpu __always_inline patch")
91d5c2c462c60 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
1e9094f04d552 ("patches: Remove android-4.14")
925e020923ab2 ("patches: mainline: Drop -Wc23-extensions patch")
ce1e84b02b970 ("patches: mainline: Drop AMDGPU -Wframe-larger-than bump patch")
bf63b1ee0efdf ("utils.py: Handle virtconfig")
53077db7abfc3 ("patches: Fix android-4.14 and android-4.19 brk backports")
a7f520db88985 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
b29a828bf3952 ("patches: Copy mainline patches to -tip")
f5a524342a4f8 ("patches: mainline: Add 1dc05a274a7b13fd61b6c43f0136153752e6f731")
577cb1d514185 ("patches: mainline: Add cba4590036855f4e3110d43c14385d2401080dbb")
5a682614ce40b ("patches: mainline: Use v2 of AMDGPU fix")
9f644e749aea7 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
61b24fef624f8 ("patches: Add patch for LoongArch build failures in stable and mainline")
3af0671aca444 ("patches: mainline: Add patch for -Wframe-larger-than in AMDGPU")
bc8ffa081323b ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
ec9b2d0a66d92 ("patches: Add fix for -Wc23-extensions in net/ipv4/tcp_output.c")
dbe4e90c9fd19 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
b09c2baa7f60e ("generator.yml: Update stable anchor to 6.6")
5c9f6935dc1fc ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
9de88895d8622 ("patches: Add backports for new ld.lld issue in Android")
ba43166a4c015 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
a43c9409eed52 ("generator.yml: Disable arm64 big endian builds prior to LLVM 15")
b0e025fc9dbfa ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
62bc821433b3b ("patches: Drop 5.1 drm/mediatek fixup patch")
83f858c4f3703 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
319ab6d05433e ("patches: next: Remove COUNT_ARGS() implementation patch")
0a9c518090af1 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
61c9310428b72 ("patches: Drop 5.15 fix up patch for drivers/interconnect/core.c")
a39df479e2e0d ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
bc85651b7a38c ("patches: Drop test_scanf change from all stable trees")
b6d7c31d827e5 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
b735bb5e517f0 ("patches: Drop test_scanf.c patch from -tip")
1df229ab4b17a ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
3d9b7dc67c033 ("generator.yml: Add android15-6.1")
cb89197bef173 ("generator.yml: Add missing AOSP LLVM builds for android14-6.1")
d026264e289b6 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
6ea416ac3a438 ("generator.yml: Update LoongArch LTO configuration")
e033ef8513ee0 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
b8df326bd8f98 ("generator.yml: Add LoongArch builds for LLVM 17")
97f7bbaab74c6 ("patches: arm64-fixes: Update for 6.5-rc3 fast forward")
0f3622aa9e567 ("workflows: Avoid hard coded Ubuntu version")
f464da60df3bf ("workflows: Update manually managed files to use actions/checkout@v4")
95ccd8396fd11 ("ci: Regenerate GitHub Actions workflow files")
9339b91136dd1 ("generate_workflow.py: Update to actions/checkout@v4")
7992d5c2b873e ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
f1d16780f8a32 ("patches: mainline: Drop test_scanf.c patch")
b2767d56698ac ("patches: android-mainline: Drop raid1-10.c patch")
302d0cb053b30 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
669302bb5889a ("Add support for LoongArch")
4d1cbe38aecd8 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
f21be99dfacb9 ("generator.yml: Apply 3f93770 to stable")
fc2932c4b1e31 ("generator.yml: Update stable anchor to 6.5")
7bbca7965fbdb ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
a6ddc78537b3e ("generator.yml: Stop enabling CONFIG_PPC_DISABLE_WERROR=y for clang-14+")
d0ac1642b485e ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
b07e111529e00 ("generator.yml: Drop Fedora's armv7hl configuration")
48178c170aa10 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
9cffcc2b01afc ("patches: Add fix for new -Wconstant-conversion in clang-18")
78af623e9df64 ("README: Update for new clang-17 workflows")
de4b96a514270 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
fa47bbc73097d ("generator: Re-enable powerpc 32-bit builds with LLVM 16+")
9c9a3806e3baf ("generator.yml: Add llvm_16 and move llvm_latest to 17")
13e659916b5a3 ("patches: arm64: Update for 6.5-rc3 fast forward")
2d831c3df24a8 ("README: Update badges for new workflows")
18433538c1d59 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
bb0bbe02fc37f ("LLVM tip of tree is now 18")
3a9209c477afd ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
f24982d981838 ("patches: mainline: Drop verisilicon patch")
b09328d910457 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
2c9058c9c04bd ("patches: stable: Remove "move '--target' to KBUILD_CPPFLAGS" series")
b974062e75a80 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
42ed1dc229561 ("patches: Drop SCSI -Warray-bounds patch from mainline and -tip")
0f98093ed77e0 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
f7478fbb27324 ("patches: next: Drop verisilicon patch")
e026087a4599c ("patches: Update verisilicon patch with accepted version")
2809e1926b133 ("patches: arm64-fixes: Update after 6.5-rc1 fast forward")
476d364660818 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
a465a4d2d1204 ("patches: Add SCSI -Warray-bounds patch to -tip")
4d8fd7b5c8a0e ("patches: mainline: Update SCSI patch")
7332f5b7d029c ("scripts/build-local.py: Add comment above check for versioned toolchains")
df04b9c059040 ("scripts/build-local.py: Allow use of ccache")
86bdb77ce3eac ("scripts/build-local.py: Improve interrupt behavior")
0cfddfed19c8b ("scripts/build-local.py: Only require runtime when using versioned toolchains")
c62b0b0a7be4c ("patches: next: Drop SCSI patch")
b187d769276d3 ("patches: mainline: Add verisilicon -Wframe-larger-than fix")
874eac4897240 ("patches: mainline: Drop md/raid1-10 patch")
c5644dcc5d3c0 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
f937703f16ed9 ("generator.yml: Switch to LLVM=1 for ppc64 on -next/mainline")
a57fca64f88c3 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
95f73521846d2 ("patches: tip: Add patch for RANDSTRUCT raid1-10.c error")
258bc3f4d3022 ("patches: mainline: Drop '--target=' KBUILD_CPPFLAGS series")
3a6117e329292 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
06efcbfd3b192 ("generator.yml: Apply dfc1013 to stable")
b04d6b78f0266 ("generator.yml: Update stable anchor to 6.4")
a6081d2a27c42 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
bbc8f3f0b8bc1 ("patches: stable: Apply series to resolve arm64 big endian failures")
e3b054e267cc9 ("patches: next: Add patch for -Wframe-larger-than in drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c")
4d10560fc06ee ("patches: next: Update SCSI patch")
c0e9c56c82057 ("patches: mainline: Add patch for drivers/scsi/aacraid")
74e3dabfb7f78 ("patches: mainline: Add patch for RANDSTRUCT raid1-10.c error")
7fe8735790ada ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
115cb3fe607cd ("generator.yml: Update RISC-V gki_defconfig")
c3248ee2d9cd5 ("check_logs.py: Remove unnecessary conversion to fix updated RUF010")
af3849c59f4cc ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
b80152d923d4f ("patches: android-mainline: Drop upstream ext4 patch")
5c2476dda8b24 ("check_logs.py: Fix fetch_dtb() after refactoring")
6e4a285290e2f ("check_logs.py: Make fetching boot-utils a little more obvious")
c7edf5f8c9c68 ("check_logs.py: Improve downloading files")
948e213042a71 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
d941540d8b50e ("generator: Update Arch Linux x86_64 configuration link")
c2d56b1a3a951 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
1b6b8e786efb6 ("boot-utils: Remove submodule")
79e5f3f761f63 ("ci: Wire up '--gh-json-file'")
5bdfb4a62d55c ("check_logs.py: Download boot-utils straight from GitHub")
292a9bf309cbc ("ci: Use pathlib and absolute paths everywhere")
38765a95cd894 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
fc1013d101bae ("generator.yml: Add PowerPC allmodconfig build for mainline with LLVM 15+")
af80ae4917315 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
eca8f0bb17e8d ("generator.yml: Update stable anchor to 6.3")
01b3b58fcc864 ("Revert #559")
7093847d08ec1 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
f2a06f06d3a64 ("patches: mainline: Add in-flight DRM revert to fix PowerPC breakage")
0937a724626d5 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
a8dc022dcdecc ("generator.yml: Disable CONFIG_SECURITY_CHROMIUMOS for CrOS builds")
25f799ea6d93b ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
e032947baa13b ("generator.yml: Disable RISC-V gki_defconfig with llvm_android for now")
5aaf310db4226 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
88c164bb7d9e3 ("patches: Drop zicsr/zifencei 5.10 backport")
9ad5367161abd ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
974403b653d27 ("Update 64-bit big endian PowerPC configuration target")
f0e5f094a9af0 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
fbec65f0f447e ("patches: Add syncpt_irq patch to android-mainline")
b308c3602995d ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
6451574eed025 ("patches: Add backport of e89c2e815e76 to 5.10")
c1c96cc647866 ("patches: Add arm64")
d29e30d189321 ("patches: arm64-fixes: Sync with upstream patch")
cafc3b4dc98a6 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
6bdab7f63f360 ("generator.yml: Disable x86_64 allyesconfig builds on stable")
233a345552540 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
ad965aaf5a3fa ("generator.yml: Turn x86_64 allyesconfig builds back on")
2359d36990901 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
1ffd05bd595fe ("patches: Drop android12-5.4")
4e706e6969c25 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
7488227e2d0f0 ("patches: Drop majority of Android patches")
3a79b73e8d875 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
4abceae206b5c ("generator: Add PowerPC allmodconfig build")
9668711c594f3 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
199b7d774d68e ("patches: Drop android14-6.1")
3064d992c0fc5 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
c52139074b76b ("patches: Drop mainline")
65c29338461f0 ("boot-utils: Update")
833409e52b14d ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
93ad7b7663870 ("patches: stable: Remove sockaddr patch")
d56a6948c19ba ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
b7fa85c9e2357 ("patches: Add host1x fix to arm64-fixes tree")
0e331a7c6d81c ("patches: Drop android-mainline")
4ff83df15afc7 ("README: Add 6.1 builds")
0d30bec77e984 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
cdaaa41075e40 ("generator: Add 6.1 builds")
02cbdfeb2a205 ("generator: Update stable anchor to 6.2")
db576e4e648b3 ("patches: mainline: Drop memintristics series")
f9c88ce481290 ("patches: android14-6.1: Drop alternatives series")
dde30ae0a0be9 ("scripts/estimate-builds.py: Use separate variable for total builds")
334205a69a025 ("scripts/estimate-builds.py: Use an if statement instead of del to skip total")
64d704dc52093 ("scripts/estimate-builds.py: Use more descriptive variable names")
10c1f043f3ce1 ("scripts/estimate-builds.py: Use unpacking assignment for builds_per_tree iteration")
409f9327545cc ("scripts/estimate-builds.py: Add comment around use of key plus reverse")
3234a6841f9c3 ("scripts/estimate-builds.py: Remove unnecessary trailing comma")
500f351ecfae5 ("scripts/estimate-builds.py: Use defaultdict")
89a021ac9d4b4 ("scripts/estimate-builds.py: Place tree_name and tree_llvm_ver closer to initial use")
fdb09ab746283 ("scripts/estimate-builds.py: Hoist now and week_from_now out of for loop")
6289191dd1105 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
7a0980f01c340 ("patches: Drop next series")
bd35f7852a339 ("Add script to print the number of builds done per week per workflow")
70df43330b57e ("ruff.toml: Add link to codes")
1bfde82d12203 ("check_logs.py: Avoid overwriting loop variable")
079d65fe9539f ("generate.py: Use unpacking instead of concatentation")
b53d79443522a ("Add a ruff configuration file")
7c8051553fd33 ("patches: stable: Drop alternatives series")
df94fff7239b6 ("patches: mainline: Add fix for host1x -Wuninitialized warning")
f87a2de025f7a ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
64df6459bb7a8 ("patches: mainline: Drop alternatives series")
b662a8411227f ("patches: Add a series to fix KASAN KUnit tests in mainline and -next")
58a2daf8e5338 ("generate_tuxsuite.py: Use simpler expression to get patches_folder from patches_flag")
49dfd4916a92d ("generate_tuxsuite.py: Add small comment around string manipulation")
cb798b007df22 ("scripts/build-local.py: Use simpler expression for checking build result")
3a14934473557 ("scripts/build-local.py: Remove exist_ok=True from mkdir()")
8b6ca77caa22c ("scripts/build-local.py: Remove unused current_jobs")
a24531b046869 ("tuxsuite: Regenerate")
bdf45d36b3a44 ("generate_tuxsuite.py: Add information about running locally")
86e4ad4839bbf (".gitignore: Ignore tuxmake folder")
44449a65d02bf ("Add a script to build TuxSuite configurations locally")
6c394e42094f4 ("README: Update for new builds")
90e7e6a765084 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
7b8a35121f009 ("generator: Add LLVM 16 builds")
bfca870a6d595 ("generator: Move LLVM latest builds to LLVM 15 anchor")
3ab4f662cc1c5 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
edee2ef291f93 ("patches: Add workaround for cma.c issue in stable")
54a8f6b689693 ("patches: Add series for handling clang's conditional tail calls in static calls on x86")
a0cfecc7c4d2f ("README: Update position of markdown badges")
269da741538ea ("scripts/markdown-badges.py: Stop relying on parse_version()")
701d0da97562c ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
b1367c7f34895 ("generator: Enable KCSAN builds on stable")
4d9bccfe1ddac ("Replace Exception with more specific RuntimeError")
1fbc5ca34ca37 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
90118ae33fd4b ("generator.yml: Drop s390 builds for LLVM < 13 on 5.10")
877355fee2dd0 ("patches: android13-5.10: Remove pahole series")
987b9d1ffd813 ("README: Update for new workflows")
2a802f0de81ae ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
daa433d93e445 ("LLVM tip of tree is now 17")
56dd963f54974 ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
91ad95c206c67 ("patches: Drop mainline patch")
7c0be8f2b758a ("scripts: check-matrix: Add comment above for loop explaining sys.exit() positioning")
21a7fbde12385 ("4.9 is now EOL")
51242b35c2c0d ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
c3e90881a8215 ("patches: next: Remove")
5abc6fd36bcbe ("ci: Regenerate GitHub Actions workflow and TuxSuite files")
ed05deb488409 ("Revert "patches: Add patch for CONFIG_DRM_OFDRM=m and CONFIG_FB_OF=y"")
8cf7d5e64a526 ("Revert "generator.yml: Disable CONFIG_IPMMU_VMSA for OpenSUSE's RISC-V config"")
9c5b38e5d1fb4 ("patches: mainline: Add tentative fix for 99cb0d917ff")


tc-build (GitHub)

b42b6ce9a9785 ("build-binutils.py: Fix error with x86-64-v{2,3,4} as value to '-m'")
7103fcfce954d ("build-llvm.py: Fix PGO using LLVM as training data without '--full-toolchain'")
c439f99b759fd ("tc_build: llvm: Update BOLT flags")
6765eb7fec5d7 ("tc_build: llvm: Move use of build_targets out of ninja_cmd")
add5cbaa8033b ("ci: Slim up LLVM build")
04c8b6ff577af ("ci: Move to release/17.x")
275321cf9d274 ("build-llvm.py: Update GOOD_REVISION to 0f8615f4dc568f4d7cbf73580eef3e78f64f3bd0")
f398ab34910a4 ("build-llvm.py: Update DEFAULT_KERNEL_FOR_PGO to 6.6.0")
b43d462674702 ("build-llvm.py: Add '--build-targets'")
916997047aa81 ("tc_build: llvm: Only add tools to distribution_components with LLVM_BUILD_TOOLS=ON")
9a493d9abeef2 ("tc_build: llvm: Fix distribution_components with disabled projects")
711ccdfed2761 ("tc_build: llvm: Only add llvm-profdata and profile to components when building runtimes")
c91f4d591aeff ("tc_build: llvm: Use a separate list variable for distribution components")
b3ec05c0f4cd3 ("workflows: Update to actions/checkout@v4")
074dcea467443 ("build-llvm.py: Update GOOD_REVISION to e280e406c2e34ce29e1e71da7cd3a284ea112ce8")
d3969ff889ddf ("tc_build: kernel: Add support for ARCH=powerpc allmodconfig")
bec135c351fa4 ("tc_build: kernel: Build ppc64_guest_defconfig with LLVM=1")
28e3df2cc83df ("build-llvm.py: Update DEFAULT_KERNEL_FOR_PGO to 6.5.0")
a1ae46d5aa66f ("tc_build: utils: Fix new Ruff warning (PIE808)")
ea38c6d70af6f ("tc_build: llvm: Switch to Path.glob()")
90e3e07081bca ("build-binutils.py: 2.41")
fe43f285c44a4 ("build-llvm.py: Update GOOD_REVISION to b5983a38cbf4eb405fe9583ab89e15db1dcfa173")
8196400c4e846 ("build-llvm.py: Update DEFAULT_KERNEL_FOR_PGO to 6.4.0")
248eec37f77f0 ("build-llvm.py: Update GOOD_REVISION to 012ea747ed0275c499f69c82ac0f635f4c76f746")
c660a5dd94693 ("build-llvm.py: Update DEFAULT_KERNEL_FOR_PGO to 6.3.0")
44a001cc1119f ("tc_build: kernel: Adjust PowerPC64 configuration target")
2d6f859a470e0 ("ruff.toml: Disable S603 and S607")
848280b602056 ("tc_build: Switch to absolute imports")
347cbc5a66b5b ("binutils: Add support for LoongArch")
25d8ee4c62d61 ("tc_build: llvm: Enable LoongArch backend if it is in LLVM_ALL_TARGETS")
5acae355e61dd ("build-llvm.py: Update GOOD_REVISION to 08b0977a1925cf0a2cf6f87fcbf1d656e873f7c5")
933dec65d26ec ("build-llvm.py: Update DEFAULT_KERNEL_FOR_PGO to 6.2.8")
c9db17da81e5d ("build-llvm.py: Switch to dict() over dictionary comprehension")
e7a9782138edb ("tc_build: llvm: Ensure local_ref is always assigned")
c1452ee9c5ea3 ("tc_build: kernel: Simplify adding builders in LLVMKernelBuilder")
1b65b97a480b3 ("tc_build: source: Use an identifier for magic number")
fd6541ae36f1f ("tc_build: llvm: Simplify host_target_is_enabled()")
9d14a6b4f7d16 ("tc_build: llvm: Fix omission of CMAKE_RANLIB")
d6ad72eaefab4 ("tc_build: llvm: Allow opting out of default target triple")
a3c8e9e83eba7 ("Add '--install-targets'")
f566f1c1b5216 ("tc_build: kernel: Use ld.bfd for powerpc64le builds with ld.lld 11.x")
4ca572c36f76f ("tc_build: llvm: Handle lack of commit 95bfd0849f7fb")
630799fff4483 ("tc_build: kernel: Restrict integrated assembler with RISC-V")
86eeb2f24e11b ("tc_build: kernel: Ensure -Werror gets disabled on PowerPC")
fbccf3823a83e ("tc_build: kernel: Fix function name in S390KernelBuilder")
c23920ab569c0 ("build-llvm.py: Refactor else + if into elif to reduce indentation")
ae08cd307e683 ("build-*.py Fix new ruff warnings around iteration variables")
5882f604ab302 ("tc_build: llvm: Combine nested if statement")
cf3ec43db6bcd ("tc_build: llvm: Ignore exception using contextlib.suppress()")
1d73c7b56b5bd ("tc_build: llvm: Use unpacking instead of concatentation")
6bbf229e2394c ("build-llvm.py: Use comprehension instead of constructor plus generator")
9413a54240936 ("build-llvm.py: Use ternary expression for targets assignment")
596c8e050bd92 ("tc-build: Run 'ruff --fix --select COM .' and adjust formatting for yapf")
3c49cf6a743f3 ("Add a ruff configuration file")
88565c2e5424b ("build-binutils.py: Swap short flags for '--binutils-folder' and '--build-folder'")
dc673338d8b51 ("tc_build: llvm: Switch to upstream cmake compiler launcher variables")
bc3594fde9585 ("tc-build: Modular rewrite")
6de64e7ab98c9 ("tc-build: Remove current implementation")
a2705cffe4b41 ("tc-build: Print total script durations")
e95db2260af2c ("tc-build: Add custom duration printing function")
4b54af57322fc ("build-llvm.py: Update known good revision")
82e2a638ad9ab ("kernel: Add patch to workaround __read_overflow() error with s390 allmodconfig")
f5044edbc77aa ("kernel: Update to Linux 6.1.7")
6706c62b19442 ("build-binutils.py: Fix using relative paths for folders")


TuxMake (GitLab)

864e072fb8a4a ("docker: clang-android: Update to r498229b (17.0.4)")
c5d02c99fe864 ("runtime: docker: Enable LoongArch for clang-17")
1e8a14b9c825f ("runtime: docker: Add clang-17")
0456922e6c0fd ("arch: add support for building LoongArch")
10e7b410f4cf9 ("docker: clang-android: Update to r498229 (17.0.3)")
54374f996c10b ("wrapper: Handle 5.18 updates to LLVM variable")
1ea5b1137399f ("docker: Allow clang-android to target riscv")
d172bd539ea10 ("docker: clang-android: Update to r487747 (17.0.0)")
879dce240241c ("docker: install libclang-rt-dev on LLVM 14+")
d633373c9abb8 (".gitlab-ci.yml: Stop creating GCC symlink for Arch Linux")


Behind the scenes

There are always things that require time but do not always show tangible results. There are a few things that I think fall under this category:

  • Issue tracker management: Keeping a clean and accurate issue tracker is critical for few reason.
    1. It gives a good high level overview of the “health” of the project. We want our issue tracker to be an accurate representation of how much help we need (since we always need it…)
    2. It helps assign priority to certain issues. If we have a lot of open but resolved issues, it can be hard to decide what needs to be worked on next.
    3. The issue tracker is a wonderful historical reference. We use the issue tracker to keep track of mailing list posts and such so it is important that those links are as acccurate as possible and have as much information as possible in case we have to look back five years later to wonder why we did something the way that we did.
  • Mailing list reading: We are not Cc’d on every issue related to clang, even though sometimes it is the compiler’s problem or a known difference between the toolchains that we have already figured out. By monitoring the mailing list for certain phrases, we can provide assistance without being initially notified, which developers do appreciate.
  • Hardware testing: Every linux-next release, I built and boot kernels on a variety of hardware to test for issues, as some problems only show up on bare metal or with a full distribution. I wrote a script to drive a full distribution QEMU on a variety of architectures to make some of that testing and debugging easier but bare metal is always an important testing target, since that is where the kernel will run the majority of the time.
  • Conferences: I attended the 2023 US LLVM Developers’ Meeting in Santa Clara, California and Linux Plumbers Conference in Richmond, Virginia. It was great to interact with many great people in each of those communities and talk about various issues, as these events are usually the only times of year when people are together in person.

Special thanks

Special thanks to Google and the Linux Foundation for sponsoring my work. I am in a very fortunate position thanks to the work of many great and suppportive folks at those organizations and I look forward to continuing to contribute under this umbrella for 2024!

To view individual monthly reports, click on one of the links below: