rmmod 有缺陷的網路驅動程式

rmmod 有缺陷的網路驅動程式

我懷疑 Atheros 設備的網路驅動程式有問題,ath9k因為我最終會收到 SW IOMMU 錯誤。有時,當發生這種情況時,我只需將其恢復即可rmmod開始modprobe工作。其他時候,我實際上必須透過斷開連接來刪除該設備。而且,如果我等待太久,我想,這會造成太多麻煩,以至於我無法rmmod或拔掉設備。如果我這樣做,系統將無限期掛起。

由於我不打算修復驅動程式(我不是韌體開發人員),因此定期簡單地修復rmmod驅動程式是否是一個「足夠」的好修復modprobe,或者這也不起作用?

答案1

我是一名核心開發人員,所以我可以告訴你「這取決於」。主動移除並重新插入驅動程式可以避免錯誤,這並非不可能,就像每天一個蘋果與醫生一樣。這取決於錯誤。

rmmod 可以作為解決方法的一個很好的例子是驅動程式中失控的記憶體分配(事實上的洩漏),這樣驅動程式就不會丟失記憶體並且能夠在 rmmod 時清理它。

如果錯誤是由腐敗引起的不穩定,那麼它不太可能成為解決方法,儘管有可能。假設問題分幾個步驟進行:首先,駕駛必須進入某種相對罕見的狀態 S(可能是無效狀態),然後在處於該狀態時必須發生某種相對罕見的事件 E。 (如果發生 E 且驅動程式不處於狀態 S,則問題不會重現。)如果 rmmod 和重新插入使驅動程式脫離狀態 S,並且定期執行,則問題的重現性會降低。

刪除和重新插入本身可能會出現問題,例如引入洩漏(驅動程式不會清理 rmmod 上的所有內容)或留下懸空指針(驅動程式釋放某些對象,但沒有正確地將其從所有對像中註銷)協會)。開發動態驅動程式時,一個測試案例應該是一個在循環中執行 rmmod/insmod 的 shell 腳本。 (當然,這並不能提供完整的覆蓋範圍:您還需要insmod; various actual use cases of driver; rmmod循環)。

答案2

您可以從向後移植取得最新版本ath9k來解決一些問題,例如:「Wifi 不斷斷開」、「網路速度很慢」、「無法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

相關內容