On Fri Feb 20, 2026 at 7:06 AM CET, Greg KH wrote: > On Thu, Feb 19, 2026 at 10:38:56PM +0100, Koen Koning wrote: >> Use subsys_initcall() instead of module_init() (which compiles to >> device_initcall() for built-ins) for buddy, so its initialization code >> always runs before any (built-in) drivers. >> This happened to work correctly so far due to the order of linking in >> the Makefiles, but this should not be relied upon. > > Same here, Makefile order can always be relied on.
I want to point out that Koen's original patch fixed the Makefile order: diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile index 5cd54d06e262..b4e5e338efa2 100644 --- a/drivers/gpu/Makefile +++ b/drivers/gpu/Makefile @@ -2,8 +2,9 @@ # drm/tegra depends on host1x, so if both drivers are built-in care must be # taken to initialize them in the correct order. Link order is the only way # to ensure this currently. +# Similarly, buddy must come first since it is used by other drivers. +obj-$(CONFIG_GPU_BUDDY) += buddy.o obj-y += host1x/ drm/ vga/ tests/ obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/ obj-$(CONFIG_TRACE_GPU_MEM) += trace/ obj-$(CONFIG_NOVA_CORE) += nova-core/ -obj-$(CONFIG_GPU_BUDDY) += buddy.o He was then suggested to not rely on this and rather use subsys_initcall(). When I then came across the new patch using subsys_initcall() I made it worse; I badly confused this with something else and gave a wrong advise -- sorry Koen! (Of course, since this is all within the same subsystem, without any external ordering contraints, Makefile order is sufficient.)
