S43 · SOURCE-BOUND GATE EVIDENCE
RPi5 G8a PSCI CPU1 bring-up paketi hazırlandı; fiziksel BOOT8 bekliyor
Operations komutu/kapı ailesi → gerçek repository yürütme sözleşmesi Bu sayfa yalnız S43 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.
S43Komut / fiziksel sözleşmeOperations id exactsource SHA exact
operation: rpi5-g8a-psci-cpu1-package-staged
script/Makefile/config · Operations · 2 exact excerpt
sequence-bound=true · implementation-bound=false
01 · Yürütme sözleşmesi
Gerçek script / Makefile / config kaynağı
tam dosyaL1–L142
scripts/verify-rpi5-g8-layout.sh::verify-rpi5-g8-layout.sh
#!/bin/sh
set -eu
if [ "$#" -ne 3 ]; then
echo "usage: $0 <llvm-readobj> <llvm-objdump> <rpi5-kernel-elf>" >&2
exit 2
fi
readobj=$1
objdump=$2
kernel=$3
for input in "$readobj" "$objdump" "$kernel"; do
if [ ! -f "$input" ] || [ ! -r "$input" ]; then
echo "HATA: G8 gate okuyamıyor: $input" >&2
exit 1
fi
done
disassembly=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-dis.XXXXXX")
symbols=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-sym.XXXXXX")
secondary=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-secondary.XXXXXX")
secondary_mmu=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-mmu.XXXXXX")
smc=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-smc.XXXXXX")
secondary_rust=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8-rust.XXXXXX")
trap 'rm -f "$disassembly" "$symbols" "$secondary" "$secondary_mmu" "$smc" "$secondary_rust"' EXIT HUP INT TERM
"$objdump" -d --no-show-raw-insn "$kernel" > "$disassembly"
"$objdump" --syms "$kernel" > "$symbols"
extract_symbol() {
symbol=$1
output=$2
awk -v header="<$symbol>:" '
index($0, header) { capture = 1 }
capture && /^[[:space:]]*$/ { exit }
capture { print }
' "$disassembly" > "$output"
if [ ! -s "$output" ]; then
echo "HATA: G8 makine-kodu sembolü bulunamadı: $symbol" >&2
exit 1
fi
}
extract_symbol rpi5_g8_secondary_entry "$secondary"
extract_symbol rpi5_g8_enable_secondary_mmu "$secondary_mmu"
extract_symbol rpi5_psci_smc64 "$smc"
extract_symbol rpi5_g8_secondary_rust "$secondary_rust"
for contract in \
'msr[[:space:]]+DAIFSet, #0xf' \
'mrs[[:space:]]+x20, MPIDR_EL1' \
'ubfx[[:space:]]+x22, x20, #8, #8' \
'mrs[[:space:]]+x0, CurrentEL' \
'msr[[:space:]]+HCR_EL2, x0' \
'msr[[:space:]]+SPSR_EL2, x0' \
'[[:space:]]eret([[:space:]]|$)' \
'bl[[:space:]]+.*<rpi5_g8_enable_secondary_mmu>' \
'msr[[:space:]]+VBAR_EL1, x0' \
'bl[[:space:]]+.*<rpi5_g8_secondary_rust>' \
'[[:space:]]wfe([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$secondary"; then
echo "HATA: G8 secondary trampoline sözleşmesi eksik: $contract" >&2
exit 1
fi
done
if grep -Eq 'zero_bss|DAIFClr|rpi5_uart_puts' "$secondary"; then
echo "HATA: G8 CPU1 trampoline BSS temizliyor, IRQ açıyor veya UART'a yazıyor" >&2
exit 1
fi
for contract in \
'msr[[:space:]]+MAIR_EL1' \
'msr[[:space:]]+TCR_EL1' \
'msr[[:space:]]+TTBR0_EL1' \
'tlbi[[:space:]]+vmalle1is' \
'mrs[[:space:]]+x8, SCTLR_EL1' \
'msr[[:space:]]+SCTLR_EL1, x8' \
'[[:space:]]ret([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$secondary_mmu"; then
echo "HATA: G8 secondary MMU sözleşmesi eksik: $contract" >&2
exit 1
fi
done
if ! grep -Eq '[[:space:]]smc[[:space:]]+#0' "$smc"; then
echo "HATA: G8 PSCI wrapper SMC #0 içermiyor" >&2
exit 1
fi
if grep -Eq '(^|[[:space:],\[])(([qv][0-9]+)|([sd][0-9]+))([[:space:],\]]|$)' "$secondary_rust"; then
echo "HATA: G8 FP=TRAP CPU1 Rust gövdesi FP/SIMD talimatı içeriyor" >&2
exit 1
fi
if grep -Eq 'DAIFClr|<.*kprint|<.*gic::|<.*timer::init|<.*scheduler' "$secondary_rust"; then
echo "HATA: G8 CPU1 Rust gövdesi IRQ açıyor, UART/GIC/timer/scheduler yoluna giriyor" >&2
exit 1
fi
symbol_value() {
name=$1
awk -v name="$name" '$NF == name { print $1; exit }' "$symbols"
}
entry_hex=$(symbol_value rpi5_g8_secondary_entry)
text_start_hex=$(symbol_value __text_start)
text_end_hex=$(symbol_value __text_end)
stack_size_hex=$(awk '$NF == "PERCPU_KERNEL_STACKS" { print $(NF-1); exit }' "$symbols")
if [ -z "$entry_hex" ] || [ -z "$text_start_hex" ] || [ -z "$text_end_hex" ]; then
echo "HATA: G8 entry/text sembol sınırları çözülemedi" >&2
exit 1
fi
entry=$((0x$entry_hex))
text_start=$((0x$text_start_hex))
text_end=$((0x$text_end_hex))
if [ $((entry & 3)) -ne 0 ] || [ "$entry" -lt "$text_start" ] || [ "$entry" -ge "$text_end" ]; then
echo "HATA: G8 PSCI entry kernel text içinde hizalı değil: 0x$entry_hex" >&2
exit 1
fi
if [ "$stack_size_hex" != "0000000000010000" ]; then
echo "HATA: dört adet 16 KiB per-CPU stack toplamı 64 KiB değil: $stack_size_hex" >&2
exit 1
fi
for marker in \
'ASELSAN/G8S0 CPU=0 DT=PSCI-1.0 CONDUIT=SMC CPUS=4 TARGET=0x' \
'ASELSAN/G8S1 CPU=1 MPIDR=0x' \
'ASELSAN/BOOT8 PSCI=OK CPU_ON=OK SECONDARY=CPU1' \
'ASELSAN/G8ERR CODE='; do
if ! strings "$kernel" | grep -Fq "$marker"; then
echo "HATA: G8 marker ELF içinde yok: $marker" >&2
exit 1
fi
done
"$readobj" --file-headers "$kernel" | grep -Eq 'Entry: 0x80000$' || {
echo "HATA: G8 RPi5 ELF entry 0x80000 değil" >&2
exit 1
}
echo "PASS: G8 PSCI SMC64, BCM2712 Aff1 CPU1, EL2/EL1 trampoline, shared TTBR0 and masked secondary machine-code contract verified"
snippet sha256: ba7b4cdd832f…file sha256: ba7b4cdd832f…
02 · Kapı kimlik kaydı
Operations sıra, kimlik ve başlık bağı
tam Operations kaydıL33317–L33429
website/src/lib/operations.ts::rpi5-g8a-psci-cpu1-package-staged
{
id: "rpi5-g8a-psci-cpu1-package-staged",
date: "2026-08-20",
sequence: 43,
status: "partial",
title:
"RPi5 G8a PSCI CPU1 bring-up paketi hazırlandı; fiziksel BOOT8 bekliyor",
summary:
"G7d fiziksel BOOT7D sınırı korunarak G8'in ilk ve özellikle dar dilimi hazırlandı. Runtime DTB'deki exact PSCI 1.0/SMC ve dört BCM2712 CPU topolojisi pre-MMU doğrulanıyor; CPU0 yalnız MPIDR 0x100 CPU1'i PSCI CPU_ON64 ile EL2/EL1 uyumlu secondary trampoline'a çağırıyor. CPU1, CPU0'ın shared Stage-1 kökünü kullanıyor ve iki yönlü coherent mailbox handshake'inden sonra IRQ maskeli WFE parkında kalıyor. G8 hedef testleri 18/18, workspace 102/102, QEMU smoke, RPi4/RPi5 build'leri, RPi5 disassembly kapısı ve paket manifesti geçti. 242848 baytlık dca4ab20…ae863 imaj yalnız build/rpi5 içinde staged durumdadır; microSD'ye yazılmadı ve gerçek G8S0/G8S1/BOOT8 UART10 kanıtı alınmadı.",
evidence: [
"Paketlenmiş bcm2712-rpi-5-b.dtb allocation-free production parser ile exact PSCI-1.0, SMC conduit, dört enable-method=psci CPU ve MPIDR 0x000/0x100/0x200/0x300 sözleşmesinden geçti.",
"PSCI wrapper VERSION, FEATURES, CPU_ON64=0xc4000003 ve AFFINITY_INFO64 çağrılarını SMC #0 ile yapıyor; SMCCC caller-saved x0–x17 clobber sınırı makine kodunda korunuyor.",
"CPU0 yalnız TARGET=0x100 CPU1'i 0x4738435055310001 context ID ile açar. Entry 0x801f8, kernel text içinde dört bayt hizalıdır; başka CPU için CPU_ON yolu yoktur.",
"Secondary trampoline BCM2712 logical CPU indeksini MPIDR.Aff1'den seçer, EL2 ve EL1 girişlerini maskeli EL1h'te birleştirir, CPU1'e ayrı 16 KiB stack/TPIDR/VBAR kurar ve shared BSS'i temizlemez.",
"CPU1 aynı TTBR0 base'iyle MMU ve I/D cache'i açar; context/MPIDR/EL/SCTLR/TTBR0/VBAR/CPACR/DAIF/TPIDR alanlarını coherent mailbox'a yayımlar.",
"İki yönlü cookie echo, heartbeat=1 ve online mask 0x1→0x3 release/acquire atomikleriyle doğrulanır. AFFINITY_AFTER=ON, en az 10 primary tick ve ilişkili sonraki SEC örneği BOOT8 ön koşuludur.",
"CPU1 UART'a yazmaz, IRQ açmaz ve GIC/timer/scheduler init yoluna girmez; FP/SIMD trap kalır ve CPU1 WFE parkında tutulur.",
"G8 host matrisi 18/18 PASS verdi: DTB/topology 5/5, source/SMCCC/trampoline 6/6, strict UART/adversarial validator 7/7.",
"cargo test --workspace 102/102 PASS; make verify-core exit 0. QEMU smoke ‘hello ELF + IPC ELF + scheduler SEC 5; fault marker yok’ verdi; RPi4 ve RPi5 build'leri geçti.",
"scripts/verify-rpi5-g8-layout.sh SMC64, Aff1, EL2/EL1 trampoline, VBAR, shared TTBR0, MMU barrier/TLBI sırası ve maskeli CPU1 izolasyonunu disassembly üzerinde PASS verdi.",
"G8 kabul marker'ları QEMU ve RPi4 artefaktlarında yoktur; yalnız board-rpi5 imajında bulunur.",
"Staged imaj exact 242848 bayt / dca4ab20b49b2a6b26cb19d6d0f0d880d5af49057c95c05996d0ce43a3ae8637; DTB 40a2fbe9…ca00, config 1248275c…d76b ve SHA256SUMS f779999e…0501'dir.",
"build/rpi5 manifesti aselsanos-rpi5.img, bcm2712-rpi-5-b.dtb ve config.txt için 3/3 OK verdi. Staged ve fiziksel kabul sınırı docs/M8.1-RPi5-G8a-PSCI-CPU1-Staged-Proof.md içinde donduruldu.",
],
commands: [
"make verify-rpi5-g8-host",
"make verify-core",
"sh scripts/verify-rpi5-g8-layout.sh <llvm-readobj> <llvm-objdump> <rpi5-elf>",
"make image-rpi5",
"cd build/rpi5 && shasum -a 256 -c SHA256SUMS",
"stat + shasum + symbol/board-marker isolation audit",
],
terminalSessionsNote:
"Bu oturumlar dondurulmuş G8a kaynağı üzerinde gerçekten yeniden çalıştırılan host/build/makine-kodu/paket komutlarının seçili sonuçlarıdır. Uzun mevcut compiler warning'leri kısaltılmıştır. Fixture sentetiktir; hiçbir satır fiziksel UART çıktısı olarak sunulmaz.",
terminalSessions: [
{
id: "g8a-host-contract",
title: "G8a DTB · SMCCC · trampoline · strict UART sözleşmesi",
commandLines: ["make verify-rpi5-g8-host"],
outputLines: [
"rpi5_g8_contract: 5 passed; 0 failed",
"rpi5_g8_source: 6 passed; 0 failed",
"rpi5_g8_uart: 7 passed; 0 failed",
"G8 targeted total: 18/18 PASS",
],
exitCode: 0,
outputMode: "selected",
outputNote: "Üç G8 test binary'sinin sonuç satırları seçildi.",
},
{
id: "g8a-core-matrix",
title: "Workspace · QEMU · RPi4 · RPi5 tam gerileme matrisi",
commandLines: ["make verify-core"],
outputLines: [
"cargo test --workspace: 102 passed; 0 failed",
"QEMU smoke PASS: hello ELF + IPC ELF + scheduler SEC 5; fault marker yok",
"Raspberry Pi 4 kernel build: PASS",
"Raspberry Pi 5 kernel build: PASS",
"make verify-core: exit 0",
],
exitCode: 0,
outputMode: "selected",
outputNote: "Tek verify-core çalışmasının kapı sonuçları seçildi.",
},
{
id: "g8a-machine-code",
title: "RPi5 PSCI/secondary makine-kodu ve board izolasyonu",
commandLines: [
"sh scripts/verify-rpi5-g8-layout.sh <llvm-readobj> <llvm-objdump> target/rpi5/.../aselsan_kernel",
"llvm-nm -S target/rpi5/.../aselsan_kernel | rg 'rpi5_g8|rpi5_psci'",
"QEMU/RPi4/RPi5 marker isolation audit",
],
outputLines: [
"PASS: G8 PSCI SMC64, BCM2712 Aff1 CPU1, EL2/EL1 trampoline, shared TTBR0 and masked secondary machine-code contract verified",
"rpi5_g8_secondary_entry 0x801f8 size=0xc8",
"rpi5_g8_enable_secondary_mmu 0x8d468 size=0x68",
"rpi5_g8_secondary_rust 0x8d4d0 size=0x210",
"rpi5_psci_smc64 0x92080 size=0x0c · smc #0",
"qemu/rpi4 G8 acceptance markers=0 · rpi5 acceptance markers=present",
],
exitCode: 0,
outputMode: "selected",
},
{
id: "g8a-package",
title: "Dondurulmuş RPi5 staged paket · manifest 3/3",
commandLines: [
"make image-rpi5",
"stat + shasum -a 256 build/rpi5/*",
"cd build/rpi5 && shasum -a 256 -c SHA256SUMS",
],
outputLines: [
"242848 build/rpi5/aselsanos-rpi5.img",
"dca4ab20b49b2a6b26cb19d6d0f0d880d5af49057c95c05996d0ce43a3ae8637 aselsanos-rpi5.img",
"40a2fbe9c29e8b9a4912cf726a943068defb779fc052ec38e457a79c58abca00 bcm2712-rpi-5-b.dtb",
"1248275cdc6f6ce951ce0ff2183471d194c5b9bb58c3dc3f66efa9156f91d76b config.txt",
"f779999ead67e71b7b26fd3eb30370113bf2d495ff4110f6874b36ba80750501 SHA256SUMS",
"aselsanos-rpi5.img: OK",
"bcm2712-rpi-5-b.dtb: OK",
"config.txt: OK",
],
exitCode: 0,
outputMode: "selected",
},
],
limitations: [
"Bu kayıt host, kaynak, disassembly ve paket kanıtıdır; microSD'ye yazılmadı, Raspberry Pi 5 açılmadı ve gerçek UART10 G8S0/G8S1/BOOT8 gözlenmedi.",
"G8a yalnız CPU1 CPU_ON, shared Stage-1 root ve tek coherent mailbox smoke'udur; genel SMP veya multi-core scheduler PASS'i değildir.",
"CPU1 GIC/timer/scheduler üyeliği, IPI, task migration, TLB shootdown, CPU2/CPU3, CPU_OFF/hotplug ve EL0-on-CPU1 kapsam dışıdır.",
"Sentetik fixture'daki entry/version/tick değerleri validator girdisidir ve fiziksel ölçüm değildir.",
"Fiziksel PASS için exact kart kimliği, formatsız yazım, manifest/cmp/eject ve değişmemiş 115200 8N1 raw kaydın strict G8 validator'dan geçmesi gerekir.",
],
},snippet sha256: 73b921d40119…file sha256: 9726dbf00f84…
Kayıtlı yürütme/kanıt komutu
make verify-rpi5-g8-hostRegistry schema v5 · generator
website/scripts/generate-code-gates.mjs · Tam SHA-256: 91d38c7b6222f0b4c117be786454853543da55a160e543d9b951057cc20dcc06