Lenovo Legion Y700 Gen 4 (elden)
Lenovo Legion Y700 Gen 4 format 2 migration. Phase 1 UEFI is device-verified; XNU, storage, display and touch remain bring-up work.
Source record: porting.toml, 57e68be133c407ef9fa7dc6b4f10f1bd4cd3aedd.
This page is generated from the device record.
| Area | Status |
|---|---|
| Configuration | host-verified |
| Firmware and boot | device-verified |
| CPU and interrupts | implemented |
| Memory and DMA | implemented |
| Storage and root | planned |
| Display | planned |
| Input | planned |
| GPU | planned |
| Network | not-applicable |
| Audio | not-applicable |
| Power | planned |
| Image assembly | host-verified |
| Diagnostics | device-verified |
Configuration
host-verified
Components: ArmDTPlatform, ArmCpu, SoftwareAES, XnuPrelink, DarwinBoot.
Hardware and dependencies
- Use the ARM64 and iPadOS 17.7.11 profiles supplied by UniXNU.
- Select the shared platform, CPU and DarwinBoot components.
- Provide an SM8750 profile until an official shared SoC repository exists.
Configuration
- board.toml declares schema_version = 2, soc_source = sm8750 and os_profile = ipados-17.7.11-21H461.
- The complete component list is explicit because profile arrays replace inherited arrays.
- Configuration and patch roots are ordered as ARM64, SoC, OS and device.
- soc/sm8750 supplies the transition profile and is referenced from feeds.toml.
Procedure
- Run defconfig from a current UniXNU checkout.
- Inspect status JSON for profile order, component dependencies, patch order and output path.
- Replace the local SoC source with a reviewed UniXNU-sm8750-common commit before release.
Development findings
- The repository was format 1 and did not select shared SoC or OS profiles.
- A public UniXNU-sm8750-common repository was not available during migration.
- Keeping a separate local SoC profile preserves parser validation without mislabelling unqualified hardware support as shared.
- Phase 2.0 resolved ARM64, local SM8750, iPadOS and device layers; the selected component order, 56 patches, 4 KiB page setting and separate format 2 output were checked with current UniXNU.
- Phase 2.1 keeps the XNU handoff and firmware memory description separate from the phase 1 dummy firmware DTB.
- Phase 2.2 resolved 57 patches after adding compile-time-disabled PMGR context required by the shared boot-progress patch. CONFIG_XNU_BOOT_PROGRESS is disabled for the minimum kernel because that diagnostic layer currently requires UFS, owner-root and Virtio.
Completion criteria
- board.toml resolves four ordered configuration layers.
- All selected components come from the UniXNU catalog and include their dependencies.
- No array field depends accidentally on inheritance.
- The SoC source is a reviewed remote commit and unixnu.lock records it.
Current limits
- soc/sm8750 is local and is not yet a release-quality shared source.
- The first resolution pass selects only platform, CPU, AES, prelink and DarwinBoot components.
Next action
- Phase 2.3: validate the near-final-size Android v3 ramdisk, FDT/initrd and HOB path in an isolated candidate. Replace the local SM8750 source with a reviewed shared commit before release.
Evidence
source: Schema 2 profile, component, kernel, device-tree and payload declarations.source: SM8750 transition source with the release replacement documented.source: Shared-profile-shaped SM8750 transition metadata.source: Migration result, preserved phase 1 inputs and remaining release work.host: 2026-10-25: fresh defconfig, tree and status runs resolved four profiles, five pinned components, 56 patches and 4 KiB pages under a format 2 output directory separate from phase 1. The local SM8750 source remains unpinned for release. Command:.venv/bin/python .cache/phase2-plan/UniXNU/unixnu status --json -D .. Revision:16e592abee8a550dec8154ed1f38b5ebc4f16213.host: 2026-10-25: defconfig and status resolved five canonical components and 57 applied patches. The Command Line Tools host-shim build produced and prelinked the target kernel; release rebuilding still requires a full Xcode iPhoneOS SDK. Command:PATH=.cache/phase2-plan/toolchain/bin:.venv/bin:$PATH .venv/bin/python .cache/phase2-plan/UniXNU/unixnu build kernel -D .. Revision:c91a2191fdf591a401a03027ed8b7fbfdbcad3a7.
Firmware and boot
device-verified
Components: DarwinBoot.
Hardware and dependencies
- mu_wide_platforms lenovo-y700g4 UEFI source and patched PMIC binaries.
- UniXNU, UniXNUDxe, DarwinBoot and EldenRamDiskDxe firmware modules.
- A 4 MiB FAT16 payload containing package/unixnu.toml.
Configuration
- firmware.dsc points to PakalaPkg/PakalaNoSb.dsc.
- firmware.fd points to the DEBUG CLANGPDB SM8750_EFI.fd.
- payload volume is ELDENRAM and loader is firmware.
- panic_screen remains false because the phase 2 panic renderer is not integrated.
Procedure
- Build the phase 1 image with scripts/build_phase1.py.
- Run scripts/verify_artifact.py against the FD and Android v3 image.
- Owner performs two RAM cold boots with fastboot boot.
Development findings
- The vendor UFSDxe crashed before the menu, so it was removed from the phase 1 APRIORI, DSC and FDF.
- The embedded FAT payload avoids persistent storage and makes the menu independent of UFS.
- The same image reached the visible menu twice and returned to stock Android after reset.
Completion criteria
- Firmware contains UniXNU, UniXNUDxe, DarwinBoot and the RAM payload driver.
- The payload config is readable and the menu accepts volume-key input.
- Two RAM boots produce the same visible checkpoint and do not modify persistent partitions.
Current limits
- The verified firmware is phase 1 and does not contain a bootable XNU payload.
- The new format 2 firmware command is not yet switched from the project build script.
Next action
- Use the current phase 1 image as the accepted baseline. Phase 2.3: validate Android ramdisk/FDT/HOB handoff and the RAM disk driver only in a separately isolated candidate; measure inner/outer FV capacity before integrating kernel inputs.
Evidence
source: Accepted phase 1 artifact and firmware/module inventory.source: Static FD, Android image and embedded FAT verification.device: 2026-10-25: owner reported that the current image completed two RAM cold boots, reached the visible and operable UniXNU menu, and returned to stock Android. Command:fastboot boot out/elden-phase1.img. Revision:dffc3020a85830d0d981a85871d9ab31aac5827d.device: Two owner-run RAM cold boots reached the UniXNU menu and returned to Android. Command:fastboot boot out/elden-phase1.img. Revision:c591b1a0a471f24978aba25c56c8f6ec9bd06668.
CPU and interrupts
implemented
Components: ArmCpu.
Hardware and dependencies
- SM8750 MPIDRs 0x0, 0x100, 0x200, 0x300, 0x400, 0x500, 0x10000 and 0x10100.
- GICv3 distributor 0x16000000, redistributor base 0x16080000 and stride 0x40000.
- 19.2 MHz architectural timer and PSCI SMC conduit.
Configuration
- The SoC DTSI declares eight CPU nodes, timebase-frequency = 19200000 and psci method = smc.
- The GIC node exports unixnu,adt-name = intc.
- The device defconfig enables ARM DT platform, ArmCpu, native timer and PAN.
Procedure
- Compile dts/elden.dts with the SoC include path.
- Generate an ADT from the DTB and inspect /cpus, /psci and /arm-io/intc.
- Boot the smallest XNU payload and record the first CPU, GIC or timer failure.
Development findings
- The board evidence documents the same eight MPIDR layout used by other SM8750 ports.
- The shared ADT generator emitted cpu0 as running and all other cores as waiting; ArmCpu does not probe secondary nubs unless sheng-smp is enabled.
- ArmCpu reads the GIC through /arm-io/intc and requires a complete two-range reg property.
- The old kernel argument set enabled armcpu-spi-ipi before elden had evidence that SGIs fail or that per-core SPI routing works. Phase 2.1 removed it from the single-boot-CPU milestone.
- Secondary CPU startup and both SGI and SPI IPI delivery are not device-verified for elden.
Completion criteria
- The boot CPU reaches the ArmCpu checkpoint.
- GIC distributor and its own redistributor frame map successfully.
- Timer handling works before secondary cores or IPI transport are qualified.
Current limits
- No elden XNU CPU, GIC or timer log exists yet.
- The eight-core topology is described, but SMP bring-up is not claimed.
Next action
- Phase 2.5: prove ArmDTPlatform and the boot CPU ArmCpu/GIC/timer checkpoints using the audited CPU order and argument set. Defer SPI IPI, SGI delivery, secondary startup and SMP qualification to separate device checks.
Evidence
source: SM8750 CPU, PSCI, GICv3 and timer resources.source: Board CPU/GIC/timebase inventory and planned diagnostic sequence.host: 2026-10-25: independently decoded ADT contains the eight expected MPIDRs, cpu0 running and seven CPUs waiting, 19.2 MHz timebase, SMC PSCI, and GIC distributor/redistributor bases with 0x40000 stride. No device CPU checkpoint is claimed. Command:.venv/bin/python scripts/phase2_1_audit.py --linux-dir .cache/elden-linux. Revision:16e592abee8a550dec8154ed1f38b5ebc4f16213.host: 2026-10-25: the prelinked kernel exports ArmCpu probe/start, GIC distributor and timer-related symbols and ArmDTPlatform configure/createDeviceNubs symbols. Symbol presence is source evidence, not a device checkpoint. Command:xcrun nm -g .cache/phase2-plan/UniXNU/out/elden/ipados-17.7.11-21H461/elden/kernel/kernel.macho. Revision:c91a2191fdf591a401a03027ed8b7fbfdbcad3a7.
Memory and DMA
implemented
Components: ArmDTPlatform.
Hardware and dependencies
- The owner-captured live elden FDT, including the 12 GiB RAM map, initrd and reserved-memory nodes.
- The pinned Linux 16 GiB variant and the elden UEFI static memory map.
- A conservative 256 MiB XNU handoff window in UEFI DXE conventional memory.
Configuration
- dts/elden.dts declares one 256 MiB XNU handoff node at 0xC2400000.
- payload.dram_size and payload.adt.owned_memory_size both request 0x10000000.
- dts/elden-firmware-memory.dts records the sanitised live 12 GiB RAM map, reserved-memory ranges and expected GOP framebuffer.
- The format 2 generator creates a 64-byte seed, CHRP NVRAM proxy and optional-input memory-map placeholders.
Procedure
- Compile the hardware and firmware memory descriptions.
- Generate an ADT with the shared generator and decode it independently.
- Cross-check the XNU window against firmware RAM, reserved-memory and the pinned UEFI memory map.
Development findings
- The previous [0x80000000, 0x100000000) candidate overlapped 44 recorded no-map reservations and was removed.
- The live FDT is 885,861 bytes with SHA-256 8a653a3e790f29bf2b0f3545135f06fe771360f31da3d37c04f648c26b95e26e and describes the current 12 GiB RAM map.
- The former A8000000+10000000 UEFI Kernel carveout overlaps the live initrd B74AC000-B7FFEE30 and is unsuitable for RAM-boot phase 2.
- C2400000+10000000 is covered by live RAM, avoids all live reservations and the initrd, and lies in UEFI DXE conventional memory.
- The flashed vendor FDT uses generic qcom,sun-qrd compatible strings but retains the elden 3K panel marker, 1904x3040 display and UFS path.
- The ADT has no optional RAMDisk, TrustCache or GPU addon placeholders because phase 2.1 has no matching inputs.
- The unique chip ID remains a local input and is not stored in the repository.
Completion criteria
- The ADT contains exactly one continuous memory range.
- The range is covered by live firmware RAM and avoids recorded reservations, initrd, GOP and UEFI FD.
- DarwinBoot and the UEFI exit map confirm that same range is conventional memory before XNU entry.
Current limits
- The raw live FDT remains local-only because it can contain device identifiers.
- Actual DarwinBoot ADT, boot_args and allocated-window addresses remain runtime evidence.
- The live vendor tree and pinned 16 GiB source differ in RAM size and generic compatible strings; both are tracked separately.
- SMMU and cache policy are not complete.
Next action
- Phase 2.3: preserve .cache/device/elden-live.fdt locally and rerun the live audit if firmware or boot mode changes; never commit the raw tree. Keep the phase 2 hardware ADT separate from the firmware FDT.
Evidence
source: One 256 MiB XNU range in UEFI DXE conventional memory and board compatible values.source: Sanitised live 12 GiB RAM, reserved-memory and expected GOP framebuffer description.source: Documented DRAM base, fragmentation risk and memory handoff constraints.device: 2026-10-25: owner-connected device produced an 885,861-byte live FDT with SHA-256 8a653a3e790f29bf2b0f3545135f06fe771360f31da3d37c04f648c26b95e26e. The flashed vendor tree reports generic qcom,sun-qrd compatible values but contains elden panel markers, 1904x3040 display, 1d84000 UFS and a 12 GiB RAM map. Raw bytes remain local-only. Command:/Users/jerry/Library/Android/sdk/platform-tools/adb shell su -c 'cp /sys/firmware/fdt /data/local/tmp/elden-live.fdt'. Revision:c91a2191fdf591a401a03027ed8b7fbfdbcad3a7.host: 2026-10-25: the live FDT audit passed with C2400000+10000000. It is in live RAM and UEFI DXE conventional memory, avoids all live reserved-memory and the B74AC000-B7FFEE30 initrd, and reproduces the eight-CPU ADT. No XNU entry is claimed. Command:.venv/bin/python scripts/phase2_1_audit.py --firmware-dtb .cache/device/elden-live.fdt --output-dir .cache/phase2.1-live. Revision:16e592abee8a550dec8154ed1f38b5ebc4f16213.
Storage and root
planned
Hardware and dependencies
- SM8750 UFS host at 0x1d84000 and PHY at 0x1d80000.
- 4 KiB logical-sector partition geometry and a root-volume UUID.
- Clock, regulator, power-domain and SMMU stream ownership.
Configuration
- The phase 1 defconfig disables Native UFS.
- The format 2 component list does not select a storage transport.
Procedure
- Inventory GPT and logical block size without modifying the device.
- Bring up UFS in read-only mode and validate known blocks.
- Add an SM8750 storage component and root-window input before mounting.
Development findings
- UFSDxe crashed in phase 1 and was removed from the menu path.
- There is no elden XNU UFS probe result yet.
- The phase 1 FAT payload intentionally bypasses persistent storage.
Completion criteria
- Controller and PHY initialize.
- Read-only capacity, GPT and known-block checks match the device.
- The configured OS volume mounts and launchd starts.
Current limits
- Storage is not selected or implemented.
- No owner-authored userdata image or root UUID exists.
Next action
- Capture a read-only GPT and memory-resource audit, then implement an SM8750 UFS component.
Evidence
Display
planned
Hardware and dependencies
- 1904x3040 bonded dual-DSI panel with DSC.
- UEFI GOP framebuffer and splash reservation.
- SM8750 DPU/DSI/PHY and backlight sequencing.
Configuration
- The phase 1 menu renders through UEFI GOP.
- XNU display and IOMobileFramebuffer components remain disabled.
Procedure
- Keep display handoff on GOP for the first kernel milestone.
- Record a visible checkpoint after DarwinBoot.
- Add DPU/DSI only after kernel entry is stable.
Development findings
- GOP display is device-verified in the UniXNU menu.
- No XNU display provider has been validated.
- The panel path remains a known high-risk cold-boot area.
Completion criteria
- XNU paints a known pattern through a declared framebuffer handoff.
- Userland presentation and backlight transitions work.
Current limits
- No DPU, DSI, DSC or panel node is present in the hardware DTS.
- GOP success is not counted as XNU display support.
Next action
- Carry GOP framebuffer properties into DarwinBoot and record the first kernel-visible screen checkpoint.
Evidence
source: GOP menu display was observed on hardware.source: Display topology, panel risk and GOP-first strategy.
Input
planned
Hardware and dependencies
- Novatek SPI touch on SPI4 and GPIO 162 interrupt.
- Volume and power keys used by the UEFI menu.
Configuration
- The phase 1 menu accepts volume-key input through UEFI.
- No XNU HID or Novatek transport is selected.
Procedure
- Preserve UEFI key navigation as the bring-up input path.
- Inventory the touch firmware and protocol from read-only sources.
- Add QCOM GENI SPI, touch protocol and HID input after XNU boots.
Development findings
- Volume-key menu input is device-verified.
- Touch has not been initialized by XNU.
- The panel and touch controller share board state that must be validated together.
Completion criteria
- Touch coordinates map to the display.
- Contact IDs, releases and multi-touch remain stable.
- Buttons produce expected HID events in XNU.
Current limits
- No touch component is selected.
- The NT36536 firmware and ABI inputs are not yet integrated.
Next action
- Read the touch controller model and firmware version without modifying flash, then define the board transport.
Evidence
source: Volume-key navigation reached the accepted menu.source: Novatek SPI wiring and input bring-up requirements.
GPU
planned
Hardware and dependencies
- Adreno 830 / gen80000.
- GPU firmware, power votes, SMMU and display integration.
Configuration
- GPU and Metal components are not selected.
- The first XNU milestone targets CPU/console progress only.
Procedure
- Reach the XNU platform expert without GPU dependencies.
- Collect the GPU identity and firmware hashes.
- Select and implement a GPU component only after a display provider exists.
Development findings
- The board has no validated XNU GPU path.
- Selecting SM8550 Adreno740 would misrepresent the Adreno 830 implementation scope.
Completion criteria
- GPU submissions, fences and mapping work.
- A known image renders and Metal presentation is visible.
Current limits
- GPU and Metal are explicitly out of the first milestone.
Next action
- Keep GPU unselected until an SM8750-compatible component and firmware inputs exist.
Evidence
Network
not-applicable
Hardware and dependencies
- Wi-Fi is outside the current bring-up milestone.
Configuration
- No Wi-Fi or MHI component is selected.
Procedure
- Revisit after the USB or PCIe transport and firmware ownership are established.
Development findings
- There is no verified Wi-Fi source or firmware path for elden.
Completion criteria
- Not required for this milestone.
Current limits
- Wi-Fi, Bluetooth and cellular are not implemented or claimed.
Next action
- Open a separate network bring-up task when the base kernel and root volume are stable.
Evidence
Collect evidence using the next action.
Audio
not-applicable
Hardware and dependencies
- Audio is outside the current bring-up milestone.
Configuration
- No ADSP, GLink, codec or audio component is selected.
Procedure
- Revisit after platform, storage and display are stable.
Development findings
- There is no elden audio log or firmware inventory.
Completion criteria
- Not required for this milestone.
Current limits
- Speakers, microphone and DSP routing are not implemented or claimed.
Next action
- Open a separate audio bring-up task with DSP and codec inputs.
Evidence
Collect evidence using the next action.
Power
planned
Hardware and dependencies
- PM8550-class PMIC, RPMh resources and device power domains.
- Volume and power key behavior.
Configuration
- The first DTS selects only CPU and GIC resources.
- No platform power component is selected.
Procedure
- Keep suspend and CPU power management disabled during first XNU entry.
- Record regulator and clock ownership.
- Add platform power only after the boot CPU reaches a stable checkpoint.
Development findings
- UEFI power and key handling are verified only at the firmware layer.
- The selected OS profile does not supply sleep-disabled, so board.toml now adds it under [adt.defaults.u32].
- The final Phase 2.1 ADT was decoded with sleep-disabled=1.
- The XNU power topology is not complete.
Completion criteria
- Declared power controls match readings.
- Sleep/resume or shutdown transitions restore dependent peripherals.
Current limits
- Battery, charging, thermal and sleep are not implemented.
Next action
- Phase 2.5: use armcpu-diagnostics=1 to observe boot-CPU quiesce/halt behavior. Audit RPMh ownership and keep suspend/secondary CPU power management out of initial qualification.
Evidence
source: Board hardware and payload policy values.host: 2026-10-25: independent ADT decode found /defaults sleep-disabled=1. This is source/host evidence, not a device suspend test. Command:.venv/bin/python scripts/phase2_1_audit.py --linux-dir .cache/elden-linux. Revision:16e592abee8a550dec8154ed1f38b5ebc4f16213.
Image assembly
host-verified
Hardware and dependencies
- iPad7,1 iPadOS 17.7.11 build 21H461 restore inputs.
- Target kernelcache, XNU 10063.141.1, DriverKit and TrustCache ABI inputs.
- Android v3 RAM-boot image, a 4 MiB phase 1 embedded FAT payload and a measured 56 MiB phase 2 candidate.
Configuration
- The phase 1 image is produced by the project build script and verified against recorded hashes.
- Format 2 output is out/elden/ipados-17.7.11-21H461/elden/.
- The 2.2 prelink output is kernel/kernel.macho and its ADT sidecar; no phase 2 boot image is generated.
Procedure
- Run scripts/build_phase1.py for the accepted firmware path.
- Fetch the target IPSW components and build the patched 4 KiB XNU.
- Prelink against the pinned kernelcache and audit Mach-O, ABI, symbols and ADT.
- Package an isolated near-final-size payload only in Phase 2.3.
Development findings
- The documented Phase 1 build was device-verified and the current procedure rebuilds and passes structural checks.
- The same current recipe produced 94b6a6315b04fc9d276bc15e9519107be292244380fc3bf139f5af6c96a3bb0a instead of the historical accepted image hash; byte-for-byte rebuild identity is not claimed, but the new image completed two owner RAM cold boots.
- The verified UniXNU third-party pin is intentionally retained for the accepted build.
- Phase 2.2 produced a 21,206,040-byte native kernel and a 54,050,816-byte prelinked kernel. The 57-patch sequence selects 30 executable Apple components, 7 kernel interfaces and 30 module entrypoints.
- A 56 MiB FAT16 host volume held the 54,063,968-byte kernel/config/ADT set with 3,734,016 bytes free and a byte-identical kernel readback.
- The prelink report remains runtime_qualified=false, abi_qualified=false and loadable=false until device execution evidence exists.
Completion criteria
- All format 2 build steps run from the resolved output directory.
- The payload contains the kernel, ADT and declared optional inputs.
- The boot image matches the ABL header and size limits.
Current limits
- The format 2 payload and bootimg pipeline is not yet connected to a phase 2 firmware candidate.
- The current 4 MiB board payload belongs to phase 1; the phase 2 candidate is 56 MiB and its ABL/initrd/FDT/HOB channel is unverified.
- The 2.2 host build used Command Line Tools with an iPhone platform shim because full Xcode is absent; release rebuilding still requires the official Xcode/iPhoneOS SDK.
Next action
- Phase 2.3: build a near-final-size FAT16 payload in an isolated output and verify Android v3 ramdisk, FDT/initrd and HOB delivery before executing the kernel. Keep all phase 2 outputs separate from the accepted phase 1 baseline.
Evidence
source: Reproducible phase 1 build commands, hashes and verification checklist.source: Preserved build inputs and remaining format 2 handoff work.source: Phase 2 gates mapped to the official porting steps, capacity and memory constraints, and separate loader/kernel acceptance criteria; planning only, with no new device qualification.source: Source-derived FDT, firmware RAM and reservation audit, decoded ADT checks, boot CPU parameter policy and remaining runtime evidence.source: Pinned kernelcache, 57-patch XNU build, prelink inventory, symbol/4 KiB audits and measured 56 MiB payload fit.host: Phase 2.0 established a rebuilt phase 1 baseline, preserved prior candidates, verified format 2 output isolation, and did not generate a phase 2 boot image. Command:test -e .cache/phase2-plan/UniXNU/out/elden/ipados-17.7.11-21H461/elden/tree. Revision:dffc3020a85830d0d981a85871d9ab31aac5827d.host: 2026-10-25: kernelcache f18b4df865405f2a287b84977d7aca745e056d656d9fc9df1662970ce2969de7 produced native kernel 02f216348851ba9ce70616430ff7607be9d3305cbc8b2ae1186f0e7d6b20fce7 and prelinked kernel.macho 65a3e799e1eb7f631a3b146dfc890ef5a8147c8fc613ee383a1665b398fb1ef9; runtime qualification remains false. Command:PATH=.cache/phase2-plan/toolchain/bin:.venv/bin:$PATH .venv/bin/python .cache/phase2-plan/UniXNU/unixnu build kernel -D .. Revision:c91a2191fdf591a401a03027ed8b7fbfdbcad3a7.host: 2026-10-25: a 58,720,256-byte FAT16 volume held all 54,063,968 payload bytes, left 3,734,016 bytes free, and round-tripped kernel.macho with SHA-256 65a3e799e1eb7f631a3b146dfc890ef5a8147c8fc613ee383a1665b398fb1ef9. Command:mformat -C -F -T 114688 -v ELDENPH2 -i .cache/phase2.2/payload-fit-56m-20261025-223638.img :: && mcopy -i .cache/phase2.2/payload-fit-56m-20261025-223638.img -s .cache/phase2-plan/UniXNU/out/elden/ipados-17.7.11-21H461/elden/payload/stage/EFI :😕. Revision:c91a2191fdf591a401a03027ed8b7fbfdbcad3a7.
Diagnostics
device-verified
Hardware and dependencies
- RAM-only owner-operated boot procedure.
- Build and artifact SHA-256 values.
- UEFI screen output and recovery path.
Configuration
- verify_artifact.py checks the FD, Android image and embedded FAT.
- build.json records artifact sizes and hashes.
- The phase 1 acceptance requires two consecutive cold boots.
Procedure
- Build and verify the image.
- Owner runs fastboot boot twice and records the visible result.
- Power off and confirm stock Android before further work.
Development findings
- The original accepted image is b56ef4b7e5a71382b8c279c4ee1560764fabd126ba37ac0fd6e495c80b9ec6e1.
- Earlier UFSDxe failure images are identified and must not be reused.
- Phase 2 requires separate kernel and DarwinBoot evidence.
- On 2026-10-25 a fresh phase 1 rebuild produced image SHA-256 94b6a6315b04fc9d276bc15e9519107be292244380fc3bf139f5af6c96a3bb0a and FD SHA-256 e5420517d55f4b638c07617a252d3a65c95cfb731584dcb10dd1d98bae412580. The build and prior local candidate were read-only preserved under .cache/phase2.0, and the owner then completed two RAM cold boots of the new image.
- Phase 2.1 host auditing now checks the ADT independently and records FDT, ADT, UEFI memory and boot argument sources under .cache/phase2.1 without replacing phase 1 artifacts.
- Phase 2.2 audits passed for 1,010 target objects, 7,730 prelink XML tags, iOS 17.0 deployment, 4 KiB TCR and the expected ArmDTPlatform/ArmCpu symbols. These are host-only checks.
Completion criteria
- Every claimed checkpoint has a reproducible command, image hash and visible result.
- Failures reach a diagnosable screen or log instead of a silent hang.
Current limits
- There is no phase 2 XNU log or ADT handoff evidence yet.
- The generated hardware ADT input is a minimal host candidate. The separate firmware memory description contains the source-derived reservation map, but neither is a live device FDT.
- The historical accepted image bytes are absent from the workspace, so they cannot be booted or byte-compared locally.
Next action
- Proceed with phase 2.3 using isolated outputs. Before any phase 2 device boot, rerun the Phase 2.1 audit against the owner-captured live firmware FDT. Record source, host and device evidence separately for every gate; loader validation, kernel entry, platform expert and boot CPU require distinct checkpoints and two final-image cold boots.
Evidence
source: Recorded phase 1 artifact sizes and SHA-256 values.source: The elden Linux reference now matches soc/sm8750/soc.toml at h0cheung/tb322fc-linux-kernel 6f97250ead155fc3b980856323e99a4623dae73d.host: 2026-10-25: a fresh phase 1 rebuild completed in 6:46 and passed static Android v3, shim, FD, embedded FAT and module checks. Image SHA-256 was 94b6a6315b04fc9d276bc15e9519107be292244380fc3bf139f5af6c96a3bb0a and FD SHA-256 was e5420517d55f4b638c07617a252d3a65c95cfb731584dcb10dd1d98bae412580; no device boot was performed. Command:.venv/bin/python scripts/build_phase1.py --skip-submodules --crypto-path $PWD/.cache/phase1/basecrypto. Revision:dffc3020a85830d0d981a85871d9ab31aac5827d.device: 2026-10-25: owner confirmed two RAM cold boots of image 94b6a6315b04fc9d276bc15e9519107be292244380fc3bf139f5af6c96a3bb0a; both reached the usable UniXNU menu and stock Android resumed after exit. This evidence covers phase 1 only. Command:fastboot boot out/elden-phase1.img. Revision:dffc3020a85830d0d981a85871d9ab31aac5827d.host: 2026-10-25: DTC 1.8.1-gf99e3af0 generated a 1,557-byte DTB with SHA-256 60316b6d4e753610610126d691f6d39ba54edd21e9b02875ec034e81e27a4371; round-trip inspection found the expected compatible strings, CPU MPIDRs, PSCI, GICv3, timer and DRAM data. Command:.cache/dtc-src/dtc -I dts -O dtb -i soc/sm8750/dts -o /tmp/elden-phase2.0.dtb dts/elden.dts. Revision:f99e3af0ecb67a9085478a9b8ddbcc25aa64931d.host: 2026-10-25: live-FDT audit produced a 13,152-byte ADT. Independent checks passed for C2400000+10000000 RAM/reservation/initrd coverage, UEFI DXE conventional memory, framebuffer, eight MPIDRs, one running boot CPU, GIC, timer, CHRP NVRAM, optional placeholders and sleep-disabled=1. Report: .cache/phase2.1-live/audit.json. Command:.venv/bin/python scripts/phase2_1_audit.py --firmware-dtb .cache/device/elden-live.fdt --output-dir .cache/phase2.1-live. Revision:16e592abee8a550dec8154ed1f38b5ebc4f16213.host: 2026-10-25: native kernel audited as arm64/iOS 17 with 4 KiB TG0 and TG1; 1,010 target objects passed; the pinned prelink XML lexer accepted 7,730 tags. No device checkpoint is claimed. Command:python3 scripts/audit-xnu-kernel.py build/xnu/ios-obj/DEVELOPMENT_ARM64_BCM2837/mach.development.bcm2837.unstripped.noctf && python3 scripts/audit-xnu-objects.py && python3 scripts/check-prelink-xml.py ../kernel/kernel.macho. Revision:c91a2191fdf591a401a03027ed8b7fbfdbcad3a7.device: Two cold boots reached DISPLAY OK, INPUT OK, config loaded and menu shown. Command:fastboot boot out/elden-phase1.img. Revision:c591b1a0a471f24978aba25c56c8f6ec9bd06668.device: Screen capture shows the rendered UniXNU menu on the tablet. Command:fastboot boot out/elden-phase1.img. Revision:c591b1a0a471f24978aba25c56c8f6ec9bd06668.