Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
| Comment: | Merge 6.5a (ii) part 2b: the guest firmware starts an EFI application
Reviewed against docs/tasks/6.5a-ii-split.md part 2b; verdict merge. Glint places the application's file at 0x40800000 and names it in /chosen/glint,efi-app; the firmware loads it at 0x40400000 with 2a's shared PE loader, installs one loaded-image protocol whose callbacks compare the handle with the one installed before touching it, passes /chosen/bootargs as UCS-2 load options, and calls it. The application has an all-BSS .data and needs no workaround. In the release build the firmware's largest function is 1,752 bytes and guest_efi_main 152. 353 changed non-spec lines with the README: over the ~250 aim, under the 400 stop. Codex ran, after the last change, the aarch64 boot suite in BQ2's seed (39 examples) and the x86_64 one (31), 0 failures each, and the host suite (1,423, 0 failures). The reviewer booted it in the seed: 'efi app: started', 'efi app: devicetree found', 'efi app: load options "console=ttyAMA0"', 'VM: guest powered off'; 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: |
14ce9dcac007f38347ce5d063def4ae8 |
| User & Date: | x86-1-glint 2026-11-11 05:42:05.755 |
|
2026-11-11
| ||
| 05:42 |
docs/boots: the guest firmware starting an EFI application, recorded
Claim: the boots page gains 6.5a (ii) part 2: the guest's UEFI firmware loads and starts an EFI application, which finds the devicetree and its load options. 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 14ce9dcac0'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: bcf1a57610 user: x86-1-glint tags: trunk | |
| 05:42 |
Merge 6.5a (ii) part 2b: the guest firmware starts an EFI application
Reviewed against docs/tasks/6.5a-ii-split.md part 2b; verdict merge. Glint places the application's file at 0x40800000 and names it in /chosen/glint,efi-app; the firmware loads it at 0x40400000 with 2a's shared PE loader, installs one loaded-image protocol whose callbacks compare the handle with the one installed before touching it, passes /chosen/bootargs as UCS-2 load options, and calls it. The application has an all-BSS .data and needs no workaround. In the release build the firmware's largest function is 1,752 bytes and guest_efi_main 152. 353 changed non-spec lines with the README: over the ~250 aim, under the 400 stop. Codex ran, after the last change, the aarch64 boot suite in BQ2's seed (39 examples) and the x86_64 one (31), 0 failures each, and the host suite (1,423, 0 failures). The reviewer booted it in the seed: 'efi app: started', 'efi app: devicetree found', 'efi app: load options "console=ttyAMA0"', 'VM: guest powered off'; exit 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: 14ce9dcac0 user: x86-1-glint tags: trunk | |
| 05:40 |
Claim: Part 2b starts an EFI application under the Arm guest firmware. Glint transports raw PE bytes through /chosen/glint,efi-app; firmware uses Part 2a's shared PeLoader, installs one loaded-image protocol and UCS-2 bootargs, calls the app and powers off after return. HandleProtocol/OpenProtocol compare the installed handle by identity before touching it. The app keeps all-BSS .data, without a data-byte workaround. Part 3 is not started.
Passage: MOS4/5 section 7.2, paraphrase because the text is absent: a virtual machine should present the behavior software expects from hardware. UEFI 2.10's system-table and loaded-image interface is shared through boot/efi.cr; U-Boot 2026.07 include/efi_api.h and lib/efi_loader/efi_boottime.c supply the local ABI/GUID and handle/open reference. Linux libstub compatibility remains unverified until 6.7a. Demonstration: In BQ2's seed, crystal spec spec/run --example aarch64: 39 examples, 0 failures/errors/pending after the final change; firmware/app targeted boots: 6 examples, 0 failures; image/header checks filtered to aarch64: 2 examples, 0 failures; host/loader/small-target checks: 17 examples, 0 failures; source-initializer check: 1 example, 0 failures. Outside it, crystal spec spec/run --example x86_64: 31 examples, 0 failures/errors/pending; full crystal spec with ZEPHYR_SRC and LD_LIBRARY_PATH=/usr/lib64: 1423 examples, 0 failures/errors, 62 pending. crystal tool format --check passes. The app prints "efi app: started", "efi app: devicetree found", "efi app: load options \"console=ttyAMA0\"", then "VM: guest powered off" (52 KiB backed). Entry objdump shows relative BL to guest_efi_main at 0x126c. Firmware/app have no ELF relocations. The source initializer checker now understands compile-time annotations while still rejecting executable module statements. All aarch64 builds/runs used BQ2's seed; x86 builds/runs were outside it. Required full boot suites ran serially. Size: 300 additions, 53 removals outside specs/fixtures, 353 changed lines including 75 README additions/removals; net +247. Above the approximate 250-line target, below the 400-line stop. Both maintained Glint PE sizes unchanged: aarch64 275456 bytes, x86_64 258560 bytes. Firmware remains 20992 bytes; new app 8704 bytes. llvm-nm on release firmware: largest GuestEFI.application 1752 bytes, Fdt.walk 1072, install 812, load 700, guest_efi_main 152; all below 2048. App main 532. Maintained Glint's largest pre-existing Matcher.result stays 8404 bytes Arm / 11410 x86; no new/increased function exceeds 2048 in those builds. An optional full Glint --release link fails on undefined memmove from unchanged NativeTable.build; no successful linked release Glint is claimed. The requested external report records this and execution/search qualifications. Leaf check-in: bcac3a9d7f user: x86-1-glint tags: slice/6.5a-ii-2b | |
| 05:24 |
Merge 6.5a (ii) part 2a: the PE header fix and a shared PE loader
Reviewed against docs/tasks/6.5a-ii-split.md part 2a; verdict merge. A section with no raw data now gets PointerToRawData 0 (efi.lds computes it; crt0.S writes it), as the PE format specifies. Linking the same objects with the old and new header gives byte-identical results for all nine maintained images, so only all-BSS guests change; 3.6's parser is unchanged and its spec now covers both header shapes. boot/pe_loader.cr holds the section copy and DIR64 relocation that GuestSpace#load did, over caller-supplied memory, for the guest firmware to share in 2b. 196 changed non-spec lines, 87 of them removals; net +22. Codex ran, after the last change, the aarch64 boot suite in BQ2's seed (38 examples) and the x86_64 one outside it (31), 0 failures each, the full host suite (1,419 examples, 0 failures), and the format check. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TUH8KMXZyLk8eDgCjvQ9hX check-in: 935da91f88 user: x86-1-glint tags: trunk | |