..MP-BIOS bug: 8254 timer not connected to IO-APIC


Muchos tuvieron ese problema pero parece que pocos (por no decir casi nadie) se pusieron a investigar.

Dan “soluciones” y lo pongo entre comillas porque no saben lo que están haciendo.

Las soluciones que dan son justamente deshabilitar APIC ya sea desde el BIOS o con la opción del núcleo -> noapic.

Y yo digo: NO NO y NO!

Deshabilitar el APIC es deshabilitar las capacidades multiprocesador o multinúcleo que tiene tu equipo!

Según la Wikipedia:

APIC, acrónimo en inglés de Advanced Programmable Interrupt Controller, es un controlador de interrupciones, incorporado en la CPU y diseñado por y para el multiproceso, concretamente para poder incorporar múltiples microprocesadores a la placa madre. No confundir con el “I/O APIC” de la placa base que consiste en una mejora del PIC clásico de la arquitectura AT y la ventaja es que ofrece más de 16 IRQs y un manejo más rápido de las mismas.

Aaah y qué nos está diciendo? -> No confundir con el I/O APIC… Ok, justamente el problema que tenemos es que no sabemos a dónde está conectado el temporizador 8254.

¿Qué es un temporizador (o timer) 8254?

Es un chip fabricado por Intel que permite programar temporizadores en forma independiente de los tiempos del procesador.

Para no tener que inventar temporizadores por software utilizando el reloj del procesador.

Entonces lo que nos dice el kernel de Linux es que el chip temporizador (el 8254 de intel) no está conectado a la IO-APIC según la BIOS. ¿A dónde estará conectado? Para averiguarlo se puede consultar al viejo 8259A.

El 8259A es un chip anterior al sistema APIC que cumplía esa misma función.

Ese chip lo que hace es interconectar distintos dispositivos, entre ellos el temporizador de intervalos programables 8254 (Programmable Interval Timer) ya mencionado, para su comunicación con el procesador.

Lo mismo hace APIC nada más que esta es la versión moderna, más flexible, con mejor desempeño, en fin, es un sistema mejor que el original, pero parece que en nuesro caso la BIOS no nos dice bien dónde está conectado el 8254.

Entonces en las siguientes líneas de logs del núcleo:

[    0.015997] ..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1
[    0.016997] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
[    0.016997] …trying to set up timer (IRQ0) through the 8259A …
[    0.016997] ….. (found apic 0 pin 0) …
[    0.027142] ……. works.

Tenemos que, primero encontró el TIMER en el vector 0x30 pero solamente conectado a un pin. Entonces nos informa de dicho problema (si no se sabe como está conectado entonces no  se puede acceder a él). Pero como necesita el TIMER, próximamente intenta hallarlo a través del 8259A (el APIC viejo, que no se llama APIC, se llama simplemente PIC) y por suerte lo encuentra -> [    0.016997] …trying to set up timer (IRQ0) through the 8259A … [    0.016997] ….. (found apic 0 pin 0) … [    0.027142] ……. works.

Llegué a esta conclusión gracias a que los programadores de linux dejaron el siguiente comentario:

/*
* Some BIOS writers are clueless and report the ExtINTA
* I/O APIC input from the cascaded 8259A as the timer
* interrupt input.  So just in case, if only one pin
* was found above, try it both directly and through the
* 8259A.
*/

Eso significa que algunos de los que se dedican a escribir BIOS confunden la entrada ExtINTA del 8259A como la entrada de interrupción del temporizador. Y esa no es la entrada de interrupción del temporizador, esa es la INTA = Pin utilizado para habilitar el vector de interrupción del 8259A sobre el bus de datos a través de una secuencia de pulsos de interrupción de reconocimiento generados por el CPU.
Nada que ver con la entrada de interrupción de un temporizador. ¿Tan confundidos están esos escritores de BIOS?
El asunto es que pasarle al núcleo (kernel) el parámetro noapic o deshabilitar esa función en la BIOS, lee bien: DESHABILITA TOTALMENTE LAS FUNCIONES AVANZADAS Y MULTICORE DE TU MOTHER. O sea, deshabilita totalmente la APIC lo que hace que configurar todo para que funcione sea más complicado y lo haga en el modo antiguo y por supuesto que varias cosas dejarán de funcionar, por ejemplo el modo multicore  (solamente tendrás un núcleo andando).
O sea que, la verdad, ver ese mensaje (..MP-BIOS bug:…) es sólo un aviso de que alguien estuvo confundido al escribir la BIOS de tu tarjeta principal (motherboard) pero los desarrolladores del núcleo linux se han percatado de ello y han encontrado una solución viable (buscar el TIMER usando el 8259A).
Ya que deberías saber también que las tablas ACPI y lo que se obtiene de la APIC son indicaciones que le dicen al software cómo está configurada físicamente la máquina. Entonces que falten algunas de esas indicaciones no es tan grave si se sabe cómo está configurada normalmente (qué es lo más común) en la mayoría de los equipos.
Así que, no creo que eso represente algún problema serio, lo sería si el timer realmente no estuviera conectado de la forma habitual. Pero como todo eso es un estándar se supone que viene así. De todos modos los desarrolladores de linux no pretenden adivinar cómo está conectado, sino que se valen de otro método para buscar el dato que falta.
Asi que en resumen ver ese aviso no es signo de algo grave, sino que es indicación de que sabemos que existen algunos confundidos que no supieron escribir bien esa parte de la BIOS😛
Y no es necesario deshabilitar nada, ni de la BIOS ni con parámetros del núcleo. Si tu PC funciona aunque indica ese mensaje no tienes que hacer nada, todo está bien.
Saludos.
  1. #1 por Kimura el octubre 27, 2010 - 4:56 pm

    Muchas gracias por tu explicacion. Justamente estoy encontrandome con ese error en algunas maquinas y no tenia idea de que se trataba.

  2. #2 por Wikital el octubre 28, 2010 - 3:33 am

    Gracias, yo llevo unas semanas con ese problema, desde que actualicé el kernel a la ultima versión, tengo Ubuntu 10.10 y he actualizado el kernel a la ultima versión que salió hace un par de semanas y me aparece el error del bug8254, y según lo que aparece en internet las soluciones son deshabilitar el acpi de alguna manera, lo cual no me parecía bien y como explicas en el articulo, eso podría ser perjudicial para el funcionamiento de la pc, te agradezco que lo hayas explicado de una forma tan clara.

  3. #3 por anyeos el noviembre 4, 2010 - 2:09 am

    Bueno, pero por si no lo dejé claro, jaja, en realidad eso no es un problema, es un aviso que antes no era mostrado. El problema en todo caso es de los desarrolladores de la BIOS de tu tarjeta madre (que los vamos a ir a buscar para pegarles por haber ingerido bebidas alcoholicas antes de ir al trabajo, jaja, no, es broma). Pero ese es un defecto de fábrica, corregir eso no es tan fácil. Aparte no corregiríamos nada ya que todo está bien gracias a que los programadores del núcleo Linux se dieron cuenta y encontraron una forma de solucionarlo.

    Gracias por los comentarios.

    Hasta luego.

  4. #4 por Fernando el noviembre 13, 2010 - 6:37 am

    ¡Hola!

    Cuando el núcleo encuentra solito el pin que falta:
    “[ 0.016997] ..MP-BIOS bug: 8254 timer not connected to IO-APIC
    [ 0.016997] …trying to set up timer (IRQ0) through the 8259A …
    [ 0.016997] ….. (found apic 0 pin 0) …
    [ 0.027142] ……. works.”
    todo bien.

    Pero los desafortunados que nos quedamos en:
    “[ 0.016997] ..MP-BIOS bug: 8254 timer not connected to IO-APIC”
    ¿qué deberíamos hacer?

    No es posible avanzar más allá de éste punto, salvo con las “soluciones” que se ven en los distintos post pero sacrificando alguna función como el multiprocesamiento que mencionabas o hasta el acceso a los discos en los casos más graves.
    Me pasó con varias distros. La última que recuerdo es la nueva Fedora 14.

    ¿Alguna idea de cómo resolver éste problema?
    ¡Saludos!

  5. #5 por Fernando el noviembre 13, 2010 - 8:22 am

    ¡Hola de nuevo!

    Seguí buscando por internet y me encontré esto:
    http://en.gentoo-wiki.com/wiki/ACPI/Fix_common_problems
    (está en inglés).
    Me parece que está en lo cierto aunque la solución es BIEEEN complicada.

    ¡Más saludos!

    • #6 por anyeos el diciembre 7, 2010 - 2:16 pm

      Pero, te has fijado que estás hablando de otro tipo de problemas? No justamente el famoso “MP-BIOS bug: 8254 timer not connected to IO-APIC”. No figura ese texto en esa guía.
      Lo que ahí explican es sobre problemas más graves relacionados con las tablas ACPI de algunas BIOS (especialmente de las laptops). Y explica cómo solventarlos también.
      El famoso “MP-BIOS bug: 8254 timer not connected to IO-APIC” es sólo una indicación, pero todo funciona como debe. No sucede nada malo si ves ese mensaje. No le des importancia.

  6. #7 por Fernando el febrero 9, 2011 - 5:47 am

    ¡Ahh! ¡Es verdad! Es otro problema.

    Y tienes razón también en que deshabilitando opciones (“noapic” o “acpi=off”) las cosas empeoran. 😦

    Bueno, seguiré tu consejo de ignorar el mensaje y veré qué Linux puedo hacer funcionar. 🙂

    ¡Muchas gracias por todo!
    Fernando.

  7. #8 por Elvin Martinez el marzo 31, 2011 - 12:58 pm

    Hola gracias por los aportes, el ordenador que tengo tenia preinstalado windows xp Home Premiun, la cuestion es que desde que el bendito mensaje aparecio en mi ordenador, no arranca ni deja instalar otro sistema operativo. me gustaria saber si me pueden dar una solucion, ya que no tengo plata para comprarme otro portatil……….. la descripcion del portatil es. Toshiba Satellite A105-s2051

  8. #9 por Rafael Nuñez el febrero 11, 2015 - 4:53 am

    Hola Anyeos,

    Acabo de leer tu interesantísimo post. Lo he encontrado buscando el problema en Google.
    Me aparece ese mensaje en un viejo Fujitsu Siemens ESPRIMO Edition P2510 que, además, me ha dado otros muchos problemas con el BIOS. Entre otros, que me resulta imposible actualizarlo…

    Como digo me ha parecido muy interesante. Muchas gracias por tomarte la molestia de investigarlo.

    Mi pregunta es: Sin hacer nada, ¿funcionan los dos núcleos del micro y demás capacidades de multiproceso/multiprogramación? ¿Basta con ignorar el mensaje?

    Mil gracias.

    Saludos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: