rmmod глючный сетевой драйвер

rmmod глючный сетевой драйвер

Я подозреваю, что у меня глючный сетевой драйвер для ath9kустройства Atheros, так как в конечном итоге я получаю ошибки SW IOMMU. Иногда, когда это происходит, я могу просто rmmodвернуть modprobeего обратно, и оно начнет работать. В других случаях мне приходится фактически удалять устройство, отсоединяя его. И если я подожду слишком долго, я полагаю, это вызовет слишком много проблем до такой степени, что я не смогу rmmodотключить устройство. Если я это сделаю, система зависнет на неопределенный срок.

Поскольку я не планирую исправлять драйвер (я не разработчик прошивки), будет ли «достаточно» просто периодически обновлять rmmodдрайвер modprobeили это тоже не сработает?

решение1

Я разработчик ядра, поэтому могу сказать, что "это зависит". Не исключено, что упреждающее удаление и повторная установка драйвера может предотвратить ошибку, как одно яблоко в день против доктора. Это зависит от ошибки.

Отличным примером проблемы, которую можно обойти с помощью rmmod, является неконтролируемое выделение памяти в драйвере (де-фактоутечка) таким образом, чтобы драйвер не потерял память и смог очистить ее во время rmmod.

Если ошибка вызвана нестабильностью, вызванной повреждением, то вряд ли это будет обходным путем, хотя это возможно. Предположим, что проблема разворачивается в несколько этапов: сначала драйвер должен перейти в некоторое относительно редкое состояние S (возможно, недопустимое состояние), а затем должно произойти некоторое относительно редкое событие E, пока он находится в этом состоянии. (Если E происходит, а драйвер не находится в состоянии S, то проблема не воспроизводится.) Если rmmod и повторная вставка выводят драйвер из состояния S и выполняются периодически, то проблема становится менее воспроизводимой.

Удаление и повторная вставка могут иметь свои собственные проблемы, такие как введение утечек (драйвер не очищает все в rmmod) или оставление висячих указателей (драйвер освобождает некоторый объект, но не отменяет его регистрацию должным образом из всех его ассоциаций). При разработке динамических драйверов одним из тестовых случаев должен быть скрипт оболочки, который выполняет rmmod/insmod в цикле. (Это, конечно, не обеспечивает полного покрытия: вам также нужен insmod; various actual use cases of driver; rmmodцикл).

решение2

Вы можете получить последнюю версию из ath9kbackports, чтобы решить некоторые проблемы, такие как: «Wi-Fi постоянно отключается», «Интернет работает медленно», «невозможно rmmod/modprobe...

Загрузите и установите последние бэкпорты:

wget https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v4.4.2/backports-4.4.2-1.tar.gz
make defconfig-ath9k
make -j 16
make install

Если все сделано успешно, вы получите:

Your backported driver modules should be installed now.
Reboot.

Выполните следующую команду для загрузки драйвера при загрузке, а затем перезагрузите систему:

echo "ath9k" | sudo tee -a /etc/modules
reboot

Перезагрузите драйвер:

rmmod ath9k
modprobe ath9k

Связанный контент