Sto cercando una chiamata in modalità kernel che possa essere eseguita da un driver, un'utilità userland o una chiamata di sistema che chiederà al kernel di guardare il bus PCI e riavviare completamente l'inizializzazione o inizializzarla un dispositivo specifico. In particolare, ho bisogno che il kernel riconosca un dispositivo che è stato aggiunto al bus dopo l'avvio e quindi configura il suo spazio indirizzo, l'interrupt e altri parametri di configurazione e infine abilita il dispositivo in modo che possa caricare il driver per esso (a meno che non sia tutto accade come parte del carico del driver).C'è un modo per chiedere al kernel Linux di rieseguire il suo codice di inizializzazione PCI?
Sono bloccato sul kernel della serie 2.4.x per questo, e sto attualmente lavorando con 2.4.20, ma passerò al 2.4.37 se è importante. La distro è una versione ridotta di Red Hat 7.3 che gira su un ram disk, ma posso aggiungere tutti gli strumenti necessari per farlo funzionare (a patto che suonino bene con la serie 2.4).
Se qualche background aiuterebbe a chiarire cosa sto cercando di fare: da un avvio a freddo, una volta in Linux uso GPIO per programmare un FPGA. Una parte dell'FPGA, una volta programmata, implementa un semplice dispositivo PCI. Attualmente, dopo aver programmato l'FPGA, riavvio il sistema e Linux riconosce il dispositivo dopo l'avvio e carica il driver per esso.
Invece di aver bisogno che il riavvio, vorrei semplicemente chiedere al kernel di fare quello che fa durante l'avvio di trovare periferiche PCI (ho il kernel configurato per trovare i dispositivi PCI da solo, invece di chiedere il BIOS per queste informazioni, quindi il BIOS non avrà bisogno di sapere su questo dispositivo (spero)).
Credo che Linux sia in grado di vedere il dispositivo dopo che è stato programmato ma prima di un riavvio, perché scanpci
mostrerà il dispositivo dopo che l'ho programmato, così come lo sarà lspci -H 1
. Ho solo bisogno di un modo per farlo entrare in /proc/pci
, configurato e abilitato.
Si dovrebbe andare al sito "sorella": http://serverfault.com/ e chiedere lì. Questo è per i problemi relativi alla codifica, il tuo problema esatto sembra essere più legato a sysadmin in modo che possano aiutarti a velocizzare/migliorare. – Stan