rmmod 결함이 있는 네트워크 드라이버

rmmod 결함이 있는 네트워크 드라이버

ath9k결국 SW IOMMU 오류가 발생하기 때문에 Atheros 장치의 네트워크 드라이버에 문제가 있는 것 같습니다 . 가끔 이런 일이 생기면 그냥 가져와서 작업을 rmmod시작합니다 modprobe. 실제로 장치의 연결을 끊어서 장치를 제거해야 하는 경우도 있습니다. 그리고 너무 오래 기다리면 rmmod장치를 연결하거나 플러그를 뽑는 데 너무 많은 문제가 발생할 것이라고 생각합니다. 이렇게 하면 시스템이 무기한 정지됩니다.

저는 드라이버를 수정하려는 것이 아니기 때문에(저는 펌웨어 개발자가 아닙니다) 드라이버를 정기적으로 rmmod수정하는 것이 "충분히 좋은" 수정 사항입니까, 아니면 이 방법도 작동하지 않습니까?modprobe

답변1

저는 커널 개발자이므로 "상황에 따라 다르다"고 말씀드릴 수 있습니다. 의사와 하루에 사과를 나누는 것처럼 오류를 방지하기 위해 사전에 드라이버를 제거했다가 다시 삽입하는 것이 불가능한 것은 아닙니다. 오류에 따라 다릅니다.

rmmod를 해결 방법으로 사용할 수 있는 좋은 예는 드라이버의 폭주 메모리 할당입니다(사실은누출) 드라이버가 메모리를 잃지 않고 rmmod'd 시 정리할 수 있도록 합니다.

버그가 손상으로 인해 불안정한 경우에는 가능하더라도 해결책이 될 가능성은 없습니다. 문제가 여러 단계로 진행된다고 가정해 보겠습니다. 먼저 드라이버는 상대적으로 드문 상태 S(아마도 유효하지 않은 상태)에 들어가야 하고, 그 상태에서 상대적으로 드문 이벤트 E가 발생해야 합니다. (E가 발생하고 드라이버가 S 상태에 있지 않으면 문제가 재현되지 않습니다.) 드라이버를 S 상태에서 벗어나게 하는 rmmods 및 재삽입이 주기적으로 수행되면 문제의 재현성이 떨어집니다.

제거했다가 다시 삽입하면 누수 발생(드라이버가 rmmod의 모든 항목을 정리하지 않음) 또는 매달린 포인터 남기기(드라이버가 일부 객체를 해제하지만 모든 객체에서 제대로 등록 취소하지 않음) 연관과 같은 자체적인 문제가 발생할 수 있습니다. . 동적 드라이버를 개발할 때 테스트 케이스는 루프에서 rmmod/insmod를 실행하는 쉘 스크립트여야 합니다. (물론 이것이 완전한 적용 범위를 제공하지는 않습니다. 여전히 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

관련 정보