¿El núcleo de Linux independiente de SMP?
Noviembre 30th, 2005 - [Enlace local]
Hoy Ubunto Dapper Drake nos tenía reservado una sorpresa. Una nueva versión del núcleo, la 2.6.15-5. Hace tiempo que no sigo el desarrollo del núcleo de Linux, pero para mí que esa versión del núcleo está todavía en desarrollo. El caso es que ha funcionado después de hacer algunos cambios en los ficheros (por ejemplo, entre otras cosas, no encontraba el firmware de la inalámbrica ipw2100). Una vez que ha arrancado, sin embargo, he encontrado una cosa curiosa. Al principio del dmesg encuentro:
CPU0: Intel(R) Pentium(R) M processor 1500MHz stepping 05 SMP motherboard not detected. Local APIC not detected. Using dummy APIC emulation. Brought up 1 CPUs smp2up: Dynamically optimizing SMP kernel code for UP operation... smp2up: Made 3887 modifications to 'kernel'.
Esto es, al principio intenta detectar si la placa o el procesador es SMP. Si no es así, lo que parece que hace es optimizar el núcleo para que funcione mejor en una única CPU. Al menos eso es lo que creo que hace (por otro lado no parece ni tan complicado ni tan descabellado). Al intentar buscar «smp2up» en google, la página sale vacía. Extrañísimo, lo cual da la idea de lo nuevo de esta cuestión. Voy a bucear un poco en el código a ver si lo encuentro y puedo determinar qué hace. Publicaré una actualización cuando lo vea.
Actualización: Increíble. He revisado todo el código del núcleo de Linux (incluyendo los parches -git y -mm) y no he encontrado absolutamente ninguna referencia a ese “smp2up”. Estoy realmente intrigado. ¿Alguien puede dar algo de luz?