Qui est rafraîchissant de chien de garde matériel sous Linux?
J'ai un processeur AT91SAM9G20 de l'exécution d'un noyau 2.6. Chien de garde est activé lors de l'amorçage niveau et configuré pour 16 secondes. Chien de garde de la mode registre peut être configuré qu'une seule fois.
Lorsque le code se bloque, soit dans le bootstrap, chargeur de démarrage ou de noyau, le conseil redémarre. Mais une fois que le noyau vient même si le watchdog n'est pas actualisé dans une de ces applications, le conseil n'est pas réinitialisé après 16 secondes, mais 15 minutes.
Qui est de l'actualisation de la surveillance?
Dans notre cas, le chien de garde devrait être influencé par les applications, de sorte que le conseil d'administration peut réinitialiser si notre application se bloque.
Ce sont les processus en cours d'exécution:
1 root init
2 root [kthreadd]
3 root [ksoftirqd/0]
4 root [watchdog/0]
5 root [events/0]
6 root [khelper]
63 root [kblockd/0]
72 root [ksuspend_usbd]
78 root [khubd]
85 root [kmmcd]
107 root [pdflush]
108 root [pdflush]
109 root [kswapd0]
110 root [aio/0]
740 root [mtdblockd]
828 root [rpciod/0]
982 root [jffs2_gcd_mtd10]
1003 root /sbin/udevd -d
1145 daemon portmap
1158 dbus dbus-daemon --system
1178 root /usr/sbin/ifplugd -i eth0 -fwI -u0 -d5 -l -q
1190 root /usr/sbin/ifplugd -i eth1 -fwI -u0 -d5 -l -q
1221 default avahi-daemon: running [SP14.local]
1226 root /usr/sbin/dropbear
1246 root /root/bin/host_app
1254 root /root/bin/mini_httpd -c *.cgi -d /root/bin -u root -E /root/bin/
1256 root -sh
1257 root /sbin/syslogd -n -m 0
1258 root /sbin/klogd -n
1259 root /usr/bin/tail -f /var/log/messages
1265 root ps -e
Nous utilisons le chien de garde pour les mous de blocage disponibles dans le noyau 2.6.25-ts.at91sam9g20/kernel/softlockup.c
OriginalL'auteur Shashikiran | 2010-01-07
Vous devez vous connecter pour publier un commentaire.
Si vous avez activé le chien de garde de pilote dans le noyau, le chien de garde pilote met en place un minuteur de noyau, en charge de la réinitialisation de la surveillance. Le code correspondant est ici. De sorte qu'il fonctionne comme ceci:
Si aucune application ne s'ouvre /dev/watchdog fichier, puis le noyau prend soin de remettre le chien de garde. Depuis, c'est un timer, il n'apparaît pas comme un dédié thread du noyau, mais géré par le doux IRQ fil. Maintenant, si une application s'ouvre ce fichier, il devient responsable de la surveillance, et pouvez le réinitialiser en écriture du fichier, tel que documenté par la documentation liée à Richard.
Est le chien de garde de pilote configuré dans le noyau?
Si non, vous devez le configurer, et de voir si la réinitialisation arrive encore. Si il arrive encore, il est probable que votre réinitialiser vient de quelque part d'autre.
Si votre noyau est trop vieux pour avoir un bon chien de garde pilote (pas présent dans 2.6.25), vous devez créer un backport de 2.6.28. Ou vous pouvez essayer de désactiver la surveillance de votre chargeur de démarrage et de voir si la réinitialisation se produit encore.
OriginalL'auteur shodanex
En juillet 2016 un commit dans le noyau 4.7 à watchdog_dev.c activée le même comportement que shodanex de réponse pour tous les watchdog timer pilotes. Cela ne semble pas être documentées ailleurs que sur ce fil et le code source.
OriginalL'auteur Nolan Hergert
Cela peut vous donner un indice: http://www.mjmwired.net/kernel/Documentation/watchdog/watchdog-api.txt
Il est parfaitement logique d'avoir un espace utilisateur démon de la manipulation du chien de garde. C'est probablement par défaut de 15 minutes de délai d'attente.
Donc, il n'y a pas de message dans le journal lorsque le système redémarre au bout de 15 minutes? C'est étrange.
Le 9G20 est un processeur embarqué, et a probablement un ramdisk de la racine du volume. Il ne peut pas avoir un journal persistant.
le tail-f /var/log/messages devraient peut-être montrer quelque chose
Dans /var/log/messages, aucune information n'est disponible. Seulement les messages du noyau sont présents.
OriginalL'auteur Richard Pennington
nous avons eu un problème similaire concernant WDT sur AT91SAM9263. Problème, c'était peu 29 WDIDLEHLT de WDT_MR (Adresse: 0xFFFFFD44) de vous inscrire. Ce bit est mis à 1, mais il devrait être 0 pour nos besoins de l'application.
Peu d'explication de la feuille de données de la documentation:
• WDIDLEHLT: chien de garde Inactif Arrêt
Cela signifie que WDT compteur ne s'incrémente pas lorsque le noyau est en état de veille, donc le 15 ou plus de retard jusqu'à la réinitialisation se produit.
Vous pouvez essayer de "dd if=/dev/zero of=/dev/null", ce qui permettra d'éviter de noyau d'entrer dans un état inactif et vous devriez obtenir un reset en 16 secondes (ou quelle que soit la période que vous avez définie dans WDT_MR registre).
Donc, la solution est de mettre à jour u-boot code ou tout autre morceau de code qui définit WDT_MR registre. Rappelez-vous ce registre est d'écrire une fois...
OriginalL'auteur prix
Ne serait pas le noyau de l'actualisation de la minuterie chien de garde? Le chien de garde est conçu pour réinitialiser le conseil d'administration si l'ensemble du système se bloque, pas une seule application.
OriginalL'auteur mdm