Search code examples
linux-kernellinux-device-driver

Are builtin driver always prioritized over loadable modules?


According to this note:

When multiple built-in modules (especially drivers) provide the same capability, they're prioritized by link order specified by the order listed in Makefile.

Furthermore:

However, the order in this file is indeterministic (depends on filesystem listing order of installed modules). This causes confusion.

The solution is two-parted. This patch updates kbuild such that it generates and installs modules.order which contains the name of modules ordered according to Makefile.

What happens if a system has multiple drivers providing the same capabilities from which some are built-ins and others are loadable modules?

Which one is prioritized in this case? Is it always the built-in? And how can I change the priority (if this is possible)?

I thought about reordering them in modules.alias or modules.order but this wouldn't work I guess since built-ins are not listed there - right?


Solution

  • I found the answer in the meanwhile.

    To make a long story short: Yes, builtin drivers are in general prioritized over loadable drivers. Just because they are registered first and "first comes first serves" principle while binding.