Estoy buscando ya sea una llamada en modo kernel que pueda hacer desde un controlador, una utilidad de usuario o una llamada al sistema que le solicitará al Kernel que mire el bus PCI y vuelva a ejecutar completamente su inicialización o inicialice un dispositivo específico. Específicamente, necesito que el Kernel reconozca un dispositivo que se agregó al bus después del inicio y luego configure su espacio de direcciones, interrupción y otros parámetros de configuración, y finalmente habilite el dispositivo para que pueda cargar el controlador (a menos que este todo sucede como parte de la carga del controlador).¿Hay alguna manera de pedirle al Kernel de Linux que vuelva a ejecutar su código de inicialización de PCI?
Estoy atascado en el Kernel de la serie 2.4.x para esto, y actualmente estoy trabajando con 2.4.20, pero pasaré a 2.4.37 si es importante. La distribución es una versión reducida de Red Hat 7.3 que se ejecuta en un disco RAM, pero puedo agregar las herramientas necesarias para que funcione (siempre que jueguen bien con la serie 2.4).
Si algunos antecedentes ayudan a aclarar lo que estoy tratando de hacer: desde un arranque en frío, una vez en Linux, uso GPIO para programar un FPGA. Parte del FPGA, una vez programado, implementa un dispositivo PCI simple. Actualmente, después de programar el FPGA, reinicio el sistema y Linux reconoce el dispositivo después de subir y carga el controlador para ello.
En lugar de necesitar ese reinicio, me gustaría simplemente pedirle al Kernel que haga lo que haga durante el arranque para encontrar dispositivos PCI (tengo el Kernel configurado para encontrar dispositivos PCI por sí mismo, en lugar de preguntar el BIOS para esa información, por lo que el BIOS no necesitará saber acerca de este dispositivo (espero)).
Creo que Linux es capaz de ver el dispositivo después de haberlo programado pero antes de reiniciarlo, porque scanpci
mostrará el dispositivo después de que lo programe, al igual que lspci -H 1
. Solo necesito una forma de ponerlo en /proc/pci
, configurado y habilitado.
Debe dirigirse al sitio "hermana": http://serverfault.com/ y pregunte allí. Esto es para problemas relacionados con la codificación, su problema exacto parece ser más relacionado con los administradores de sistemas para que puedan ayudarlo más rápido/mejor. – Stan