Всегда ли встроенный драйвер имеет приоритет над загружаемыми модулями? - PullRequest
0 голосов
/ 08 января 2019

Согласно этой записке :

Когда несколько встроенных модулей (особенно драйверов) предоставляют одинаковые возможность, они имеют приоритет по порядку ссылок, указанному в порядке перечислены в Makefile.

Кроме того:

Однако порядок в этом файле неопределенный (зависит от порядка следования установленных файловых систем модули). Это вызывает путаницу.

Решение состоит из двух частей. Этот патч обновляет kbuild таким образом, чтобы он генерирует и устанавливает modules.order, который содержит имя модули заказаны в соответствии с Makefile.

Что произойдет, если в системе имеется несколько драйверов, обеспечивающих одни и те же возможности, из которых некоторые являются встроенными, а другие являются загружаемыми модулями?

Какой из них является приоритетным в этом случае? Это всегда встроенный? И как мне изменить приоритет (если это возможно)?

Я думал о переупорядочении их в modules.alias или modules.order, но это не сработает, я думаю, поскольку встроенные модули там не перечислены - верно?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Тем временем я нашел ответ и задокументировал его здесь: http://0x0001.de/linux-driver-loading-registration-and-binding

Короче говоря: Да, встроенные драйверы имеют приоритет перед загружаемыми драйверами. Только потому, что они зарегистрированы первыми, а принцип «первым пришел - первым обслужен» при обязательной.

0 голосов
/ 09 января 2019

Я не думаю, что есть приоритет. Если у вас одинаковые экземпляры драйверов (один из встроенного, а другой из модуля ядра), в конечном итоге вы получите ошибку компиляции или загрузку модуля с момента повторения определения или чего-то подобного.

Если у вас есть «РАЗНЫЕ» драйверы на одном и том же оборудовании, не знаете, почему вы это делаете ??

Кроме того, если кто-то уже исследовал и создал устройства, более поздний не сможет сделать то же самое, поскольку будет конфликт.

Если вы просто спрашиваете «приоритет» между встроенным модулем и LKM, определенно, встроенный модуль будет первым. Модуль ядра находится в другом месте памяти, чем ядро. Итак, LKM загружается позже, чем ядро.

Итак, если вы загружаете один и тот же драйвер двумя разными способами одновременно, у LKM возникнут проблемы из-за конфликта.

...