ASELSANMicrokernel
S240 · SOURCE-BOUND GATE EVIDENCE

G8l: CPU1→CPU0 SGI2 notification delivery ve exact IRQ/EOI receipt

Operations --test hedefi → simulation public mod g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_descriptor bağı → kaynak kesiti Bu sayfa yalnız S240 kapısına aittir; komşu kapıların kaynakları bu kabulün içine katılmaz.

S240Focused kod testiOperations id exactsource SHA exacttest target exact

operation: g8l-s240-production-migration-lifecycle-s179-execution-caller-notification-sgi2-delivery-partial

uygulama/model · focused test · Operations · 3 exact excerpt

sequence-bound=true · implementation-bound=true
01 · Testin bağlı olduğu uygulama/model kodu

Kapının yürüttüğü gerçek kaynak

tam Rust öğesiL102–L132
kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_descriptor.rs::consume_s179_execution_caller_notification_delivery_descriptor_on_cpu0

/// Convert the S238 request into one CPU0 descriptor and consume it.
///
/// No GIC register, SGI/IPI, wake, scheduler, or ERET operation is performed.
#[cfg(all(target_arch = "aarch64", target_os = "none"))]
pub unsafe fn consume_s179_execution_caller_notification_delivery_descriptor_on_cpu0(
    request: G8lS179ExecutionCallerNotificationDeliveryRequest,
) -> Result<
    G8lS179ExecutionCallerNotificationDeliveryDescriptor,
    G8lProductionS179ExecutionCallerNotificationDeliveryDescriptorError,
> {
    use crate::g8l_runtime_contract::CPU0;

    if crate::percpu::try_current_cpu_id() != Some(CPU0) {
        return Err(
            G8lS179ExecutionCallerNotificationDeliveryDescriptorPrepareError::WrongTargetCpu,
        );
    }
    let mut descriptor =
        G8lS179ExecutionCallerNotificationDeliveryDescriptor::from_consumed_request(
            request,
            S179_TYPED_DELIVERY_TARGET_CPU0,
            S179_TYPED_DELIVERY_CHANNEL,
        )?;
    descriptor.consume().map_err(|error| match error {
        G8lS179ExecutionCallerNotificationDeliveryDescriptorConsumeError::AlreadyConsumed => {
            G8lS179ExecutionCallerNotificationDeliveryDescriptorPrepareError::RequestNotConsumed
        }
    })?;
    Ok(descriptor)
}
snippet sha256: 712895d8680dfile sha256: cdf9899a2ec7
02 · Doğrulayan test kodu

Operations komutuna bağlı focused test

tam Rust öğesiL196–L207
simulation/tests/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_dispatch_receipt.rs::s239_descriptor_is_consumed_before_s240_receipt

#[test]
fn s239_descriptor_is_consumed_before_s240_receipt() {
    let source = include_str!("../../kernel/src/g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_descriptor.rs");
    let start = source
        .find(
            "pub unsafe fn consume_s179_execution_caller_notification_delivery_descriptor_on_cpu0",
        )
        .unwrap();
    let body = &source[start..];
    assert!(body.find("descriptor.consume()").unwrap() < body.find("Ok(descriptor)").unwrap());
}
snippet sha256: 0c7e82ab22d0file sha256: 5b313fe34fe6
03 · Kapı kimlik kaydı

Operations sıra, kimlik ve başlık bağı

tam Operations kaydıL19612–L19662
website/src/lib/operations.ts::g8l-s240-production-migration-lifecycle-s179-execution-caller-notification-sgi2-delivery-partial
  {
    id: "g8l-s240-production-migration-lifecycle-s179-execution-caller-notification-sgi2-delivery-partial",
    date: "2026-08-25",
    sequence: 240,
    status: "passed",
    umbrella_status: "partial",
    title: "G8l: CPU1→CPU0 SGI2 notification delivery ve exact IRQ/EOI receipt",
    summary:
      "S240 41/41 PASS ile S239/internal dispatch zincirini production source-wired CPU1→CPU0 SGI2 yoluna bağladı: CPU0 receiver boot'ta IRQ açılmadan hazırlanır; CPU1 sender S237 publish/arm sonrasında exact SGIR 0x00010002 yazar; CPU0 interceptor raw IAR 0x402'yi doğrulayıp aynı değeri EOI'ye bir kez taşır ve deferred S236 giriş makbuzunu yayımlar. Sender'ı çağıran production runtime callsite henüz yoktur; request, CPU0 wake, hardware delivery, scheduler mutation ve ERET gözlenmedi.",
    evidence: [
      "S240 dispatch-receipt + SGI2 focused matrisi iki bağımsız byte-equal koşuda 2 grup / 41/41 PASS verdi: 189 B / SHA-256 078577c66615dae0a4b036e5bab97f151a56fc2e53a850a460505c5b38bb98a1.",
      "S238 request + S239 descriptor + S240 internal dispatch receipt + S240 SGI2 delivery matrisi iki bağımsız koşuda 4 grup / 74/74 PASS verdi: 379 B / SHA-256 00991b2ae5bd0c39ea8cbd76ad8b1393592fd6fd8f915e02c4c65763ef531096.",
      "RPi5 AArch64 normal ve SMP compile iki canonical-byte-equal koşuda PASS: ikisi de 657 warning; normal 323585 B / SHA-256 e4dab250aa07e86ef16294d966a7c20f8b809972f18db3ae2d3cd2bc14fbd849, SMP 323527 B / SHA-256 5125d3851aaa19beb1c9b55539c9ccd9a91d74e03ac91f15e3d0644a13c1213b. Zero-warning iddiası yoktur.",
      "Taze full-workspace: 155 tam yeşil grup / 1551 test + kırmızı grupta 8 PASS; yalnız frozen S96 exceptions.S identity assertion kırmızıdır (observed f7b476…04fd, expected c0eed3…cb89). Tam-workspace GREEN iddia edilmez.",
      "Exact kaynak sırası: CPU0 receiver pre-IRQ → CPU1 S237 publish/arm → SGI2 SGIR 0x00010002 → CPU0 raw IAR 0x402 → S238/S239/internal dispatch consume → raw-IAR EOI once → linear receipt → caller-authority deferred S236. Retry/reset/replacement yoktur.",
      "Kalıcı kapsam: docs/M8.1-RPi5-G8l-S240-Migration-Lifecycle-S179-Execution-Caller-Notification-Delivery-Dispatch-Receipt-Proof.md.",
      "S240 fiziksel/device operasyonu yapmadı: physical/device operations=0 ve RUNBOOK_EXECUTED_IN_S240=NO.",
      "Canlı marker: S240_41_OF_41_CPU1_TO_CPU0_SGI2_SOURCE_WIRED_INTID2_TARGET_LIST_0X01_SGIR_0X00010002_RAW_IAR_0X402_EXACT_EOI_ONCE_S238_S239_INTERNAL_DISPATCH_RECEIPT_CONSUMED_NONCOPY_NONCLONE_DEFERRED_S236_WIRED_SENDER_RUNTIME_CALLSITE_NOT_WIRED_REQUEST_WAKE_HARDWARE_NOT_OBSERVED_AARCH64_NORMAL_SMP_COMPILED_FULL_WORKSPACE_ONLY_FROZEN_S96_RED_PHYSICAL_QEMU_CPU2_CPU3_HOTPLUG_SOAK_GENERIC_SMP_OPEN_FULL_PHYSICAL_RUNBOOK_VISIBLE_S400_TO_S450_S425_NO_RUNBOOK_EXECUTED_IN_S240_VERIFIED; deployment-specific route/hash evidence is recorded in the project-status manifest.",
    ],
    commands: [
      "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_dispatch_receipt -- --test-threads=1",
      "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_sgi_delivery -- --test-threads=1",
      "cargo check -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-rpi5",
      "cargo check -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-rpi5,smp",
    ],
    terminalSessions: [
      {
        id: "s240-g8l-production-migration-lifecycle-s179-execution-caller-notification-sgi2-delivery",
        title: "G8l S240 CPU1→CPU0 SGI2 ve exact IRQ/EOI receipt",
        commandLines: [
          "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_dispatch_receipt -- --test-threads=1",
          "cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_sgi_delivery -- --test-threads=1",
        ],
        outputLines: [
          "test result: ok; S240 focused 2 groups / 41 passed; 0 failed",
          "CPU1→CPU0 SGI2: INTID=2 TARGET_LIST=0x01 SGIR=0x00010002 RAW_IAR=0x402 RAW_EOI=0x402",
          "receiver + sender function + IRQ interceptor + deferred S236 source-wired; sender runtime callsite and hardware observation remain open",
        ],
        exitCode: 0,
        outputMode: "selected",
      },
    ],
    terminalSessionsNote:
      "Terminal özeti S240'ın real RPi5 GICv2 SGI2 kaynak yolunu derlediğini ve fail-closed modelini doğruladığını gösterir; production sender callsite veya donanımda gözlenmiş interrupt/wake kanıtı değildir.",
    limitations: [
      "CPU0 receiver boot callsite'ı, CPU1 sender fonksiyonunun real SGIR write'ı ve CPU0 IRQ interceptor'ı bağlıdır; sender'ı çağıran runtime callsite yoktur ve request/wake/hardware delivery gözlenmemiştir.",
      "Runtime ve scheduler-owner authority IRQ'dan taşınmaz; deferred S236 girişi bağlı fakat runtime'da çağrılmamıştır. Scheduler mutation, ERET/context-switch ve present tuple açıktır.",
      "QEMU RPi5 GICv2 SGI MMIO yolunu doğrulamaz; fiziksel RPi, CPU2/CPU3, hotplug, soak ve Generic SMP açıktır.",
      "S240 fiziksel/device operasyonu yapmadı; RUNBOOK_EXECUTED_IN_S240=NO.",
    ],
  },
snippet sha256: 0a9369578267file sha256: 9726dbf00f84
Focused test komutu
cargo test --quiet -p aselsan_microkernel_simulation --test g8l_target_dispatch_scheduler_owner_scheduler_mutation_production_migration_lifecycle_s179_execution_caller_notification_delivery_dispatch_receipt -- --test-threads=1
proof: docs/M8.1-RPi5-G8l-S240-Migration-Lifecycle-S179-Execution-Caller-Notification-Delivery-Dispatch-Receipt-Proof.md
Registry schema v5 · generator website/scripts/generate-code-gates.mjs · Tam SHA-256: 3050638b71a684d8f8f947a8a6faa237a17fa8db5dc0db04fb207b668b462af9