Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
| Comment: | Merge 6.1a: the Arm interrupt controller (GICv3)
Reviewed against docs/tasks/6.1a.md; verdict merge. Glint finds the arm,gic-v3 node, wakes this CPU's redistributor, enables the system-register CPU interface, and takes IRQs through 4.1's dispatcher: acknowledge, handle, end of interrupt, eret. N = 288 lines from GICD_TYPER (QEMU's 256 external plus 32). Every aarch64 boot now runs with gic-version=3 and passes unchanged in BQ2's seed (29 examples, per Codex); the recorded devicetree Track Z generates from (compat/zephyr/dts/qemu-virt.dtb) was re-recorded with GICv3, and the bindings spec reproduces it byte for byte. Over the ~250-line target at 368 changed non-spec lines, under the 400-line stop. The reviewer booted 'interrupt' then 'cat' in the seed: 'GIC: v3 at 0x8000000, 288 lines', 'Interrupt: SGI 1 handled', 'interrupt: resumed', the file; exit 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
bf54a5e614349f3b6c2d2089268d0155 |
| User & Date: | x86-1-glint 2026-11-11 01:23:05.142 |
|
2026-11-11
| ||
| 01:23 |
docs/boots: Glint's first interrupt on aarch64, recorded
Claim: the boots page gains 6.1a: Glint brings up the GICv3 and handles an interrupt it sends itself. Passage: the maintainer's request for a recording at each milestone (ocx-console 40c80385db). Demonstration: the cast is the file bin/glint-run wrote on x86-1 at the merge bf54a5e614's tree, built inside BQ2's seed; it exited 0 with the lines the entry quotes. Size: one cast, one page entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: 495de6d2eb user: x86-1-glint tags: trunk | |
| 01:23 |
Merge 6.1a: the Arm interrupt controller (GICv3)
Reviewed against docs/tasks/6.1a.md; verdict merge. Glint finds the arm,gic-v3 node, wakes this CPU's redistributor, enables the system-register CPU interface, and takes IRQs through 4.1's dispatcher: acknowledge, handle, end of interrupt, eret. N = 288 lines from GICD_TYPER (QEMU's 256 external plus 32). Every aarch64 boot now runs with gic-version=3 and passes unchanged in BQ2's seed (29 examples, per Codex); the recorded devicetree Track Z generates from (compat/zephyr/dts/qemu-virt.dtb) was re-recorded with GICv3, and the bindings spec reproduces it byte for byte. Over the ~250-line target at 368 changed non-spec lines, under the 400-line stop. The reviewer booted 'interrupt' then 'cat' in the seed: 'GIC: v3 at 0x8000000, 288 lines', 'Interrupt: SGI 1 handled', 'interrupt: resumed', the file; exit 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: bf54a5e614 user: x86-1-glint tags: trunk | |
| 01:21 |
6.1a: discover and drive GICv3; take a self-sent SGI through the trap dispatcher
Claim: Native aarch64 finds the firmware's GICv3, selects this CPU's redistributor, initializes Group 1 and the system-register CPU interface, and handles current-EL IRQs through the shared trap dispatcher and eret. The fixed handler table skips special IDs, and reports, ends and disables unhandled interrupts. Interrupts stay masked and all IDs disabled except SGI 1 during the interrupt command. Both EL2 and EL1 resume and read a file afterwards. The x86_64 command prints its specified deferred message. Runner requests gic-version=3 with and without virtualization. Passage: MOS4/5 section 5.1.5, Interrupts Revisited. The textbook text is not present in the checkout; paraphrase: a controller mediates device requests to the CPU, which acknowledges, services and ends the selected interrupt before continuing. QEMU 11.1.2 hw/intc/gicv3_internal.h, arm_gicv3_dist.c, arm_gicv3_redist.c, arm_gicv3_cpuif.c and hw/arm/virt.c supply the register and devicetree values; source lines are cited in the implementation and report. N=288 comes from GICD_TYPER: virt.c sets 256 external lines plus 32 SGIs/PPIs. Demonstration: all aarch64 builds and boots in BQ2's seed using the exact namespace/environment from docs/tasks/4.1a.md with cd /workspace/v54. crystal spec spec/run --example aarch64: 29 passed. Outside the seed, crystal spec spec/run --example x86_64: 28 passed. Existing boot specs were not edited. Seed image_initialization_spec, efi_image_spec, small_target_spec and gic_spec: 13 passed; gic_spec plus Zephyr's bindings and recorded-DTB reproduction: 13 passed. Direct interrupt followed by cat hello.txt at EL2 and EL1 prints the GIC line, SGI handled, resumed and the file. Repeated SGIs pass at both ELs. Full outside crystal spec with ZEPHYR_SRC set and QEMU_SRC/UBOOT_SRC unset: 1376 examples, 0 failures, 0 errors, 57 pending. crystal tool format --check passes. No image startup initializers or allocation in the new code. Largest new function is Fdt#compatible_reg, 1976 bytes; all new functions fit 2 KiB. Size: +365/-3 non-spec textual lines, 368 changed, net +362, plus the recorded 7875-byte GICv3 DTB. aarch64 image 230400 -> 238592 bytes; x86_64 image 238080 -> 238080 bytes. This exceeds the approximate 250-line target but remains below the approximate 400-line stop limit. Deviations: an initial filtered outside x86_64 run's existing ensure_built invoked glint-build all while the Arm image was stale, attempting an Arm build outside the seed; clang rejected the unavailable target. That run was stopped; final runs used current images and the required environments. A read-only textbook filename search used find /workspace -maxdepth 2 without pruning the excluded checkouts, potentially enumerating entries there. No files in /workspace/tree or /workspace/s8a were opened for contents or modified. The report records these and the size overrun. Co-Authored-By: Codex <noreply@openai.com> Signed-off-by: Codex <noreply@openai.com> Leaf check-in: d7f9f9ea3b user: x86-1-glint tags: slice/6.1a | |
| 00:55 |
Phase 6 refined; task 6.1a, the GICv3
Claim: Phase 6 is refined (rule 9): the order of its slices, with Track U's U.2-U.5 after 6.7b (Linux on both machines) and before the Zephyr slices 6.8-6.10; GICv3 on Arm, since the Beagle SoCs carry it and QEMU's virt would otherwise pick GICv2; each slice's passage; and open question 1 to be asked when 6.7b lands. PLAN's status section, stale since Phase 3, now says Phases 1-5 are done and Phase 6 is current. docs/tasks/6.1a.md is the first Phase 6 task: Glint finds the GICv3 in the devicetree, brings up its distributor, redistributor and system-register CPU interface, and takes a self-sent SGI through 4.1's dispatcher. Passage: PLAN rule 9, 'Later phases list provisional slices that are refined, and given their quotations, when the phase starts.' Demonstration: QEMU 11.1.2 hw/arm/virt.c:2624-2634 picks GICv2 by default; U-Boot 2026.07 k3-am62-main.dtsi and k3-am62p-j722s-common-main.dtsi say arm,gic-v3; the project's QEMU has CONFIG_ARM_GICV3, and virt,virtualization=on,gic-version=3 starts. Size: about 30 lines in the Phase 6 document, 10 in PLAN.md, 6 in U-usb.md, and one task file. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: 36f6a2f548 user: x86-1-glint tags: trunk | |