Sospecho que tengo un controlador de red defectuoso para un ath9k
dispositivo Atheros, ya que eventualmente obtendré errores de SW IOMMU. A veces, cuando esto sucede, simplemente puedo rmmod
regresar modprobe
y comenzará a funcionar. Otras veces, debo quitar el dispositivo desconectándolo. Y supongo que si espero demasiado, causa demasiados problemas hasta el punto de que no puedo rmmod
desconectar el dispositivo. Si lo hago, el sistema se bloqueará indefinidamente.
Dado que no planeo arreglar el controlador (no soy un desarrollador de firmware), ¿es una solución "suficientemente buena" simplemente rmmod
y modprobe
el controlador periódicamente o tampoco funcionará?
Respuesta1
Soy desarrollador de kernel, así que puedo decirte que "depende". No es imposible que una eliminación y reinserción proactiva de un controlador pueda mantener alejado un error, como una manzana al día versus un médico. Depende del error.
Un gran ejemplo de un problema para el cual rmmod puede ser una solución es una asignación de memoria descontrolada en el controlador (unde factofuga) de modo que el controlador no haya perdido la pista de la memoria y pueda limpiarla en el momento rmmod.
Si el error es la inestabilidad causada por la corrupción, entonces es poco probable que sea una solución alternativa, aunque posible. Supongamos que el problema se desarrolla en varios pasos: primero el conductor tiene que entrar en algún estado relativamente raro S (quizás un estado no válido) y luego tiene que ocurrir algún evento relativamente raro E mientras se encuentra en ese estado. (Si ocurre E y el controlador no está en el estado S, entonces el problema no se reproduce). Si rmmod y la reinserción sacan al controlador del estado S y se realiza periódicamente, entonces el problema se vuelve menos reproducible.
La extracción y la reinserción pueden tener sus propios problemas, como introducir fugas (el controlador no limpia todo en rmmod) o dejar punteros colgando (el controlador desasigna algún objeto, pero no lo cancela correctamente de todos sus asociaciones). Al desarrollar controladores dinámicos, un caso de prueba debe ser un script de shell que realice un rmmod/insmod en un bucle. (Eso no proporciona una cobertura completa, por supuesto: también lo necesita insmod; various actual use cases of driver; rmmod
en un bucle).
Respuesta2
Puede obtener la última versión de ath9k
backports para resolver algunos problemas como: "Wifi sigue desconectándose", "Internet va lento", "no puedo rmmod/modprobe
...
Descargue e instale los últimos backports:
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
Cuando todo se haya hecho correctamente, obtendrá:
Your backported driver modules should be installed now.
Reboot.
Ejecute el siguiente comando para cargar el controlador en el arranque y luego reinicie:
echo "ath9k" | sudo tee -a /etc/modules
reboot
Vuelva a cargar el controlador:
rmmod ath9k
modprobe ath9k