Je recherche un appel en mode noyau que je peux faire depuis un pilote, un utilitaire utilisateur ou un appel système qui demandera au noyau de regarder le bus PCI et soit de relancer complètement son initialisation, soit d'initialiser un appareil spécifique. Plus précisément, j'ai besoin du noyau pour reconnaître un périphérique ajouté au bus après le démarrage, puis configurer son espace d'adressage, son interruption et d'autres paramètres de configuration, puis activer le périphérique pour pouvoir charger le pilote (à moins que tout cela se produit dans le cadre de la charge du conducteur).Existe-t-il un moyen de demander au noyau Linux de réexécuter son code d'initialisation PCI?
Je suis coincé sur le noyau de la série 2.4.x pour cela, et je travaille actuellement avec 2.4.20, mais je passerai à 2.4.37 si c'est important. La distribution est une Red Hat 7.3 dépouillée fonctionnant dans un disque RAM, mais je peux ajouter les outils nécessaires pour que cela fonctionne (à condition qu'ils jouent bien avec la série 2.4).
Si un peu d'arrière-plan permettait de clarifier ce que j'essaie de faire: D'un démarrage à froid, une fois sous Linux, j'utilise GPIO pour programmer un FPGA. Une partie du FPGA, une fois programmée, implémente un simple périphérique PCI. Actuellement, après avoir programmé le FPGA, je redémarre le système et Linux reconnaît l'appareil après son lancement et charge le pilote pour cela.
Au lieu d'avoir besoin que le redémarrage, je voudrais simplement demander au noyau de faire ce qu'il fait pendant le démarrage pour trouver les périphériques PCI (je le noyau configuré pour trouver les périphériques PCI lui-même, au lieu de demander le BIOS pour cette information, donc le BIOS n'aura pas besoin de connaître cet appareil (j'espère)).
Je crois que Linux est capable de voir l'appareil après qu'il est programmé mais avant un redémarrage, parce que scanpci
montrera l'appareil après que je l'ai programmé, comme le fera lspci -H 1
. J'ai juste besoin d'un moyen de l'obtenir en /proc/pci
, configuré et activé.
Vous devriez vous diriger vers le site "sister": http://serverfault.com/ et demander là. Ceci est pour les problèmes liés au codage, votre problème exact semble être plus de sysadmin liés afin qu'ils puissent vous aider plus vite/mieux. – Stan