vms-934: build VMS modules IN-TREE under drivers/ovmx/ (clears TAINT_OUT_OF_TREE) - #533
Merged
Merged
Conversation
…AINT_OUT_OF_TREE
Parent vms-19e ("owns-kernel"), unblocked by vms-448 (from-source pinned
kernel). vms.ko/vmsfs.ko were built OUT-OF-TREE (standalone src/kernel
Makefiles) and loaded with TAINT_OUT_OF_TREE set. Now they build IN-TREE
under drivers/ovmx/ of our from-source kernel, so modpost stamps modinfo
intree=Y and loading them does NOT set the out-of-tree taint bit.
"In-tree" = OUR tree; no mainline/Linus acceptance implied. The canonical
module source stays in src/kernel/ + src/kernel-core/ and still drives the
standalone (out-of-tree) build used by the QEMU test harness — this is a
build-time overlay, not a fork.
What lands:
- distro/kernel/drivers-ovmx/: in-tree Kconfig (menuconfig OVMX + tristate
CONFIG_OVMX_VMS / CONFIG_OVMX_VMSFS), Makefile, and per-module Kbuild.
- distro/kernel/overlay-ovmx-drivers.sh: copies src/kernel + src/kernel-core
into drivers/ovmx/{vms,vmsfs}/ (core flattened in; all includes are
basename-only) and wires drivers/ovmx into the kernel's drivers/Kconfig +
drivers/Makefile. Idempotent.
- distro/kernel/ovmx-x86_64.config: CONFIG_OVMX=y, CONFIG_OVMX_VMS=m,
CONFIG_OVMX_VMSFS=m.
- Dockerfile.bootable: kernel-build stage overlays the modules before
defconfig, gates the =m config, builds them with `make modules`, and
harvests them asserting intree=Y (fail-closed). Builder stage consumes the
in-tree .ko (replacing the out-of-tree `make -C src/kernel`) and re-asserts
vermagic + intree=Y on the exact artifacts the initramfs carries. runner
gains kmod for modinfo (test tooling).
- tests/qemu/test_intree_modules.sh + CI wiring: STATIC proof (modinfo
intree=Y on the shipped vms.ko/vmsfs.ko extracted from the boot initramfs)
plus a raised-loglevel boot proving the modules load with no "out-of-tree
module taints kernel" line.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
vms-934 — in-tree home for the VMS modules (owns-kernel, parent vms-19e)
Unblocked by vms-448 (from-source pinned kernel). Restarts the owns-kernel pole.
Before:
vms.ko/vmsfs.kowere built OUT-OF-TREE (standalonesrc/kernel/Makefiles) and loaded withTAINT_OUT_OF_TREE(bit 12,0x1000) set — the boot loggedloading out-of-tree module taints kernel.After: they build IN-TREE under
drivers/ovmx/of our from-source kernel, so modpost stampsmodinfo intree=Yand loading them does not set the out-of-tree taint bit. "In-tree" = OUR tree; no mainline/Linus acceptance implied. The canonical source stays insrc/kernel/+src/kernel-core/and still drives the standalone out-of-tree build for the QEMU test harness — this is a build-time overlay, not a fork.drivers/ovmx/ layout (overlaid into the kernel tree at build time)
The overlay wires
source "drivers/ovmx/Kconfig"into the kernel'sdrivers/Kconfigandobj-$(CONFIG_OVMX) += ovmx/intodrivers/Makefile. Core.care flattened into each module dir (all local#includeare basename-only, so a flat dir +-I$(src)resolves every header). Object sets mirror the standalone Makefiles'vms-y/vmsfs-y.intree / no-taint proof
make modulesand assertsmodinfo -F intree==Y; the builder stage re-assertsintree=Y+ vermagic on the exact.kothe initramfs carries.tests/qemu/test_intree_modules.sh(new CI step in the Persistent Boot Smoke job):vms.ko/vmsfs.kofrom the boot initramfs and assertsmodinfo -F intree==Y(acceptance authenticity: INV-1 system-identity SSOT + logical-driven login banners (vms-e652) #1, on the bytes that boot).intree=Yis exactly the kernel condition under whichadd_taint_module()skipsTAINT_OUT_OF_TREE(acceptance docs: executive retrofit dispatch plan (vms-6b8) #2).loglevel=7(the normal boot'sloglevel=3 quietwould hide the warning), proves the modules load (%OVMX-I-EXEC= vms.ko attached,%OVMX-I-MOUNTED= vmsfs.ko mounted the ODS-2 disk), and asserts noout-of-tree module/taints kernelline.Files
distro/kernel/drivers-ovmx/{Kconfig,Makefile,vms/Kbuild,vmsfs/Kbuild}(new)distro/kernel/overlay-ovmx-drivers.sh(new, idempotent)distro/kernel/ovmx-x86_64.config—CONFIG_OVMX=y,CONFIG_OVMX_VMS=m,CONFIG_OVMX_VMSFS=mdistro/Dockerfile.bootable— overlay + config gate + in-tree build/harvest; builder consumes in-tree.ko; runner gainskmodtests/qemu/test_intree_modules.sh(new) +.github/workflows/ci.yml(step + path filter)Boot-image change → exercises Build & Test + Persistent Boot Smoke + the executive gates. Conductor reaps.
🤖 Generated with Claude Code