Acabo de subir al repositorio GIT las modificaciones necesarias para utilizar el controlador de interrupciones IOAPIC en vez del antiguo 8259 en entornos multicore.
El 8259 es el controlador estandar de interrupciones. Con el surgimiento de los procesadores con más de un core el 8259 fue reemplazado por el IOAPIC y el LAPIC, aunque se preservó por compatibilidad. En general, cada PC tiene un IOAPIC que recibe las IRQ y las dirige a los LAPIC, cada procesador posee uno propio.
El problema con el 8259 es que todas las IRQ son capturadas por el BSP, o procesador de booteo. Esto claramente va encontra de la política de dedicación de recursos seguida por TORO.
De esta forma, en sistemas multicore, cuando se dedica un hardware a un core dado, las IRQ serán capturadas por ese core, descongestionando el procesador de boot.
Matias E. Vara
www.torokernel.org