Как узнать, кто загружает конкретный модуль ядра Linux?

Я построил некий драйвер как модуль (m) для Linux, spi-imx от NXP. Тем не менее, Linux проверяет этот драйвер при загрузке. Я изо всех сил пытаюсь выяснить, какой процесс / другой модуль / драйвер запрашивает этот драйвер spi-imx. А depmod не показывает никаких зависимостей между spi-imx и другими модулями (кроме spidev как подмодуля).

После некоторого исследования я обнаружил, что Linux автоматически (?) Вызывает modprobe при обнаружении нового устройства. Так действительно ли Linux вызывает modprobe, потому что статус ecSPI в дереве устройств - «нормально»? Если да, то как я могу это предотвратить? Я хотел бы динамически загружать spi-imx из приложения пользовательского пространства через modprobe. За этим стоит история: сопроцессор использует эту строку SPI параллельно с процессом загрузки Linux. Это, конечно, мешает и прерывает использование сопроцессором линии SPI. Когда сопроцессор завершит передачу через SPI (также загрузочный механизм), он должен передать строку SPI Linux.

Я очень благодарен за любые советы, ссылки, подсказки и комментарии по этому поводу.

1 ответ

Большое спасибо за ответы. Как вы, ребята, упомянули, я также обнаружил, что Linux сам проверяет устройство, если оно присутствует («в порядке»).

Одним из возможных решений является полное отключение вызова modprobe с помощью записи типа «install spi-imx /bin/false» в файле *.conf. Но это делает невозможным загрузку драйвера через modprobe для Linux и для пользовательского пространства.

«Черный список spi-imx» внутри *.conf, расположенного в /etc/modprobe.d/, — это способ предотвратить проверку драйвера Linux при загрузке. После этого modprobe из пользовательского пространства может успешно загрузить драйвер.

Еще раз спасибо и всего наилучшего

Другие вопросы по тегам