2010-11-11 43 views
0

J'essaie de déboguer un problème quelque peu étrange dans le pilote de périphérique pour le périphérique PCIe FPGA. Le pilote de périphérique et l'image FPGA sont développés dans la maison.Perdre lien vers le périphérique FPGA

Le système cible est x86, et le système d'exploitation est fedora 9. Il a une carte PCIe avec le FPGA branché dans son seul emplacement PCIe. L'image FPGA est chargée après le démarrage à partir de l'EEPROM.

Le pilote est écrit de manière à utiliser les fichiers de ressources /sys/bus/pci/devices/0000:02:00.0/ (où 0000: 02: 00.0 correspond à l'emplacement PCI de la carte contenant le FPGA) pour configurer le FPGA. Lorsque le système démarre (ou lorsqu'il revient de l'hibernation), le lien FPGA est perdu et les fichiers de ressources sont manquants. Lorsque le FPGA démarre correctement, tout fonctionne correctement (les fichiers de ressources sont là). Lorsque le système passe en mode hibernation, le FPGA est mis hors tension. Lorsqu'il revient de l'hibernation, le FPGA est sous tension avant de démarrer l'initialisation du pilote.

Je soupçonnais à venir les choses:

  • un bug dans le firmware - quelque chose lié à la fiche du PCI?
  • un bogue dans le noyau - le moins probable, parce que d'autres cartes PCI sont reconnues. Seulement
    cette carte PCI rend les problèmes

Et les questions sont:

  • Quelqu'un at-il eu des problèmes similaires?
  • Quoi d'autre pourrait être faux?
  • Des suggestions sur la façon de déboguer ce problème?

EDIT

Je viens de découvrir this bug, qui est très similaire au problème que je vois.

+0

Perdre est orthographié L-O-S-I-N-G. – Rob

+0

Pourquoi la balise 'x86'? –

+0

@Paul Mon système cible est x86, et je ne suis pas sûr que ce soit pertinent. Pensez-vous que ce n'est pas? –

Répondre

0

Une carte PCIe doit répondre à un message "Y a-t-il quelqu'un" dans un certain délai. Est-il possible que votre carte ne répond pas assez rapidement après l'hibernation/réinitialisation?

Sans plus de détails sur votre conception, il est difficile de faire autre chose que de deviner. Pouvez-vous lister les différences entre le fonctionnement du système et son fonctionnement, c'est-à-dire que faites-vous différemment pour faire fonctionner la carte?

+0

Le problème que j'ai est très difficile à reproduire. Je pensais la même chose, que cela prend beaucoup de temps pour mettre la carte sous tension, et cela fait du désordre dans le logiciel. –

+0

Mais la carte est sous tension et initialisée, elle doit être détectée automatiquement par le système hot-plug linux, et elle doit enregistrer les fichiers de ressources quand cela arrive. –

1

J'ai finalement réussi à déboguer mon problème. Juste avant d'entrer dans le mode hibernation, tous les processus qui utilisent encore les fichiers de ressources sont en train d'être détruits. Pour une raison inconnue, un processus n'a pas libéré de ressources et a été tué. Nous avons un chien de garde, qui réapparaît tous les processus qui ne fonctionnent pas.

En revenant de l'hibernation, ce processus a réapparu, et puisqu'il n'a pas pu ouvrir les fichiers de ressources, il est mort à nouveau, puis une erreur critique a été déclarée. Après un très petit moment, les fichiers de ressources ont été ajoutés par le système d'exploitation, et ce processus pourrait continuer normalement.