S52 · SOURCE-BOUND GATE EVIDENCE
RPi5 G8d tek CPU0→CPU1 SGI/reschedule paketi hazırlandı; microSD ve BOOT8D bekliyor
Operations komutu/kapı ailesi → gerçek repository yürütme sözleşmesi Bu sayfa yalnız S52 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.
S52Komut / fiziksel sözleşmeOperations id exactsource SHA exact
operation: rpi5-g8d-cpu1-sgi-reschedule-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–L229
scripts/verify-rpi5-g8d-layout.sh::verify-rpi5-g8d-layout.sh
#!/bin/sh
set -eu
if [ "$#" -ne 2 ]; then
echo "usage: $0 <llvm-objdump> <rpi5-kernel-elf>" >&2
exit 2
fi
objdump=$1
kernel=$2
for input in "$objdump" "$kernel"; do
if [ ! -f "$input" ] || [ ! -r "$input" ]; then
echo "HATA: G8d gate okuyamıyor: $input" >&2
exit 1
fi
done
disassembly=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-dis.XXXXXX")
secondary=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-secondary.XXXXXX")
primary=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-primary.XXXXXX")
task=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-task.XXXXXX")
handler=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-handler.XXXXXX")
prepare=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-prepare.XXXXXX")
send=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-send.XXXXXX")
stack_call=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-stack-call.XXXXXX")
prerequisite=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-prerequisite.XXXXXX")
g8c_secondary=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-g8c-secondary.XXXXXX")
irq_dispatch=$(mktemp "${TMPDIR:-/tmp}/aselsanos-g8d-irq-dispatch.XXXXXX")
trap 'rm -f "$disassembly" "$secondary" "$primary" "$task" "$handler" "$prepare" "$send" "$stack_call" "$prerequisite" "$g8c_secondary" "$irq_dispatch"' EXIT HUP INT TERM
"$objdump" -d --no-show-raw-insn "$kernel" > "$disassembly"
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: G8d makine-kodu sembolü bulunamadı: $symbol" >&2
exit 1
fi
}
extract_symbol rpi5_g8d_secondary_run "$secondary"
extract_symbol rpi5_g8d_primary_run "$primary"
extract_symbol rpi5_g8d_task_wake_entry "$task"
extract_symbol rpi5_g8d_try_handle_secondary_irq "$handler"
extract_symbol rpi5_g8d_init_secondary_sgi "$prepare"
extract_symbol rpi5_g8d_send_sgi "$send"
extract_symbol rpi5_g8d_call_on_existing_task_stack "$stack_call"
extract_symbol rpi5_g8c_prerequisite_complete "$prerequisite"
extract_symbol rpi5_g8c_secondary_run "$g8c_secondary"
extract_symbol rust_irq_handler "$irq_dispatch"
for contract in \
'cmp[[:space:]]+w0, #0xf' \
'ubfiz[[:space:]]+w[0-9]+, w1, #16, #8' \
'dsb[[:space:]]+ishst' \
'orr[[:space:]]+w[0-9]+, w[0-9]+, w0' \
'str[[:space:]]+w[0-9]+, \[x[0-9]+\]$' \
'dsb[[:space:]]+ish'; do
if ! grep -Eq "$contract" "$send"; then
echo "HATA: G8d explicit-target SGIR makine-kodu eksik: $contract" >&2
exit 1
fi
done
if grep -Eq 'mrs[[:space:]]+x[0-9]+, CNTV_CTL_EL0' "$primary"; then
echo "HATA: G8d CPU0 yolu kendi per-CPU timer register'ını CPU1 durumu olarak okuyor" >&2
exit 1
fi
if ! grep -Eq 'ldar[[:space:]]+x[0-9]+, \[x[0-9]+\]' "$primary"; then
echo "HATA: G8d CPU0 yolu yayımlanmış CPU1 timer readback'ini acquire-load etmiyor" >&2
exit 1
fi
if [ "$(grep -Ec 'str[[:space:]]+w[0-9]+, \[x[0-9]+\]$' "$send")" -ne 1 ]; then
echo "HATA: G8d SGIR yolu exact tek no-offset MMIO write içermiyor" >&2
exit 1
fi
for contract in \
'cmp[[:space:]]+w0, #0xf' \
'cmp[[:space:]]+w1, #0x7' \
'stur[[:space:]]+w[0-9]+, \[x[0-9]+, #-0xf0\]' \
'ldur[[:space:]]+w[0-9]+, \[x[0-9]+, #-0xe0\]' \
'sub[[:space:]]+x[0-9]+, x[0-9]+, #0x800' \
'dsb[[:space:]]+sy' \
'[[:space:]]isb([[:space:]]|$)' \
'cmp[[:space:]]+w[0-9]+, #0x81' \
'cmp[[:space:]]+w[0-9]+, #0x80'; do
if ! grep -Eq "$contract" "$prepare"; then
echo "HATA: G8d CPU1 banked SGI hazırlık makine-kodu eksik: $contract" >&2
exit 1
fi
done
for contract in \
'mrs[[:space:]]+x[0-9]+, MPIDR_EL1' \
'ubfx[[:space:]]+w[0-9]+, w1, #10, #3' \
'ldaxr[[:space:]]+x[0-9]+' \
'stlxr[[:space:]]+w[0-9]+' \
'orr[[:space:]]+x[0-9]+, x[0-9]+, #0x80' \
'mrs[[:space:]]+x[0-9]+, CNTV_CTL_EL0' \
'cmp[[:space:]]+w2, #0x1' \
'str[[:space:]]+w1, \[x[0-9]+\]$' \
'cmp[[:space:]]+x[0-9]+, #0x3' \
'[[:space:]]sev([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$handler"; then
echo "HATA: G8d exact-once SGI handler makine-kodu eksik: $contract" >&2
exit 1
fi
done
if [ "$(grep -Ec 'str[[:space:]]+w1, \[x[0-9]+\]$' "$handler")" -ne 1 ]; then
echo "HATA: G8d handler ham acknowledge değerini EOIR'ye exact bir kez yazmıyor" >&2
exit 1
fi
for contract in \
'bl[[:space:]]+.*<rpi5_g8c_prerequisite_complete>' \
'mrs[[:space:]]+x[0-9]+, MPIDR_EL1' \
'mrs[[:space:]]+x[0-9]+, TPIDR_EL1' \
'mrs[[:space:]]+x[0-9]+, DAIF' \
'mrs[[:space:]]+x[0-9]+, CNTV_CTL_EL0' \
'mrs[[:space:]]+x[0-9]+, CPACR_EL1' \
'bl[[:space:]]+.*<rpi5_g8d_init_secondary_sgi>' \
'msr[[:space:]]+DAIFClr, #0x2' \
'msr[[:space:]]+DAIFSet, #0x2' \
'bl[[:space:]]+.*<rpi5_g8d_call_on_existing_task_stack>' \
'cmp[[:space:]]+x[0-9]+, #0x6' \
'cmp[[:space:]]+x[0-9]+, #0x7' \
'[[:space:]]wfe([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$secondary"; then
echo "HATA: G8d CPU1 IRQ-to-task dispatch makine-kodu eksik: $contract" >&2
exit 1
fi
done
if grep -Eq '[[:space:]]wfi([[:space:]]|$)' "$secondary"; then
echo "HATA: G8d CPU1 bounded wait lost-event güvenli WFE yerine WFI içeriyor" >&2
exit 1
fi
for contract in \
'mrs[[:space:]]+x[0-9]+, MPIDR_EL1' \
'cmp[[:space:]]+x[0-9]+, #0x100' \
'ldaxr[[:space:]]+x[0-9]+' \
'stlxr[[:space:]]+w[0-9]+' \
'mov[[:space:]]+x[0-9]+, sp' \
'mrs[[:space:]]+x[0-9]+, DAIF' \
'mrs[[:space:]]+x[0-9]+, CNTV_CTL_EL0' \
'stlr[[:space:]]+x[0-9]+' \
'[[:space:]]ret([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$task"; then
echo "HATA: G8d task wake makine-kodu eksik: $contract" >&2
exit 1
fi
done
for contract in \
'mov[[:space:]]+x2, x1' \
'mov[[:space:]]+x1, x0' \
'<rpi5_g8c_call_on_stack>'; do
if ! grep -Eq "$contract" "$stack_call"; then
echo "HATA: G8d mevcut G8c stack yeniden-kullanım köprüsü eksik: $contract" >&2
exit 1
fi
done
for contract in \
'cmp[[:space:]]+x[0-9]+, #0x5' \
'cmp[[:space:]]+x[0-9]+, #0x1' \
'cmp[[:space:]]+x[0-9]+, #0x3' \
'cmp[[:space:]]+x[0-9]+, x[0-9]+' \
'ldarb[[:space:]]+w[0-9]+' \
'ccmp[[:space:]]+x[0-9]+, x[0-9]+'; do
if ! grep -Eq "$contract" "$prerequisite"; then
echo "HATA: G8d G8c fiziksel önkoşul makine-kodu eksik: $contract" >&2
exit 1
fi
done
for contract in \
'bl[[:space:]]+.*<rpi5_g8d_secondary_released>' \
'bl[[:space:]]+.*<rpi5_g8d_secondary_run>' \
'[[:space:]]wfe([[:space:]]|$)'; do
if ! grep -Eq "$contract" "$g8c_secondary"; then
echo "HATA: G8d G8c park-handoff makine-kodu eksik: $contract" >&2
exit 1
fi
done
g8d_line=$(grep -n '<rpi5_g8d_try_handle_secondary_irq>' "$irq_dispatch" | head -n 1 | cut -d: -f1)
g8b_line=$(grep -n '<rpi5_g8b_try_handle_secondary_irq>' "$irq_dispatch" | head -n 1 | cut -d: -f1)
if [ -z "$g8d_line" ] || [ -z "$g8b_line" ] || [ "$g8d_line" -ge "$g8b_line" ]; then
echo "HATA: G8d SGI interceptor tamamlanmış G8b interceptor'ından önce değil" >&2
exit 1
fi
for cpu1_body in "$secondary" "$task" "$handler" "$prepare" "$stack_call" "$prerequisite"; do
if grep -Eq '(^|[[:space:],\[])(([qv][0-9]+)|([sd][0-9]+))([[:space:],\]]|$)' "$cpu1_body"; then
echo "HATA: G8d FP=TRAP CPU1 makine-kodu FP/SIMD talimatı içeriyor" >&2
exit 1
fi
if grep -Eq 'panic|kprint|scheduler|context_switch|spawn_kernel_task|alloc::|tlbi|psci' "$cpu1_body"; then
echo "HATA: G8d CPU1 yolu panic/UART/global scheduler/heap/shootdown/PSCI çağrısı içeriyor" >&2
exit 1
fi
done
if grep -Eq 'ack_and_rearm|rpi5_g8b_init_per_cpu_oneshot|rpi5_g8b_init_secondary_timer_ppi' "$secondary" "$task" "$handler"; then
echo "HATA: G8d CPU1 yolu local timer'ı yeniden kuruyor veya rearm ediyor" >&2
exit 1
fi
for marker in \
'ASELSAN/G8D0 CPU=0 SOURCE=CPU0 TARGET=CPU1' \
'ASELSAN/G8D1 CPU=1 MPIDR=0x' \
'ASELSAN/G8D2 CPU=1 MPIDR=0x' \
'ASELSAN/BOOT8D IPI=SGI1 CPU0_TO_CPU1=1' \
'ASELSAN/G8DERR CODE='; do
if ! strings "$kernel" | grep -Fq "$marker"; then
echo "HATA: G8d marker ELF içinde yok: $marker" >&2
exit 1
fi
done
echo "PASS: G8d one CPU0->CPU1 SGI1, exact raw acknowledge/EOI, CPU1-published timer-off state, masked EL1h return and one existing pinned-task wake verified"
snippet sha256: fdf313db541b…file sha256: fdf313db541b…
02 · Kapı kimlik kaydı
Operations sıra, kimlik ve başlık bağı
tam Operations kaydıL32343–L32441
website/src/lib/operations.ts::rpi5-g8d-cpu1-sgi-reschedule-package-staged
{
id: "rpi5-g8d-cpu1-sgi-reschedule-package-staged",
date: "2026-08-21",
sequence: 52,
status: "partial",
title:
"RPi5 G8d tek CPU0→CPU1 SGI/reschedule paketi hazırlandı; microSD ve BOOT8D bekliyor",
summary:
"Fiziksel G8c/BOOT8C sınırı korunarak CPU0'ın explicit target-list 0x02 ile yalnız CPU1'e tek non-secure GICv2 SGI1 göndermesi; CPU1'in source CPU0'ı doğrulayıp ham IAR acknowledge değerini EOIR'ye exact bir kez yazması; IRQ-maskeli EL1h dönüşünden sonra mevcut G8c pinned task'ını mevcut statik 64 KiB stack üzerinde tam bir kez uyandırması için dar G8d dilimi hazırlandı. G8d hedefleri 16/16, workspace 147/147, QEMU runtime, üç-board build, fail-closed disassembly/layout, 3/3 manifest ve iki artefaktsız yeniden üretim PASS verdi. 263408 bayt / 6d9c556f…a46922 imaj yalnız build/rpi5 içinde staged durumdadır; microSD'ye yazılmadı, Pi bu paketle açılmadı ve fiziksel G8D0/G8D1/G8D2/BOOT8D UART10 kanıtı yoktur.",
evidence: [
"G8d'nin immutable önkoşulu ikinci temiz güç döngüsündeki 13408 B / 04158260…e0db UART10 raw ile fiziksel PASS veren G8c'dir: G8C0 START_TICKS=701, G8C1 CPU1 RUNS=1 PROGRESS=3 STACK_SP=0xd0000 ve BOOT8C BASE_TICKS=701 TICKS=800.",
"CPU0 yalnız SGI1'i explicit target list 0x02 ile CPU1'e yollar; exact GICD_SGIR komutu (0x02 << 16) | 1 = 0x00020001'dir. Tek send dışındaki target/filter veya ikinci SGI kapsam dışıdır.",
"CPU1 banked/read-only SGI enable, priority, target ve pending-source görünümünü doğrular; global distributor'ı sıfırlamaz. PMR 0x80 priority'yi geçirir, BPR 0..=7 ve SGI1 enabled readback fail-closed kontrol edilir.",
"IRQ handler GICC_IAR INTID=1 ve bits[12:10] source CPU=0 değerini doğrular; ham acknowledge değerini değiştirmeden GICC_EOIR'ye exact bir kez yazar. Deliveries/acks/EOIs/reschedules sayaçlarının her biri tam 1 olmak zorundadır.",
"CPU1 IRQ'dan EL1h ve IRQ maskeli döner; local timer OFF kalır. G8c'nin mevcut static 64 KiB stack/canary/trampoline yolu yeniden kullanılarak aynı PINNED0 task için WAKEUPS=1, RUNS=1, PROGRESS=3 ve özgün SP restore doğrulanır.",
"G8d kaynak/izolasyon testleri 9/9 ve strict UART/adversarial testleri 7/7 olmak üzere hedef toplamı 16/16 PASS verdi.",
"make verify-core exit 0 verdi: cargo test --workspace 147/147, QEMU runtime hello ELF + IPC ELF + scheduler SEC 5, QEMU/RPi4/RPi5 build'leri ve RPi5 G7c–G8d host/layout/package kapıları PASS.",
"scripts/verify-rpi5-g8d-layout.sh SGIR exact tek MMIO write'ını, source ubfx'ini, raw EOIR exact tek store'u, G8d-before-G8b IRQ interception'ını, DAIFClr/WFI/DAIFSet penceresini ve mevcut G8c stack köprüsünü gerçek AArch64 makine kodunda PASS verdi.",
"İmaj manifesti 3/3 OK verdi. Dondurulan artefaktlar: kernel ELF 7315232 B / b1040fac…33ef; imaj 263408 B / 6d9c556f…a46922; DTB 78703 B / 40a2fbe9…ca00; config 501 B / 1248275c…d76b; SHA256SUMS 248 B / a56e3ea3…72cd.",
"İki bağımsız artefaktsız geçici workspace ve ana workspace exact aynı 263408 B / 6d9c556fa7104ae052f648c509104531821eed44620d3e2f827863e7cba46922 imajı üretti; A↔B ve A↔main cmp PASS verdi.",
"Staged kabul ve fiziksel sınır docs/M8.1-RPi5-G8d-CPU1-SGI-Reschedule-Staged-Proof.md içinde donduruldu.",
],
commands: [
"make verify-rpi5-g8d-host",
"scripts/verify-rpi5-g8d-layout.sh <llvm-objdump> target/rpi5/aarch64-unknown-none/debug/aselsan_kernel",
"make verify-core",
"make image-rpi5",
"iki artefaktsız geçici workspace kopyasında make image-rpi5 + sha256 + cmp",
],
terminalSessionsNote:
"Bu oturumlar dondurulmuş G8d kaynağında gerçekten çalıştırılan host, makine-kodu, tam matris ve yeniden üretim komutlarının seçili yanıtlarıdır. G8D0/G8D1/G8D2/BOOT8D satırları yalnız sentetik strict-validator fixture'ıdır; fiziksel UART10 çıktısı değildir.",
terminalSessions: [
{
id: "g8d-targeted-contract",
title: "G8d kaynak, izolasyon ve strict UART sözleşmesi",
commandLines: ["make verify-rpi5-g8d-host"],
outputLines: [
"rpi5_g8d_source: 9 passed · 0 failed",
"rpi5_g8d_uart: 7 passed · 0 failed",
"G8d targeted total: 16/16 PASS",
"synthetic fixture only: G8D0 → G8D1 raw ACK=EOI → G8D2 task wake → BOOT8D",
],
exitCode: 0,
outputMode: "complete",
},
{
id: "g8d-machine-package",
title: "RPi5 G8d makine-kodu ve paket kapıları",
commandLines: [
"scripts/verify-rpi5-g8d-layout.sh <llvm-objdump> <rpi5-kernel-elf>",
"make image-rpi5",
],
outputLines: [
"PASS: G8d one CPU0->CPU1 SGI1, exact raw acknowledge/EOI, masked EL1h return and one existing pinned-task wake verified",
"aselsanos-rpi5.img: OK · bcm2712-rpi-5-b.dtb: OK · config.txt: OK",
"image bytes=263408 sha256=6d9c556fa7104ae052f648c509104531821eed44620d3e2f827863e7cba46922",
"manifest=3/3 OK",
],
exitCode: 0,
outputMode: "selected",
},
{
id: "g8d-full-matrix",
title: "Workspace, QEMU ve üç-board doğrulama matrisi",
commandLines: ["make verify-core"],
outputLines: [
"cargo test --workspace: 147/147 PASS",
"QEMU runtime: hello ELF + IPC ELF + scheduler SEC 5 PASS",
"QEMU / Raspberry Pi 4 / Raspberry Pi 5 build: PASS",
"RPi5 G7c/G7d/G8a/G8b/G8c/G8d gates: PASS",
"verify-core exit=0",
],
exitCode: 0,
outputMode: "selected",
},
{
id: "g8d-reproducible-image",
title: "İki artefaktsız yeniden üretim ve byte eşitliği",
commandLines: [
"copy A: make image-rpi5",
"copy B: make image-rpi5",
"shasum -a 256 + cmp A↔B + cmp A↔main",
],
outputLines: [
"copy A: 263408 B · 6d9c556fa7104ae052f648c509104531821eed44620d3e2f827863e7cba46922",
"copy B: 263408 B · 6d9c556fa7104ae052f648c509104531821eed44620d3e2f827863e7cba46922",
"main: 263408 B · 6d9c556fa7104ae052f648c509104531821eed44620d3e2f827863e7cba46922",
"cmp A↔B=PASS · cmp A↔main=PASS · reproducible_image=PASS",
],
exitCode: 0,
outputMode: "complete",
},
],
limitations: [
"263408 B / 6d9c556f…a46922 G8d paketi microSD'ye yazılmadı; kart hâlâ fiziksel PASS veren G8c paketini taşır.",
"Sentetik G8D0/G8D1/G8D2/BOOT8D fixture'ı fiziksel UART10 kanıtı değildir; Pi bu paketle açılmadı ve G8d fiziksel PASS değildir.",
"Bu yalnız tek CPU0→CPU1 SGI1, exact-once acknowledge/EOI/reschedule ve mevcut task'ın tek wake smoke'udur; migration, load balancing, TLB shootdown, ASID/VMID koordinasyonu, CPU2/CPU3, hotplug, EL0-on-CPU1 ve soak kanıtlanmaz.",
],
},snippet sha256: c7cae79879de…file sha256: 9726dbf00f84…
Kayıtlı yürütme/kanıt komutu
make verify-rpi5-g8d-hostRegistry schema v5 · generator
website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9