5–7 Oct 2026
Europe/Prague timezone

Reviving early platform drivers

7 Oct 2026, 15:25
25m
"Club C+D" (Prague Congress Centre)

"Club C+D"

Prague Congress Centre

100
Driver Core MC Driver Core MC

Speaker

Bartosz Golaszewski (Qualcomm)

Description

Certain critical subsystems - clocks, timers and interrupt controllers - sometimes need to be initialized before driver core is made available in driver_init(). To that end, we provide a set of macros: IRQCHIP_DECLARE(), CLK_OF_DECLARE(), TIMER_OF_DECLARE() which allow the kernel to call initialization functions based on compatibles either before reaching the point where actual platform devices matching these compatibles can be created or instead of creating them essentially bypassing the driver model entirely.

This results in the initialization routines not being able to use many APIs only available to real drivers and - for many modules - never registering with the driver core.

I've worked on the idea of unifying these paths with a concept of "early platform drivers" back in 2018. That work never got anywhere but the "hacky" approach for early setup remains.

I'd like to re-discuss the idea, it's pros and cons and provide possible solutions for the main contention point raised last time: the fact that my series did nothing to automatically convert existing invocations of the _DECLARE() macros to using early platform drivers.

[1] https://lore.kernel.org/all/20180511162028.20616-1-brgl@bgdev.pl/

Author

Presentation materials

There are no materials yet.