kernel: el gate contra un .config producido — ve los huecos que la receta base ya traía
El gate que había mira lo que apaga el PLAN, así que sólo ve regresiones que introduce el plan: un hueco que ya venía en la receta base le pasa por debajo. El modo nuevo compara DOS configs y define regresión como «funcionaba y dejó de funcionar», que es la formulación literal del #6 del handoff: hammer kernel gate --config <producido> [--baseline /proc/config.gz] --objective X El referente por defecto es /proc/config.gz: el kernel que arrancó esta máquina es la prueba viva de qué hace falta para arrancarla. Y comparar DOS configs, en vez de mirar sólo el nuevo, mata de raíz un falso positivo que tenía: los nombres de módulo cortos colisionan. El driver que /sys llama `usb` mapea a QE_USB (el USB de las QUICC Engine de Freescale) y `port` a PORT_CHAN. Mirando sólo el config nuevo aparecen como perdidos y el gate bloquearía un plan sano; exigiendo que estuvieran encendidos en el referente, el falso positivo se cae solo. Con test. Probado contra gioser (Hetzner vServer, 38 drivers bindeados) partiendo de linux-metal: destapó cuatro pérdidas que NINGÚN bundle causaba — aer, iTCO_wdt, lpc_ich y pcspkr están encendidos en el kernel que corre y linux-metal no los enciende nunca. El gate viejo no podía verlas por construcción. De paso, un mensaje que mandaba a buscar donde no está: sin culpable atribuido decía «lo apaga una perilla», cuando la causa es que la receta base no lo enciende. Catálogo, tres entradas nuevas nacidas de medir esta máquina: · bundle sin-gpu-intel — DRM_I915 es de los drivers más grandes del kernel y no sirve en una VM con virtio-gpu. NO apaga DRM: el vídeo sigue por simpledrm/EFI o virtio-gpu. · knob invitado-virtio — VIRTIO_BALLOON y HW_RANDOM_VIRTIO no vienen en el defconfig y ninguna receta del repo los enciende; en gioser los dos están BINDEADOS. Un kernel sin ellos arranca, pero la VM pierde el globo de memoria y la entropía del anfitrión. · knob plataforma-pc — PCIEAER, LPC_ICH, INPUT_PCSPKR y el watchdog ITCO_WDT. El watchdog necesita además WATCHDOG, que linux-metal apaga a propósito: por eso va en una perilla y no en la base. En una máquina sin acceso físico, el watchdog es lo que la reinicia cuando se cuelga. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -179,6 +179,17 @@ disable = ["MMC", "MEMSTICK"]
|
||||
[bundle.contradicted_by]
|
||||
driver = ["sdhci_pci", "rtsx_pci_sdmmc"]
|
||||
|
||||
[[bundle]]
|
||||
id = "sin-gpu-intel"
|
||||
title = "No tengo gráficos Intel"
|
||||
help = """
|
||||
`DRM_I915` es de los drivers más grandes del kernel y sólo sirve en hardware Intel. Una VM con
|
||||
virtio-gpu, una máquina AMD o un servidor sin pantalla no lo usan nunca. NO apaga DRM: la salida de
|
||||
vídeo sigue por simpledrm/EFI o por virtio-gpu."""
|
||||
disable = ["DRM_I915"]
|
||||
[bundle.contradicted_by]
|
||||
driver = ["i915"]
|
||||
|
||||
[[bundle]]
|
||||
id = "sin-virtualizacion"
|
||||
title = "No voy a virtualizar en esta máquina"
|
||||
@@ -246,6 +257,29 @@ side = "recipe"
|
||||
recipe_field = "build.compiler + build.phases.compile (make LLVM=1)"
|
||||
notes = "Ver la cabecera de recipes/linux.toml: el kernel se queda en el gueto gcc hasta que se exponga el clang que zig empaqueta."
|
||||
|
||||
[[knob]]
|
||||
id = "invitado-virtio"
|
||||
title = "Invitado de VM: los virtio que el defconfig deja fuera"
|
||||
help = """
|
||||
`VIRTIO_BALLOON` (que el anfitrión pueda recuperar RAM) y `HW_RANDOM_VIRTIO` (entropía del
|
||||
anfitrión) no vienen en el defconfig y ninguna receta de kernel del repo los enciende. En gioser los
|
||||
dos están BINDEADOS ahora mismo: un kernel sin ellos arranca, pero la VM pierde el globo de memoria
|
||||
y la fuente de entropía. Es justo la clase de pérdida silenciosa que el gate existe para ver."""
|
||||
side = "kconfig"
|
||||
enable = ["VIRTIO_BALLOON", "HW_RANDOM_VIRTIO", "VIRTIO_CONSOLE", "SCSI_VIRTIO"]
|
||||
|
||||
[[knob]]
|
||||
id = "plataforma-pc"
|
||||
title = "Chipset de PC: errores PCIe, puente LPC, watchdog y bocina"
|
||||
help = """
|
||||
Cosas que cualquier distro trae encendidas y que el defconfig y `linux-metal` dejan fuera:
|
||||
`PCIEAER` (reporte avanzado de errores PCIe), `LPC_ICH` (puente LPC de Intel), `INPUT_PCSPKR` y el
|
||||
watchdog `ITCO_WDT`. En gioser los cuatro están BINDEADOS ahora mismo. El watchdog necesita además
|
||||
`WATCHDOG`, que `linux-metal` apaga a propósito — por eso va acá y no en la receta base: en una
|
||||
máquina sin acceso físico, un watchdog es lo que la reinicia cuando se cuelga."""
|
||||
side = "kconfig"
|
||||
enable = ["PCIEAER", "LPC_ICH", "INPUT_PCSPKR", "WATCHDOG", "ITCO_WDT"]
|
||||
|
||||
[[knob]]
|
||||
id = "march-nativo"
|
||||
title = "Compilar para esta CPU exacta"
|
||||
|
||||
Reference in New Issue
Block a user