Question

Je suis en train de déboguer problème un peu étrange dans le pilote de périphérique pour le périphérique PCIe FPGA. Tant le pilote de périphérique et l'image FPGA sont développés dans la maison.

Le système cible est x86, et le système d'exploitation est fedora 9. Il dispose d'une carte PCIe avec le FPGA branché, il est uniquement dans l'emplacement PCIe. L'image de FPGA est chargé après le démarrage à partir de la mémoire EEPROM.

Le pilote est écrit en manière telle qu'il utilise les fichiers de ressources /sys/bus/pci/devices/0000:02:00.0/ (où 0000: 02: 00.0 est le slot PCI de la carte contenant le FPGA) pour configurer le FPGA.

Lorsque le système démarre (ou quand il revient de la mise en veille prolongée), les coutures de liaison de FPGA à perdre, et les fichiers de ressources manquent. Lorsque les bottes de FPGA correctement, tout fonctionne très bien (les fichiers de ressources sont là). Lorsque le système entre dans le mode hibernation, le FPGA est mis hors tension. Lorsqu'il revient de l'hibernation, le FPGA est mis sous tension, avant de commencer l'initialisation du pilote.

Je soupçonnais les choses suivantes:

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

Et les questions sont:

  • Quelqu'un at-il eu des problèmes similaires?
  • Que pourrait-on mal?
  • Toutes les suggestions sur la façon de déboguer ce problème?

EDIT

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

Était-ce utile?

La solution

Une carte PCIe doit répondre à un « Quelqu'un est-il » un message dans un certain temps. Est-il possible que votre carte ne répond pas assez rapidement après l'hibernation / reset?

Sans plus de détails sur votre conception, il est difficile de faire autre chose que deviner.

Pouvez-vous énumérer les différences entre le système de travail et ne fonctionne pas, à savoir que faites-vous différemment pour obtenir la carte de travail?

Autres conseils

J'ai finalement réussi à déboguer mon problème. Juste avant d'entrer dans la mise en veille prolongée, tous les processus qui utilisent encore les fichiers de ressources sont tués. Pour une raison inconnue, un processus n'a pas communiqué de ressources, et a été tué. Nous avons un chien de garde qui respawn tous les processus qui ne sont pas en cours d'exécution.

En revenant de la mise en veille prolongée, ce processus repop, et comme il ne pouvait pas ouvrir les fichiers de ressources, il est mort à nouveau, puis une erreur critique a été déclarée. Après quelques très peu de temps, les fichiers de ressources ont été ajoutées par le système d'exploitation, et ce processus pourrait continuer normalement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top