Forum Linux.général J'arrive pas à unload un module

Posté par . Licence CC by-sa
Tags : aucun
1
14
fév.
2016

Bonjour

J'essaye de monter un mediacenter avec ubuntu. J'ai une carte tuner tv CINERGY TERRATEC mais il y a un problème avec le driver de cette carte quand le pc sort de veille. C'est un problème connu :
http://www.linuxtv.org/wiki/index.php/TerraTec_Cinergy_T_PCIe_dual
http://forum.kodi.tv/showthread.php?tid=125819&pid=2195337#pid2195337

La solution consiste à unloader les drivers cx23885 et cx25840 à la mise en veille, et à les recharger en sortie de veille.
Pour cela, j'utilise pm-utils.

Mais cela ne fonctionne qu'une seule fois. C'est à dire qu'à la première sortie de veille, ma carte tuner fonctionne bien. En analysant /var/log/pm-suspend.log, je vois bien que les deux drivers sont correctement unloadés, puis reloadés.

Unloading kernel module cx23885…Done.
Unloading kernel module cx25840…Done.
/usr/lib/pm-utils/sleep.d/75modules suspend suspend: success.

Mais si je refais un 2ème cycle de veille/sortie de veille, le unload des 2 drivers se passent mal :

Unloading kernel module cx23885…modprobe: FATAL: Module cx23885 is in use.
/usr/lib/pm-utils/sleep.d/75modules: 89: /usr/lib/pm-utils/sleep.d/75modules: log: not found
Failed.
Unloading kernel module cx25840…modprobe: FATAL: Module cx25840 is in use.
/usr/lib/pm-utils/sleep.d/75modules: 89: /usr/lib/pm-utils/sleep.d/75modules: log: not found
Failed.
/usr/lib/pm-utils/sleep.d/75modules suspend suspend: success.

Il y a quelque chose utilise les deux modules, mais quoi ?
Un lsmod montre que le compteur d'utilisation est de respectivement 1 et 20. Mais aucune indication sur qui utilise ces deux modules ?

Pourriez-vous m'aider SVP ?

  • # sous linux tout est fichier...

    Posté par . Évalué à 3.

    et c'est un avantage.

    la commande lsof /chemin/vers/fichiers permet de savoir qui utilise le fichier.
    les modules sont generalement dans /lib/modules/version-noyau/…

    tu peux faire un find /lib/modules/ -type f -iname '*cx23885*' -exec lsof {} \;

    ca devrait trouver tous les fichiers qui contiennent cx23885 dans leur nom et qui se trouve dans le dossier /lib/modules
    puis faire un lsof dessus.

    • [^] # Re: sous linux tout est fichier...

      Posté par . Évalué à 0.

      MERCI Neox

      alors j'ai fait :
      sudo lsof /lib/modules/3.13.0-76-generic/kernel/drivers/media/pci/cx23885/cx23885.ko

      Résultat :
      lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.

      • [^] # Re: sous linux tout est fichier...

        Posté par . Évalué à 5.

        Je ne penses de toutes façons pas qu'un lsof sur le fichier du module, retournes son utilisation une fois chargé.

        À la limite plutôt voir si rien n’ouvre un des fichiers dans /dev/dvb/

        Tu peut aussi tenter, si le noyau le supporte, rmmod avec l’option --force, mais attention suivant quoi est en train d'utiliser le pilote ça peut tout planter.

  • # lsmod

    Posté par (page perso) . Évalué à 2.

    lsmod te dira ce qui utilise le module.

    Il est aussi possible que le module soit juste buggué et impossible à décharger sans reboot dans certains cas (le fait qu'il faille le décharger pour la mise en veille me fait dire que ça ne serait pas très étonnant).

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: lsmod

      Posté par . Évalué à 1.

      Merci Krunch

      lsmod n'indique pas de users pour ces deux modules. Mais juste le compteur d'utilisateurs. Pour les autres modules, lsmod indique bien des users.

      Le truc bizarre, c'est que parfois cela marche, environ 1 fois sur 5. C'est-à-dire que les deux modules sont bien unloadés.

      A noter, que j'ai eu le même problème avec Windows, pendant plusieurs mois. Mais le fabricant de la carte avait fini par corriger le driver.

      Autre truc bizarre, pourquoi le rmmode --force ne fonctionne pas ?
      J'ai lu qu'il fallait que le noyau autorise cette option. Mais comment savoir si c'est le cas sur ma machine ?

      PS : je commence à ma décourager. Je crains d'avoir à retourner sous Windows.

      • [^] # Re: lsmod

        Posté par . Évalué à 2.

        Mais comment savoir si c'est le cas sur ma machine ?

        zgrep CONFIG_MODULE_FORCE_UNLOAD /proc/config.gz

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.