Domanda

Sto cercando di eseguire il debug di un po 'strano problema nel driver di periferica per la periferica PCIe FPGA. Sia l'immagine FPGA driver di periferica e sono sviluppati in casa.

Il sistema di destinazione è x86, e il sistema operativo è Fedora 9. Ha una scheda PCIe con l'FPGA inserito è solo slot PCIe. L'immagine FPGA viene caricato dopo l'avvio dalla EEPROM.

Il driver è scritto in tal modo un che utilizza i file di risorse /sys/bus/pci/devices/0000:02:00.0/ (dove 0000: 02: 00.0 è la slot PCI della scheda che contiene il chip FPGA) per configurare il FPGA.

Quando il sistema si avvia (o quando ritorna dalla sospensione), le cuciture di collegamento FPGA per essere persi, e le file di risorse sono mancanti. All'avvio del FPGA correttamente, tutto funziona bene (i file di risorse ci sono). Quando il sistema entra in sospensione, l'FPGA è spento. Quando ritorna dalla sospensione, l'FPGA è acceso, prima di iniziare l'inizializzazione del driver.

Sto ritenendo sospetto le cose seguenti:

  • un bug nel firmware -? Qualcosa legato alla spina PCI
  • un bug nel kernel - meno probabile, bene perché le altre schede PCI sono riconosciuti. solo
                     questa scheda PCI rende problemi

E le domande sono le seguenti:

  • Qualcuno ha avuto problemi simili?
  • Che altro potrebbe essere sbagliato?
  • Qualche suggerimento su come eseguire il debug questo problema?

Modifica

Ho appena trovato questo bug , che è molto simile al problema che ho sto vedendo.

È stato utile?

Soluzione

Una scheda PCIe deve rispondere a un messaggio "C'è qualcuno lì" entro un certo tempo. E 'possibile che la scheda non risponde abbastanza rapidamente dopo l'ibernazione / reset?

Senza ulteriori dettagli del vostro disegno, è difficile fare nulla, ma immagino.

Si può elencare le differenze tra il sistema di lavoro e non lavoro, vale a dire che cosa fate in modo diverso per ottenere la carta di lavoro?

Altri suggerimenti

sono finalmente riuscito a eseguire il debug il mio problema. Poco prima di entrare il letargo, tutti i processi che utilizzano ancora i file di risorse vengono uccisi. Per qualche ragione sconosciuta, un processo non ha rilasciato le risorse, ed è stato ucciso. Abbiamo un cane da guardia, che respawn tutti i processi che non sono in esecuzione.

Quando di ritorno dal letargo, questo processo fatta rivivere, e dato che non ha potuto aprire i file di risorse, è morto di nuovo, e poi è stato dichiarato un errore critico. Dopo qualche tempo molto piccolo, i file di risorse sono state aggiunte dal sistema operativo, e questo processo potrebbe continuare normalmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top