From cab966e76c46d9a6eae343ba8bb5bf564d1ee24b Mon Sep 17 00:00:00 2001 From: Ryan Breen Date: Mon, 7 Sep 2026 22:30:58 -0400 Subject: [PATCH 1/2] sched: bound pinned wake scans by outstanding home holds Keep per-CPU reachability credits separate from cumulative failures. Retire delivered and discarded credits under the scheduler lock and guard scan entry on the local balance. Add source ratchets and extracted-method before/after probes covering the guard, balance and discard dispositions. Co-authored-by: Ryan Breen Co-authored-by: Claude Code --- kernel/src/task/scheduler.rs | 58 +++++++--- tests/loopback_pump_structure.rs | 175 +++++++++++++++++++++++++++++++ 2 files changed, 218 insertions(+), 15 deletions(-) diff --git a/kernel/src/task/scheduler.rs b/kernel/src/task/scheduler.rs index 25985ce52..f60f21900 100644 --- a/kernel/src/task/scheduler.rs +++ b/kernel/src/task/scheduler.rs @@ -447,6 +447,12 @@ fn try_lock_scheduler() -> Option>> pub static PINNED_HOME_CPU_UNAVAILABLE: core::sync::atomic::AtomicU64 = core::sync::atomic::AtomicU64::new(0); +/// Reachability credits for wakes parked on each home CPU, under the scheduler +/// lock. Unlike the cumulative failure census, these credits retire on delivery +/// or when a completed home scan finds that another path consumed the wake. +static PINNED_HOLDS_OUTSTANDING: [core::sync::atomic::AtomicU64; MAX_CPUS] = + [const { core::sync::atomic::AtomicU64::new(0) }; MAX_CPUS]; + /// Pins rejected at publication because the CPU they named is outside the /// online range -- counted here, where slice 3c discarded them in silence. /// @@ -571,13 +577,17 @@ static PINNED_HOME_CPU_UNAVAILABLE_MARKED: AtomicBool = AtomicBool::new(false); /// the 4 gate legs that score it are in tests/loopback_pump_structure.rs pub fn emit_pinned_placement_census() { crate::serial_println!( - "[PINNED_HOME_CPU_UNAVAILABLE:count={}:publish_discarded={}:hold_pen_migrated={}:delivered={}:migration_refused={}:stack_home_conflict={}]", + "[PINNED_HOME_CPU_UNAVAILABLE:count={}:publish_discarded={}:hold_pen_migrated={}:delivered={}:migration_refused={}:stack_home_conflict={}]\n[PINNED_HOLDS_OUTSTANDING:count={}]", PINNED_HOME_CPU_UNAVAILABLE.load(Ordering::Relaxed), PINNED_PUBLISH_DISCARDED.load(Ordering::Relaxed), PINNED_HOLD_PEN_MIGRATED.load(Ordering::Relaxed), PINNED_WAKES_DELIVERED.load(Ordering::Relaxed), PINNED_MIGRATION_REFUSED.load(Ordering::Relaxed), PINNED_STACK_HOME_CONFLICT.load(Ordering::Relaxed), + PINNED_HOLDS_OUTSTANDING + .iter() + .map(|count| count.load(Ordering::Relaxed)) + .sum::(), ); } @@ -4745,6 +4755,18 @@ impl Scheduler { /// that cleared one would leave the other naming a CPU the thread is not /// pinned to. fn hold_pinned_wake_for_home(&self, thread_id: u64) { + let home = self + .get_thread(thread_id) + .and_then(|thread| thread.cpu_affinity) + .map(|pin| pin.cpu) + .unwrap_or(usize::MAX); + if home < MAX_CPUS { + let _ = PINNED_HOLDS_OUTSTANDING[home].fetch_update( + Ordering::Relaxed, + Ordering::Relaxed, + |count| Some(count.saturating_add(1)), + ); + } let holds = PINNED_HOME_CPU_UNAVAILABLE.fetch_add(1, Ordering::Relaxed) + 1; if !PINNED_HOME_CPU_UNAVAILABLE_MARKED.swap(true, Ordering::Relaxed) { // Raw serial, one shot: this runs under the scheduler lock with @@ -4752,11 +4774,6 @@ impl Scheduler { // tid and its home CPU are on the line because "something got held" // is not actionable and "this worker's home stopped dispatching" // is. - let home = self - .get_thread(thread_id) - .and_then(|thread| thread.cpu_affinity) - .map(|pin| pin.cpu) - .unwrap_or(usize::MAX); crate::tracing::output::raw_serial_str("[PINNED_HOME_CPU_UNAVAILABLE:first:tid="); crate::tracing::output::raw_serial_dec(thread_id); crate::tracing::output::raw_serial_str(":home="); @@ -4819,18 +4836,15 @@ impl Scheduler { /// wake to rescue it -- which matters, because the wake that was refused /// may have been the only one its waiter was ever going to get. /// - /// The early return reads a counter with 1 writer, a `fetch_add`, so it can - /// skip the scan only on a boot where 0 holds have happened -- which is - /// what a healthy boot is. Once one has, the scan runs on each scheduler - /// entry, and the gate is already red. - /// claim-lint:ok: 1 of 1 writer of `PINNED_HOME_CPU_UNAVAILABLE` is the - /// `fetch_add` in `hold_pinned_wake_for_home`; 3 of 3 strict boots and 3 of - /// 3 production boots at this head read it at 0 + /// The per-CPU credit guard bounds scans to scheduler entries with pending + /// holds on this CPU, including in the shipped no-feature profile. A full + /// pass retires credits for wakes delivered here or consumed elsewhere. + /// The scheduler lock excludes concurrent holds during this reconciliation. fn deliver_pinned_wakes_for_this_cpu(&mut self) { - if PINNED_HOME_CPU_UNAVAILABLE.load(Ordering::Relaxed) == 0 { + let cpu = Self::current_cpu_id(); + if PINNED_HOLDS_OUTSTANDING[cpu].load(Ordering::Relaxed) == 0 { return; } - let cpu = Self::current_cpu_id(); let mut index = 0; while index < self.threads.len() { let tid = self.threads[index].id(); @@ -4840,8 +4854,22 @@ impl Scheduler { } self.per_cpu_queues[cpu].push_back(tid); PINNED_WAKES_DELIVERED.fetch_add(1, Ordering::Relaxed); + let _ = PINNED_HOLDS_OUTSTANDING[cpu].fetch_update( + Ordering::Relaxed, + Ordering::Relaxed, + |count| Some(count.saturating_sub(1)), + ); ENQUEUE_SAME_LOCK_OK.fetch_add(1, Ordering::Relaxed); } + // A completed pass has placed the eligible wakes. Remaining credits + // represent duplicate holds or wakes requeued, terminated, unpinned or + // removed by other paths; discard those credits without consuming a wake. + let discarded = PINNED_HOLDS_OUTSTANDING[cpu].load(Ordering::Relaxed); + let _ = PINNED_HOLDS_OUTSTANDING[cpu].fetch_update( + Ordering::Relaxed, + Ordering::Relaxed, + |count| Some(count.saturating_sub(discarded)), + ); } /// Keep a CPU-pinned thread on the CPU its pin names, instead of letting a diff --git a/tests/loopback_pump_structure.rs b/tests/loopback_pump_structure.rs index 7cac11a1d..4ef38d96e 100644 --- a/tests/loopback_pump_structure.rs +++ b/tests/loopback_pump_structure.rs @@ -4314,6 +4314,7 @@ const MAX_CPUS: usize = 4; const CPU_STALL_TICKS: u64 = 20; const PIN_GUARD_ORACLE_HELD: usize = 255; static PINNED_HOME_CPU_UNAVAILABLE: AtomicU64 = AtomicU64::new(0); +static PINNED_HOLDS_OUTSTANDING: [AtomicU64; MAX_CPUS] = [const { AtomicU64::new(0) }; MAX_CPUS]; static PINNED_HOME_CPU_UNAVAILABLE_MARKED: AtomicBool = AtomicBool::new(false); static PINNED_PUBLISH_DISCARDED: AtomicU64 = AtomicU64::new(0); static PINNED_HOLD_PEN_MIGRATED: AtomicU64 = AtomicU64::new(0); @@ -4842,3 +4843,177 @@ fn loopback_wake_budget_emitter_validator_rejects_the_unavailable_collapse() { "reintroducing an idle_cpus print with no availability flag must redden the validator" ); } + + +// PR 2b: discover the reachability array through its incrementing writer, +// then pin the entry guard and the delivery/discard balance by function shape. +fn validate_pinned_scan_bound(source: &str) -> Result<(), String> { + let hold = compact_code(function_body(source, "hold_pinned_wake_for_home").ok_or("missing hold")?); + let write = hold.find("[home].fetch_update(").ok_or("missing home increment")?; + let name = hold[..write].rsplit(|c: char| !c.is_ascii_alphanumeric() && c != '_').next().ok_or("missing counter")?; + if name.is_empty() || !hold.contains("|count|Some(count.saturating_add(1))") { + return Err("hold increment must saturate".into()); + } + let source_code = compact_code(source); + if !source_code.contains(&format!("{name}:[core::sync::atomic::AtomicU64;MAX_CPUS]=[const{{core::sync::atomic::AtomicU64::new(0)}};MAX_CPUS]")) { + return Err("counter must size itself to MAX_CPUS".into()); + } + let delivery = compact_code(function_body(source, "deliver_pinned_wakes_for_this_cpu").ok_or("missing delivery")?); + let guard = format!("letcpu=Self::current_cpu_id();if{name}[cpu].load(Ordering::Relaxed)==0{{return;}}letmutindex=0;whileindex RED"); + } + let delivery = function_body(&source, "deliver_pinned_wakes_for_this_cpu").unwrap(); + let start = delivery.find(" let _ = PINNED_HOLDS_OUTSTANDING[cpu].fetch_update(").unwrap(); + let end = start + delivery[start..].find(" ENQUEUE_SAME_LOCK_OK").unwrap(); + let decrement_statement = &delivery[start..end]; + let moved = delivery.replace(decrement_statement, "").replace(" let mut index = 0;", &format!("{decrement_statement} let mut index = 0;")); + assert!(validate_pinned_scan_bound(&source.replacen(delivery, &moved, 1)).is_err()); + println!("pinned-scan mutation: unconditional decrement -> RED"); + validate_pinned_scan_bound(&source.replace("PINNED_HOLDS_OUTSTANDING", "RENAMED_HOLD_CREDITS")).unwrap(); + assert!(validate_pinned_scan_bound(&source.replacen(delivery, &delivery.replace(decrement_statement, ""), 1)).is_err()); + println!("pinned-scan mutation: delete decrement statement -> RED"); +} + +// Execute the production hold, predicate and delivery bodies with isolated +// scheduler state. The walk meter is injected in the extracted loop, so the +// probe exercises the source without adding instrumentation to the hot path. +fn forced_pinned_scan_probe(baseline: bool) { + let source = if baseline { + let output = std::process::Command::new("git").args(["show", "58af1a7f:kernel/src/task/scheduler.rs"]).output().unwrap(); + assert!(output.status.success()); + String::from_utf8(output.stdout).unwrap() + } else { repo_text("kernel/src/task/scheduler.rs") }; + if baseline { assert!(validate_pinned_scan_bound(&source).is_err()); } + let mut harness = String::from(r#" +use std::sync::atomic::{AtomicBool, AtomicU64, AtomicUsize, Ordering}; +use std::collections::VecDeque; +const MAX_CPUS: usize = 8; +static PINNED_HOME_CPU_UNAVAILABLE: AtomicU64 = AtomicU64::new(0); +static PINNED_HOME_CPU_UNAVAILABLE_MARKED: AtomicBool = AtomicBool::new(false); +static PINNED_HOLDS_OUTSTANDING: [AtomicU64; MAX_CPUS] = [const { AtomicU64::new(0) }; MAX_CPUS]; +static PINNED_WAKES_DELIVERED: AtomicU64 = AtomicU64::new(0); +static ENQUEUE_SAME_LOCK_OK: AtomicU64 = AtomicU64::new(0); +static CPU: AtomicUsize = AtomicUsize::new(0); +static WALKS: AtomicU64 = AtomicU64::new(0); +mod tracing { pub mod output { pub fn raw_serial_str(s: &str) { print!("{s}"); } pub fn raw_serial_dec(n: u64) { print!("{n}"); } } } +#[derive(Clone, Copy, PartialEq)] enum ThreadState { Ready, Terminated } +#[derive(Clone, Copy)] struct CpuPin { cpu: usize, per_cpu_worker: bool } +struct Thread { state: ThreadState, cpu_affinity: Option } +impl Thread { fn id(&self) -> u64 { 7 } } +struct CpuState { current_thread: Option, previous_thread: Option, pending_next: Option } +struct Scheduler { per_cpu_queues: [VecDeque; MAX_CPUS], cpu_state: [CpuState; MAX_CPUS], threads: Vec } +impl Scheduler { +fn current_cpu_id() -> usize { CPU.load(Ordering::Relaxed) } +fn get_thread(&self, tid: u64) -> Option<&Thread> { self.threads.iter().find(|thread| thread.id() == tid) } +"#); + for (name, signature) in [ + ("hold_pinned_wake_for_home", "fn hold_pinned_wake_for_home(&self, thread_id: u64)"), + ("pinned_wake_is_waiting_here", "fn pinned_wake_is_waiting_here(&self, tid: u64, cpu: usize) -> bool"), + ("deliver_pinned_wakes_for_this_cpu", "fn deliver_pinned_wakes_for_this_cpu(&mut self)"), + ] { + let body = function_body(&source, name).unwrap() + .replace("#[cfg(target_arch = \"aarch64\")]", "#[cfg(any())]") + .replace("while index < self.threads.len() {", "while index < self.threads.len() { WALKS.fetch_add(1, Ordering::Relaxed);"); + harness.push_str(&format!("{signature} {body}\n")); + } + harness.push_str("}\n"); + harness.push_str(&format!("const BASELINE: bool = {baseline};\n")); + harness.push_str(r#" +fn main() { + let mut s = Scheduler { + per_cpu_queues: std::array::from_fn(|_| VecDeque::new()), + cpu_state: std::array::from_fn(|_| CpuState { current_thread: None, previous_thread: None, pending_next: None }), + threads: vec![Thread { state: ThreadState::Ready, cpu_affinity: Some(CpuPin { cpu: 1, per_cpu_worker: true }) }], + }; + s.hold_pinned_wake_for_home(7); + assert_eq!(PINNED_HOME_CPU_UNAVAILABLE.load(Ordering::Relaxed), 1); + assert_eq!(PINNED_HOLDS_OUTSTANDING[0].load(Ordering::Relaxed), 0); + if !BASELINE { assert_eq!(PINNED_HOLDS_OUTSTANDING[1].load(Ordering::Relaxed), 1); } + for _ in 0..128 { s.deliver_pinned_wakes_for_this_cpu(); } + let peer_walks = WALKS.load(Ordering::Relaxed); + assert_eq!(peer_walks, if BASELINE { 128 } else { 0 }); + CPU.store(1, Ordering::Relaxed); + s.deliver_pinned_wakes_for_this_cpu(); + assert_eq!(s.per_cpu_queues[1].front(), Some(&7)); + assert_eq!(PINNED_WAKES_DELIVERED.load(Ordering::Relaxed), 1); + assert_eq!(PINNED_HOLDS_OUTSTANDING[1].load(Ordering::Relaxed), 0); + let before = WALKS.load(Ordering::Relaxed); + for _ in 0..128 { s.deliver_pinned_wakes_for_this_cpu(); } + let after_walks = WALKS.load(Ordering::Relaxed) - before; + assert_eq!(after_walks, if BASELINE { 128 } else { 0 }); + assert_eq!(PINNED_HOME_CPU_UNAVAILABLE.load(Ordering::Relaxed), 1); + println!("PINNED_SCAN_ORACLE baseline={} held_delta=1 delivered_delta=1 outstanding_home=0 peer_entries=128 peer_walk_delta={} after_entries=128 after_walk_delta={} verdict={}", BASELINE, peer_walks, after_walks, if BASELINE { "RED" } else { "PASS" }); + // Requeue, termination, pin clear, removal and repeated hold dispositions. + for disposition in 0..5 { + s.per_cpu_queues[1].clear(); + s.threads = vec![Thread { state: ThreadState::Ready, cpu_affinity: Some(CpuPin { cpu: 1, per_cpu_worker: true }) }]; + s.hold_pinned_wake_for_home(7); + match disposition { + 0 => s.per_cpu_queues[1].push_back(7), + 1 => s.threads[0].state = ThreadState::Terminated, + 2 => s.threads[0].cpu_affinity = None, + 3 => s.threads.clear(), + _ => s.hold_pinned_wake_for_home(7), + } + s.deliver_pinned_wakes_for_this_cpu(); + assert_eq!(PINNED_HOLDS_OUTSTANDING[1].load(Ordering::Relaxed), 0); + } + println!("discard dispositions=5 outstanding_home=0 PASS"); +} +"#); + let scratch = std::env::temp_dir().join(format!("pinned-scan-probe-{}-{baseline}", std::process::id())); + fs::create_dir_all(&scratch).unwrap(); + let input = scratch.join("probe.rs"); let binary = scratch.join("probe"); + // The after leg doubles the model's CPU capacity using the same inline-const array. + if !baseline { harness = harness.replace("const MAX_CPUS: usize = 8;", "const MAX_CPUS: usize = 16;"); } + fs::write(&input, harness).unwrap(); + let build = std::process::Command::new("rustc").args(["--edition=2021", "-Dwarnings"]).arg(&input).arg("-o").arg(&binary).output().unwrap(); + assert!(build.status.success(), "{}", String::from_utf8_lossy(&build.stderr)); + let run = std::process::Command::new(&binary).output().unwrap(); + println!("{}", String::from_utf8_lossy(&run.stdout)); + assert!(run.status.success(), "{}", String::from_utf8_lossy(&run.stderr)); + fs::remove_dir_all(scratch).unwrap(); +} + +#[test] +fn forced_pinned_scan_before() { forced_pinned_scan_probe(true); } +#[test] +fn forced_pinned_scan_after() { forced_pinned_scan_probe(false); } From f5179dc2d319beb04835097aff5810fab96a8633 Mon Sep 17 00:00:00 2001 From: Ryan Breen Date: Mon, 7 Sep 2026 22:51:15 -0400 Subject: [PATCH 2/2] Document PR 2b pinned wake scan evidence Record refreshed source citations, the forced scan delta and mutation results, architecture gate transcripts, the Beast preflight timeout, and the bounded scope of the scan accounting change. Co-authored-by: Ryan Breen Co-authored-by: Claude Code --- .../aarch64-testing/3F-PR2B-2026-09-07.md | 263 ++++ .../serials/3f-pr2b/.gitattributes | 2 + .../serials/3f-pr2b/01-structure.txt | 69 ++ .../serials/3f-pr2b/02-build-arm.txt | 48 + .../serials/3f-pr2b/03-mutations-oracle.txt | 28 + .../serials/3f-pr2b/04-census-correction.txt | 20 + .../serials/3f-pr2b/05-build-final.txt | 5 + .../serials/3f-pr2b/06-structure-final.txt | 69 ++ .../serials/3f-pr2b/07-citations.txt | 46 + .../serials/3f-pr2b/08-code-claim-lint.txt | 7 + .../serials/3f-pr2b/09-strict.txt | 129 ++ .../serials/3f-pr2b/10-service.txt | 194 +++ .../serials/3f-pr2b/11-citation-check.txt | 26 + .../serials/3f-pr2b/12-arm-census-audit.txt | 8 + .../3f-pr2b/13-x86-preflight-timeout.txt | 209 ++++ .../serials/3f-pr2b/14-production.txt | 126 ++ .../serials/3f-pr2b/15-mac-cleanup.txt | 3 + .../serials/3f-pr2b/16-x86-retry.txt | 243 ++++ .../serials/3f-pr2b/17-x86-qmp-failure.txt | 37 + .../serials/3f-pr2b/18-docs-claim-lint.txt | 14 + .../aarch64-testing/serials/3f-pr2b/README.md | 27 + .../serials/3f-pr2b/SHA256SUMS | 46 + .../3f-pr2b/beast-preflight-logs.tar.gz | Bin 0 -> 69678 bytes .../serials/3f-pr2b/beast-revision.txt | 10 + .../serials/3f-pr2b/code-commit-message.txt | 9 + .../serials/3f-pr2b/docs-commit-message.txt | 8 + .../serials/3f-pr2b/mac-preflight-logs.tar.gz | Bin 0 -> 179369 bytes .../serials/3f-pr2b/production-facts.txt | 3 + .../serials/3f-pr2b/production-revision.txt | 6 + .../serials/3f-pr2b/production-serial.txt | 416 +++++++ .../serials/3f-pr2b/service-revision.txt | 5 + .../3f-pr2b/service/cortex-a72/census.tsv | 3 + .../service/cortex-a72/serial-1.qmp.txt | 1 + .../3f-pr2b/service/cortex-a72/serial-1.txt | 1079 ++++++++++++++++ .../service/cortex-a72/serial-2.qmp.txt | 1 + .../3f-pr2b/service/cortex-a72/serial-2.txt | 1078 ++++++++++++++++ .../serials/3f-pr2b/service/max/census.tsv | 3 + .../3f-pr2b/service/max/serial-1.qmp.txt | 1 + .../serials/3f-pr2b/service/max/serial-1.txt | 1063 ++++++++++++++++ .../3f-pr2b/service/max/serial-2.qmp.txt | 1 + .../serials/3f-pr2b/service/max/serial-2.txt | 1080 +++++++++++++++++ .../serials/3f-pr2b/strict-boot1-facts.txt | 4 + .../serials/3f-pr2b/strict-boot1-serial.txt | 936 ++++++++++++++ .../serials/3f-pr2b/strict-boot2-facts.txt | 4 + .../serials/3f-pr2b/strict-boot2-serial.txt | 905 ++++++++++++++ .../serials/3f-pr2b/strict-boot3-facts.txt | 4 + .../serials/3f-pr2b/strict-boot3-serial.txt | 915 ++++++++++++++ .../serials/3f-pr2b/strict-revision.txt | 4 + 48 files changed, 9158 insertions(+) create mode 100644 docs/planning/green-program/aarch64-testing/3F-PR2B-2026-09-07.md create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/.gitattributes create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/01-structure.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/02-build-arm.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/03-mutations-oracle.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/04-census-correction.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/05-build-final.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/06-structure-final.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/07-citations.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/08-code-claim-lint.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/09-strict.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/10-service.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/11-citation-check.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/12-arm-census-audit.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/13-x86-preflight-timeout.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/14-production.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/15-mac-cleanup.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/16-x86-retry.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/17-x86-qmp-failure.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/18-docs-claim-lint.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/README.md create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/SHA256SUMS create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-preflight-logs.tar.gz create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-revision.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/code-commit-message.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/docs-commit-message.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/mac-preflight-logs.tar.gz create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-facts.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-revision.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-serial.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service-revision.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/census.tsv create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-1.qmp.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-1.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-2.qmp.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-2.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/census.tsv create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-1.qmp.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-1.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-2.qmp.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-2.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot1-facts.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot1-serial.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot2-facts.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot2-serial.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot3-facts.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot3-serial.txt create mode 100644 docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-revision.txt diff --git a/docs/planning/green-program/aarch64-testing/3F-PR2B-2026-09-07.md b/docs/planning/green-program/aarch64-testing/3F-PR2B-2026-09-07.md new file mode 100644 index 000000000..fafdd23b1 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/3F-PR2B-2026-09-07.md @@ -0,0 +1,263 @@ +# Slice 3f PR 2b — pinned wake scan bound, 2026-09-07 + +Branch: `sched/3f-pr2b-pinned-wake-scan-bound`. Starting HEAD: +`58af1a7fb63e144586b6eef06e47be178eb175d5`. Code and ratchets: +`cab966e76c46d9a6eae343ba8bb5bf564d1ee24b`. Subsequent changes in this round +are evidence and documentation. Evidence directory: +`docs/planning/green-program/aarch64-testing/serials/3f-pr2b/`. + +## Premise and citation refresh + +PLAN-3F-CHAIN sections 0.2 and 2.1–2.5 were read in the supplied scratchpad. +Its line numbers were re-derived from starting HEAD, then from the code +commit. PR 942 is the merge `70aec756`; the starting revision also includes +the subsequent work named in the brief: 947, 949, 950, 951, 953 and 962. +The implementation citations below refer to `cab966e7`, not the plan's +`72ad554d`. The source bytes are unchanged by the evidence commit. + +| Subject | Starting HEAD citation | Code-commit citation | +| --- | --- | --- | +| Ungated cumulative hold static | `kernel/src/task/scheduler.rs:447` | `kernel/src/task/scheduler.rs:447` | +| Ungated delivery static | `kernel/src/task/scheduler.rs:493` | `kernel/src/task/scheduler.rs:499` | +| Scheduler entry calls | `kernel/src/task/scheduler.rs:2348`, `kernel/src/task/scheduler.rs:2879` | `kernel/src/task/scheduler.rs:2358`, `kernel/src/task/scheduler.rs:2889` | +| Hold / cumulative writer | `kernel/src/task/scheduler.rs:4747`, `kernel/src/task/scheduler.rs:4748` | `kernel/src/task/scheduler.rs:4757`, `kernel/src/task/scheduler.rs:4770` | +| Derived waiting predicate | `kernel/src/task/scheduler.rs:4783` | `kernel/src/task/scheduler.rs:4800` | +| Delivery / entry guard | `kernel/src/task/scheduler.rs:4829`, `kernel/src/task/scheduler.rs:4830` | `kernel/src/task/scheduler.rs:4843`, `kernel/src/task/scheduler.rs:4845` | +| Delivery increment | `kernel/src/task/scheduler.rs:4842` | `kernel/src/task/scheduler.rs:4856` | +| Normal-context census emitter | `kernel/src/task/scheduler.rs:572` | `kernel/src/task/scheduler.rs:578` | + +At starting HEAD, `kernel/src/task/scheduler.rs:4830` reads +`PINNED_HOME_CPU_UNAVAILABLE.load(Ordering::Relaxed) == 0`. The static, +delivery function, and `schedule` are ungated; `schedule_deferred_requeue` +has an architecture gate but no feature gate. The cumulative writer at +`kernel/src/task/scheduler.rs:4748` increments without retiring holds. +Consequently, a single hold arms the thread scan on subsequent scheduler +entries in the shipped no-feature profile. The predicate additionally +examines ready queues, CPU current/previous/pending slots and, on aarch64, +deferred requeue. This is a source-shape cost finding, not a cycle measurement. + +The production census call is `kernel/src/main_aarch64.rs:1446`; the sampled +call is `kernel/src/task/strand_oracle.rs:478`, whose file is boot-tests gated +at `kernel/src/task/strand_oracle.rs:3`. The production wrapper remains +`kernel/src/task/kthread.rs:70`, calling `spawn_on_cpu` at +`kernel/src/task/kthread.rs:79`; the definition is now +`kernel/src/task/scheduler.rs:5572`. The source search found that wrapper +call and no production call to the wrapper. The pin's per-CPU-state contract +is still `kernel/src/task/thread.rs:627`, and `CPU_PINS_STAMPED` remains at +`kernel/src/task/thread.rs:667`. Thus PR 4b remains the planned first +production worker pin; the bound is useful before that exposure. + +PR 2b stays between PR 2 and PR 4a in the chain. PR 2 handles placement at +five rescue/steal sites; this change handles hold credit balance and scan +entry. Keeping it separate from PR 4b keeps the first production pin and its +census acceptance distinct from this accounting change. + +## Implementation and scope + +`kernel/src/task/scheduler.rs:453` defines an inline-const array sized by +`MAX_CPUS`, as already used at `kernel/src/task/scheduler.rs:402` and +`kernel/src/task/percpu_stack_oracle.rs:328`. The hold resolves the home +unconditionally and bounds the index before its saturating increment at +`kernel/src/task/scheduler.rs:4764`. Delivery reads this CPU's slot before +entering the loop, then saturating-decrements beside the delivered increment +at `kernel/src/task/scheduler.rs:4857`. + +The brief explicitly requires retiring discarded holds. This extends the +plan's proposed residue handling: after completing the thread pass, the +same function retires remaining credits at `kernel/src/task/scheduler.rs:4867`. +At that point eligible wakes have been enqueued. A remaining credit is a +duplicate hold or a wake requeued, terminated, unpinned or removed elsewhere. +The scheduler lock excludes concurrent holds during the pass. This does not +remove thread state or consume a wake; no side list or sweep of other CPUs is +introduced. There are two saturating lowering sites in the delivery function, +for delivery and completed-pass discard, rather than the plan's delivery-only +site. Saturating arithmetic avoids unsigned wraparound. + +The new array is a *reachability* counter, not a cumulative failure census +field. Its aggregate is published as a separate bracketed line by the existing +census emitter at `kernel/src/task/scheduler.rs:580`, using the existing +serial macro call. The cumulative failure literal remains the one scored at +`docker/qemu/run-aarch64-boot-test-strict.sh:307` and +`docker/qemu/run-aarch64-prod-profile-boot-test.sh:175`; no failure count is +subtracted to make a boot pass. + +With no local credit, the new entry work is the CPU lookup, one relaxed load +and a comparison. A hold adds the home lookup, bounds comparison and relaxed +atomic update. Delivery adds a relaxed atomic update per eligible wake and a +load/update at completed-pass discard. Existing queue insertion remains in +place. No new lock, allocation or formatting is added to hold/delivery paths. +The additional formatting is in the existing normal-context census emitter. + +`scheduler.rs` is not Tier 2. Neither `context_switch.rs` nor `per_cpu.rs` was +edited; a Tier-2 change would be permitted only where its own defect lives. +The source change touches one kernel file, with no Tier-1 or Tier-2 edits. +The pre-existing one-shot hold marker remains; no hot-path logging was added. + +## Ratchets and forced oracle + +`tests/loopback_pump_structure.rs:4850` discovers the counter from the hold's +writer and checks the array shape, per-CPU guard dominating loop entry, +delivery-branch decrement and completed-pass discard. Rename-together is +GREEN. The extracted after-probe doubles its model CPU capacity from 8 to 16, +using the inline-const array, and compiles with `-Dwarnings`. + +`serials/3f-pr2b/03-mutations-oracle.txt` records RED for guard deletion, +replacing the guard with the cumulative counter, decrement removal (including +the complete statement), non-saturating decrement, increment removal, +unconditional decrement and discard removal. Mutations are in-memory strings; +none is installed in the kernel source before a gate. The validator also +rejects the unmodified starting revision. + +The forced oracle in `tests/loopback_pump_structure.rs:4918` extracts the +production hold, predicate and delivery methods into isolated scheduler state, +following the PR 2 extraction harness at +`tests/loopback_pump_structure.rs:4307`. A walk meter is inserted into the +extracted loop. This is a host execution probe, not a new live boot-tests +kthread and does not exercise cross-CPU hardware dispatch. Its intentional hold stays +out of the boot's cumulative failure counters; it does not subtract an oracle +delta from them. + +The before/after readings in `serials/3f-pr2b/03-mutations-oracle.txt` are: + +```text +PINNED_SCAN_ORACLE baseline=true held_delta=1 delivered_delta=1 outstanding_home=0 peer_entries=128 peer_walk_delta=128 after_entries=128 after_walk_delta=128 verdict=RED +PINNED_SCAN_ORACLE baseline=false held_delta=1 delivered_delta=1 outstanding_home=0 peer_entries=128 peer_walk_delta=0 after_entries=128 after_walk_delta=0 verdict=PASS +``` + +The baseline's outstanding field is an unused harness slot, since that +revision has no outstanding counter. In the after leg it is the source's +actual accounting slot: home rises to 1, peer remains 0, delivery increments +by 1, home returns to 0, and the cumulative hold count remains 1 during the +128 subsequent entries. Five additional dispositions cover requeue, +termination, pin clear, removal and duplicate holds. + +## Gate record + +The first standalone structure run was 65/66, attributable to adding a second +serial macro call in `emit_pinned_placement_census`. Its pinned logging ledger +expected one. The emitter was corrected to one call emitting two lines, +without relaxing the ledger. The targeted correction passed, then the +standalone full suite was rerun because source changed: 66/66 at `cab966e7`. +This was a development correction, not a replay of a failed boot. + +The initial and final ARM builds passed; their only warning-shaped output +was the accepted nightly-2025-06-24 `core` build-std future-incompatibility +notice, per 559, 945 and +`docs/planning/green-program/gates/CRITICAL-PATH-DEBT-PR1-2026-09-06.md`. +No project warning was suppressed. `rustfmt --check --edition 2021 +kernel/src/task/scheduler.rs` and `git diff --check` exited 0. + +| Command at `cab966e7` | Result | Transcript | +| --- | --- | --- | +| `bash scripts/run-structure-tests.sh` after emitter correction | 66/66 suites, exit 0 | `serials/3f-pr2b/06-structure-final.txt` | +| `bash docker/qemu/run-aarch64-boot-test-strict.sh 3` | 3/3 boots, exit 0 | `serials/3f-pr2b/09-strict.txt` | +| `bash docker/qemu/run-aarch64-service-sequence-gate.sh --boots 2` | max 2/2 and cortex-a72 2/2, exit 0 | `serials/3f-pr2b/10-service.txt` | + +The seven ARM boot serials were independently checked for the new counter, +one passing pin-guard oracle per boot and absent first-hold markers; see +`serials/3f-pr2b/12-arm-census-audit.txt`. The new counter was 0 in 36 +samples (12 strict, 24 service). The gate transcripts carry their source +revision; raw serial bytes have adjacent revision records. + +The first Beast preflight timed out `context_restore_structure` at 300 seconds, +with host load 15.62 (15.50/9.52 over the longer windows); 65 other suites had +completed. Before a kernel build or QEMU boot, the lane's launcher and its +identified descendants were stopped by PID. The timeout transcript is +`serials/3f-pr2b/13-x86-preflight-timeout.txt`. As directed, the gate was +relaunched once with `BREENIX_STRUCTURE_SUITE_TIMEOUT_SECS=900`. No structure +skip was set. The built-in 600-second suite retry was interrupted as part of +stopping that first preflight, not counted as a completed run. + +The production gate was the final gate invocation and final Mac kernel build, +after strict and both service profiles completed. The separate Beast retry +continued concurrently; its build cannot overwrite the Mac kernel. The brief's +single production invocation supersedes the older plan's three production boots. + +Production passed its 66/66 structure preflight, built the shipped no-feature +kernel, and reached bsshd with the futex oracle seam absent (exit 0), recorded +in `serials/3f-pr2b/14-production.txt`. This was one invocation and one boot. +The raw production census at +`serials/3f-pr2b/production-serial.txt:176` and +`serials/3f-pr2b/production-serial.txt:177` reads: + +```text +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +``` + +The production serial contains 0 pin-guard oracle lines and 0 first-hold +markers, checked in `serials/3f-pr2b/production-revision.txt`. +The original cumulative literal and the reachability line are separate: +retiring a credit does not erase a historical failure. + +**Round stopped: UNATTRIBUTED x86 preflight red, tracked in issue 963.** +The retry finished at 65/66 suites. `context_restore_structure` passed in +368 seconds, but +`tests/gate_qmp_backstop_structure.rs::missing_socket_and_hung_dump_are_partial_and_bounded` +failed at `tests/gate_qmp_backstop_structure.rs:474` with `hang must reach dump`. +The test reported socat present, accepted the timeout result and elapsed +bound, then failed its actual dump-command receipt assertion. The failing +suite and `docker/qemu/lib/gate-qmp-backstop.sh` have no changes from +`58af1a7f` in this branch. This is not one of the plan's pre-adjudicated boot +signatures (555 softirq, 536 timer_delay, 576 EL1 NULL-PC, 586 +loopback_wake_test_child:15). It is not attributed to 871: the failure log +contains no SCSI/IO failure signature. + +The x86 gate exited 1 before its kernel build and QEMU boot. **x86 kernel +compilation and boot are unverified in this round.** The userspace preparation +completed; the retry repeated its cached preparation because the setup check +still found no `userspace/programs/x86_64/*.elf`. This is not kernel build +evidence. No third gate invocation was made, no criterion was weakened, and +no unrelated fixture change was folded into PR 2b. Evidence is +`serials/3f-pr2b/16-x86-retry.txt`, +`serials/3f-pr2b/17-x86-qmp-failure.txt` and +`serials/3f-pr2b/beast-preflight-logs.tar.gz`. + +Follow-up is [issue 963](https://github.com/ryanbreen/breenix/issues/963). +Repair or attribute that fixture's failed dump leg, then resume x86 acceptance. +The branch is submitted as a draft with this gate red, not merge-ready. +Mac and Beast lane QEMU process counts were checked at 0; cleanup used only +identified lane PIDs, with no name-based killing. + +## Chips and claim discipline + +| Chip | Before | Removed | After | Scope | +| --- | --- | --- | --- | --- | +| PR 2b claimed chips | 0 | 0 | 0 | Scan accounting only; no worker pin or issue credit | + +claim-lint: python3 scripts/claim-lint.py -> exit 0 +claim-lint: python3 scripts/claim-lint.py --commit-msg .tmp/code-commit.txt -> exit 0 + +These are the checks immediately before `cab966e7`; the transcript is +`serials/3f-pr2b/08-code-claim-lint.txt`, and its message is retained as +`serials/3f-pr2b/code-commit-message.txt`. + +## NOT claimed + +- That the scan is eliminated: a CPU with an outstanding hold still scans. +- That the residue described in plan section 2.3 is bounded in wall-clock time: + discard reconciliation requires that home CPU to enter the scheduler. +- That cost was measured in cycles: this round measures source-extracted walks + and enumerates operations, without a cycle-count experiment. +- That PR 2b is required before PR 4a: its prerequisite relationship is to + PR 4b, the planned first production pin. +- That the extracted oracle establishes hardware dispatch, SGI delivery or a live + boot's forced pinned-wake recovery. Those are outside its model. + + +claim-lint: python3 scripts/claim-lint.py -> exit 0 +claim-lint: python3 scripts/claim-lint.py --commit-msg .tmp/docs-commit.txt -> exit 0 + +These are the evidence-commit checks; its message is retained in +`serials/3f-pr2b/docs-commit-message.txt`. The tree lint checks changed text +hunks; compressed logs and TSV files are outside its supported extensions. +The final handoff rechecks that the kernel and ratchet blobs match `cab966e7` +and re-derives the quoted source lines after the documentation commit. + +Git initially normalized CRLF serial bytes while staging the evidence. The +same evidence commit was amended with a directory-local `.gitattributes` +(`*.txt -text`), and the committed blob checksums were checked against the +raw working files and `SHA256SUMS`. This changed no kernel or test source. + +claim-lint: python3 scripts/claim-lint.py -> exit 0 +claim-lint: python3 scripts/claim-lint.py --commit-msg .tmp/docs-commit.txt -> exit 0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/.gitattributes b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/.gitattributes new file mode 100644 index 000000000..83ad4b48a --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/.gitattributes @@ -0,0 +1,2 @@ +# Preserve captured serial and transcript bytes in Git. +*.txt -text diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/01-structure.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/01-structure.txt new file mode 100644 index 000000000..39ba00f3a --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/01-structure.txt @@ -0,0 +1,69 @@ +revision=58af1a7fb63e144586b6eef06e47be178eb175d5 + working PR2b changes; exit=1; pre-commit candidate, extra census call corrected before cab966e7 +[GATE_SUITE:stem=aarch64_testing_profile_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=block_request_lifetime_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=blocking_fd_eagain_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=capture_bxcap_schema_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=capture_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=context_restore_structure:attempt=1:timeout_s=300:wall_s=63:exit=0] +[GATE_SUITE:stem=coreproof_component_h_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_coverage_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_mutation_register_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_sites_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=critical_path_logging_census_structure:attempt=1:timeout_s=300:wall_s=1:exit=101] +[GATE_SUITE:stem=ctx_diag_ring_sample_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=degenerate_transfer_fd_validation_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=dispatch_fact_census_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=dispatch_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=dispatch_strand_census_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=dma_and_log_sink_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=entry_point_df_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=exec_lock_order_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=exit_tally_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_disk_size_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fcntl_pm_contention_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fork_lock_order_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_boot_facts_pipefail_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_boot_facts_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_capture_drain_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_qmp_backstop_structure:attempt=1:timeout_s=300:wall_s=4:exit=0] +[GATE_SUITE:stem=gate_structure_preflight_wiring_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=green_program_envelope_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=launcher_smoke_xhci_evidence_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=lockup_capture_guard_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=loopback_pump_structure:attempt=1:timeout_s=300:wall_s=4:exit=0] +[GATE_SUITE:stem=masked_binary_load_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=mmap_floor_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=net_lock_structure:attempt=1:timeout_s=300:wall_s=3:exit=0] +[GATE_SUITE:stem=parallels_capture_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=parallels_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=pipe_fifo_blocking_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=poll_tcp_gate_wiring_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=preempt_bracket_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=qemu_host_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=qemu_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=ring_span_report_site_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=ring_span_unfiltered_report_site_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=run_inspector_import_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=serial_line_atomicity_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=signal_eintr_predicate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=strand_handoff_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=structure_preflight_parallel_structure:attempt=1:timeout_s=300:wall_s=6:exit=0] +[GATE_SUITE:stem=syscall_return_register_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=teardown_rustfmt_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=teardown_structure:attempt=1:timeout_s=300:wall_s=19:exit=0] +[GATE_SUITE:stem=terminal_edge_capture_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=timer_wake_dispatch_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=trace_ring_depth_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=tracing_provider_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ttbr0_shadow_reconciliation_structure:attempt=1:timeout_s=300:wall_s=19:exit=0] +[GATE_SUITE:stem=tty_irq_fg_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=tty_irq_pm_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=tty_oracle_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=udp_ports_lock_irq_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=udp_socket_lock_irq_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=x86_boot_tests_profile_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=x86_smp_enum_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=xhci_wait_irq_order_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_PREFLIGHT:structure_suites=65/66:critical_path_lines=263:pinned=120] +GATE_PREFLIGHT: FAIL (1 of 66 structure suite(s) red: critical_path_logging_census_structure -- per-suite logs under /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/.gate-tmp/breenix_gate_structure_preflight.kJQagT) diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/02-build-arm.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/02-build-arm.txt new file mode 100644 index 000000000..11512d36a --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/02-build-arm.txt @@ -0,0 +1,48 @@ +revision=58af1a7fb63e144586b6eef06e47be178eb175d5 + working PR2b changes; exit=0; pre-commit candidate, extra census call corrected before cab966e7 + Updating git repository `https://github.com/rust-osdev/bootloader.git` + Updating crates.io index + Locking 154 packages to latest compatible versions + Adding aarch64-cpu v9.4.0 (available: v11.2.0) + Adding acpi v5.2.0 (available: v6.1.1) + Adding az v1.2.1 (available: v1.3.0) + Adding pic8259 v0.10.4 (available: v0.11.0) + Adding spin v0.9.9 (available: v0.12.3) + Adding tock-registers v0.8.1 (available: v0.10.1) + Adding uart_16550 v0.3.2 (available: v0.8.0) + Adding uefi v0.33.0 (available: v0.37.0) + Adding x86_64 v0.15.4 (available: v0.15.5) + Compiling compiler_builtins v0.1.160 (/Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/src/rust/library/compiler-builtins/compiler-builtins) + Compiling core v0.0.0 (/Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/src/rust/library/core) + Compiling autocfg v1.5.1 + Compiling az v1.2.1 + Compiling crossbeam-utils v0.8.23 + Compiling bootloader_api v0.11.13 (https://github.com/rust-osdev/bootloader.git?rev=707db11201b19541b7cfef84037866ee03aa0927#707db112) + Compiling kernel v0.1.0 (/private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/kernel) + Compiling num-traits v0.2.19 + Compiling alloc v0.0.0 (/Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/src/rust/library/alloc) + Compiling scopeguard v1.2.0 + Compiling byteorder v1.5.0 + Compiling pin-project-lite v0.2.17 + Compiling tock-registers v0.8.1 + Compiling slab v0.4.12 + Compiling micromath v2.1.0 + Compiling futures-core v0.3.34 + Compiling futures-task v0.3.34 + Compiling conquer-util v0.3.0 + Compiling noto-sans-mono-bitmap v0.3.2 + Compiling rlibc v1.0.0 + Compiling log v0.4.34 + Compiling lock_api v0.4.14 + Compiling aarch64-cpu v9.4.0 + Compiling conquer-once v0.4.0 + Compiling futures-util v0.3.34 + Compiling crossbeam-queue v0.3.14 + Compiling spinning_top v0.2.5 + Compiling spin v0.9.9 + Compiling linked_list_allocator v0.10.6 + Compiling float-cmp v0.9.0 + Compiling embedded-graphics-core v0.4.1 + Compiling embedded-graphics v0.8.2 + Finished `release` profile [optimized] target(s) in 16.11s +warning: the following packages contain code that will be rejected by a future version of Rust: core v0.0.0 (/Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/src/rust/library/core) +note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/03-mutations-oracle.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/03-mutations-oracle.txt new file mode 100644 index 000000000..87d5cb373 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/03-mutations-oracle.txt @@ -0,0 +1,28 @@ +revision=58af1a7fb63e144586b6eef06e47be178eb175d5 + working PR2b changes; exit=0; pre-commit candidate, emitter-only correction followed +== compiling loopback_pump_structure == +== running loopback_pump_structure pinned_scan == + +running 4 tests +test pinned_scan_bound ... ok +pinned-scan mutation: delete guard -> RED +pinned-scan mutation: global guard -> RED +pinned-scan mutation: drop decrement -> RED +pinned-scan mutation: non-saturating decrement -> RED +pinned-scan mutation: delete increment -> RED +[PINNED_HOME_CPU_UNAVAILABLE:first:tid=7:home=1:cpu=0:count=1] +PINNED_SCAN_ORACLE baseline=false held_delta=1 delivered_delta=1 outstanding_home=0 peer_entries=128 peer_walk_delta=0 after_entries=128 after_walk_delta=0 verdict=PASS +discard dispositions=5 outstanding_home=0 PASS + +test forced_pinned_scan_after ... ok +[PINNED_HOME_CPU_UNAVAILABLE:first:tid=7:home=1:cpu=0:count=1] +PINNED_SCAN_ORACLE baseline=true held_delta=1 delivered_delta=1 outstanding_home=0 peer_entries=128 peer_walk_delta=128 after_entries=128 after_walk_delta=128 verdict=RED +discard dispositions=5 outstanding_home=0 PASS + +test forced_pinned_scan_before ... ok +pinned-scan mutation: drop discard -> RED +pinned-scan mutation: unconditional decrement -> RED +pinned-scan mutation: delete decrement statement -> RED +test pinned_scan_bound_mutations ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 130 filtered out; finished in 0.18s + diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/04-census-correction.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/04-census-correction.txt new file mode 100644 index 000000000..e483b41d7 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/04-census-correction.txt @@ -0,0 +1,20 @@ +revision=58af1a7fb63e144586b6eef06e47be178eb175d5 + working PR2b changes; exit=0; corrected source subsequently committed as cab966e7 +== compiling critical_path_logging_census_structure == +== running critical_path_logging_census_structure == + +running 12 tests +test code_mask_raw_string_close_preserves_next_byte ... ok +test shell_parity_validator_rejects_a_removed_critical_file ... ok +test the_shell_and_this_suite_check_the_same_shapes ... ok +test zero_pin_files_stay_clean ... ok +test zero_pin_validator_rejects_a_synthetic_violation_in_timer_rs ... ok +test census_validator_rejects_a_logging_macro_inside_the_soft_lockup_dump ... ok +test census_validator_rejects_a_synthetic_violation_at_a_checked_path ... ok +test census_validator_rejects_a_decremented_anchor_count ... ok +test census_validator_rejects_a_deleted_anchor_row ... ok +test critical_path_log_wider_census_is_pinned ... ok +test critical_path_log_census_is_pinned ... ok +test the_anchor_table_sums_to_the_ledger_total ... ok + +test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s + diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/05-build-final.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/05-build-final.txt new file mode 100644 index 000000000..16c058c44 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/05-build-final.txt @@ -0,0 +1,5 @@ +cab966e76c46d9a6eae343ba8bb5bf564d1ee24b + Compiling kernel v0.1.0 (/private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/kernel) + Finished `release` profile [optimized] target(s) in 6.19s +warning: the following packages contain code that will be rejected by a future version of Rust: core v0.0.0 (/Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/src/rust/library/core) +note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/06-structure-final.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/06-structure-final.txt new file mode 100644 index 000000000..57e59f8f0 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/06-structure-final.txt @@ -0,0 +1,69 @@ +cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +[GATE_SUITE:stem=aarch64_testing_profile_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=block_request_lifetime_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=blocking_fd_eagain_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=capture_bxcap_schema_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=capture_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=context_restore_structure:attempt=1:timeout_s=300:wall_s=58:exit=0] +[GATE_SUITE:stem=coreproof_component_h_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_coverage_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=coreproof_mutation_register_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=coreproof_sites_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=critical_path_logging_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ctx_diag_ring_sample_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=degenerate_transfer_fd_validation_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_fact_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_strand_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dma_and_log_sink_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=entry_point_df_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=exec_lock_order_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=exit_tally_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_disk_size_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fcntl_pm_contention_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fork_lock_order_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_boot_facts_pipefail_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_boot_facts_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_capture_drain_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_qmp_backstop_structure:attempt=1:timeout_s=300:wall_s=5:exit=0] +[GATE_SUITE:stem=gate_structure_preflight_wiring_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=green_program_envelope_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=launcher_smoke_xhci_evidence_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=lockup_capture_guard_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=loopback_pump_structure:attempt=1:timeout_s=300:wall_s=3:exit=0] +[GATE_SUITE:stem=masked_binary_load_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=mmap_floor_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=net_lock_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=parallels_capture_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=parallels_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=pipe_fifo_blocking_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=poll_tcp_gate_wiring_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=preempt_bracket_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=qemu_host_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=qemu_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=ring_span_report_site_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=ring_span_unfiltered_report_site_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=run_inspector_import_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=serial_line_atomicity_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=signal_eintr_predicate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=strand_handoff_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=structure_preflight_parallel_structure:attempt=1:timeout_s=300:wall_s=6:exit=0] +[GATE_SUITE:stem=syscall_return_register_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=teardown_rustfmt_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=teardown_structure:attempt=1:timeout_s=300:wall_s=19:exit=0] +[GATE_SUITE:stem=terminal_edge_capture_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=timer_wake_dispatch_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=trace_ring_depth_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=tracing_provider_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ttbr0_shadow_reconciliation_structure:attempt=1:timeout_s=300:wall_s=17:exit=0] +[GATE_SUITE:stem=tty_irq_fg_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=tty_irq_pm_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=tty_oracle_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=udp_ports_lock_irq_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=udp_socket_lock_irq_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=x86_boot_tests_profile_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=x86_smp_enum_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=xhci_wait_irq_order_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_PREFLIGHT:structure_suites=66/66:critical_path_lines=260:pinned=120] +LANE_GATE_EXIT=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/07-citations.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/07-citations.txt new file mode 100644 index 000000000..305274adc --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/07-citations.txt @@ -0,0 +1,46 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +453:static PINNED_HOLDS_OUTSTANDING: [core::sync::atomic::AtomicU64; MAX_CPUS] = +499:pub static PINNED_WAKES_DELIVERED: core::sync::atomic::AtomicU64 = +578:pub fn emit_pinned_placement_census() { +580: "[PINNED_HOME_CPU_UNAVAILABLE:count={}:publish_discarded={}:hold_pen_migrated={}:delivered={}:migration_refused={}:stack_home_conflict={}]\n[PINNED_HOLDS_OUTSTANDING:count={}]", +584: PINNED_WAKES_DELIVERED.load(Ordering::Relaxed), +587: PINNED_HOLDS_OUTSTANDING +2358: self.deliver_pinned_wakes_for_this_cpu(); +2882: pub fn schedule_deferred_requeue(&mut self) -> Option<(u64, u64, bool)> { +2889: self.deliver_pinned_wakes_for_this_cpu(); +3642: self.hold_pinned_wake_for_home(thread_id); +3915: self.hold_pinned_wake_for_home(thread_id); +4028: self.hold_pinned_wake_for_home(thread_id); +4317: self.hold_pinned_wake_for_home(tid); +4527: self.hold_pinned_wake_for_home(tid); +4757: fn hold_pinned_wake_for_home(&self, thread_id: u64) { +4764: let _ = PINNED_HOLDS_OUTSTANDING[home].fetch_update( +4770: let holds = PINNED_HOME_CPU_UNAVAILABLE.fetch_add(1, Ordering::Relaxed) + 1; +4800: fn pinned_wake_is_waiting_here(&self, tid: u64, cpu: usize) -> bool { +4843: fn deliver_pinned_wakes_for_this_cpu(&mut self) { +4845: if PINNED_HOLDS_OUTSTANDING[cpu].load(Ordering::Relaxed) == 0 { +4856: PINNED_WAKES_DELIVERED.fetch_add(1, Ordering::Relaxed); +4857: let _ = PINNED_HOLDS_OUTSTANDING[cpu].fetch_update( +4867: let discarded = PINNED_HOLDS_OUTSTANDING[cpu].load(Ordering::Relaxed); +4868: let _ = PINNED_HOLDS_OUTSTANDING[cpu].fetch_update( +5017: self.hold_pinned_wake_for_home(thread_id); +5096: PINNED_WAKES_DELIVERED.load(Ordering::Relaxed), +5126: PINNED_WAKES_DELIVERED.load(Ordering::Relaxed), +kernel/src/task/strand_oracle.rs:478: crate::task::scheduler::emit_pinned_placement_census(); +kernel/src/main.rs:762: kernel::task::scheduler::emit_pin_guard_oracle(); +kernel/src/main_aarch64.rs:1445: kernel::task::scheduler::emit_pin_guard_oracle(); +kernel/src/main_aarch64.rs:1446: kernel::task::scheduler::emit_pinned_placement_census(); +kernel/src/task/kthread.rs:67:/// change. It is the production counterpart of `kthread_run_on_cpu_for_test`, +kernel/src/task/kthread.rs:70:pub fn kthread_run_on_cpu( +kernel/src/task/kthread.rs:107:pub(crate) fn kthread_run_on_cpu_for_test( +kernel/src/task/thread.rs:600: /// `kthread_run_on_cpu` that wraps it. 14 of 15 sites that build a +kernel/src/task/thread.rs:617: // (`kthread::kthread_run_on_cpu`) which itself has 0 -- all counted by grep +kernel/src/task/thread.rs:627:/// * `per_cpu_worker` -- the thread services state that lives in that CPU's +kernel/src/task/thread.rs:646: pub per_cpu_worker: bool, +kernel/src/task/thread.rs:667:pub static CPU_PINS_STAMPED: AtomicU64 = AtomicU64::new(0); +kernel/src/task/thread.rs:671: pub fn per_cpu_worker(cpu: usize) -> Self { +kernel/src/task/thread.rs:672: CPU_PINS_STAMPED.fetch_add(1, Ordering::Relaxed); +kernel/src/task/thread.rs:675: per_cpu_worker: true, +kernel/src/task/thread.rs:686: pub fn hold_pen(cpu: usize) -> Self { +kernel/src/task/thread.rs:687: CPU_PINS_STAMPED.fetch_add(1, Ordering::Relaxed); +kernel/src/task/thread.rs:690: per_cpu_worker: false, diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/08-code-claim-lint.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/08-code-claim-lint.txt new file mode 100644 index 000000000..3049119d4 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/08-code-claim-lint.txt @@ -0,0 +1,7 @@ +revision=58af1a7f + source committed as cab966e7 +claim-lint: clean (6 file(s) checked, changed hunks vs 58af1a7fb63e). +claim-lint: 86 pre-existing finding(s) outside this branch's changed hunks not reported (--whole-file shows them). +claim-lint: clean commit message (.tmp/code-commit.txt). + +claim-lint: python3 scripts/claim-lint.py -> exit 0 +claim-lint: python3 scripts/claim-lint.py --commit-msg .tmp/code-commit.txt -> exit 0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/09-strict.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/09-strict.txt new file mode 100644 index 000000000..4579bc063 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/09-strict.txt @@ -0,0 +1,129 @@ +cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +[GATE_SUITE:stem=aarch64_testing_profile_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=block_request_lifetime_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=blocking_fd_eagain_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=capture_bxcap_schema_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=capture_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=context_restore_structure:attempt=1:timeout_s=300:wall_s=58:exit=0] +[GATE_SUITE:stem=coreproof_component_h_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_coverage_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_mutation_register_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_sites_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=critical_path_logging_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ctx_diag_ring_sample_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=degenerate_transfer_fd_validation_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_fact_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_strand_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dma_and_log_sink_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=entry_point_df_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=exec_lock_order_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=exit_tally_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_disk_size_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fcntl_pm_contention_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fork_lock_order_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_boot_facts_pipefail_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_boot_facts_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_capture_drain_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_qmp_backstop_structure:attempt=1:timeout_s=300:wall_s=5:exit=0] +[GATE_SUITE:stem=gate_structure_preflight_wiring_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=green_program_envelope_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=launcher_smoke_xhci_evidence_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=lockup_capture_guard_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=loopback_pump_structure:attempt=1:timeout_s=300:wall_s=3:exit=0] +[GATE_SUITE:stem=masked_binary_load_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=mmap_floor_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=net_lock_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=parallels_capture_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=parallels_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=pipe_fifo_blocking_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=poll_tcp_gate_wiring_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=preempt_bracket_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=qemu_host_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=qemu_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ring_span_report_site_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ring_span_unfiltered_report_site_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=run_inspector_import_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=serial_line_atomicity_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=signal_eintr_predicate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=strand_handoff_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=structure_preflight_parallel_structure:attempt=1:timeout_s=300:wall_s=7:exit=0] +[GATE_SUITE:stem=syscall_return_register_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=teardown_rustfmt_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=teardown_structure:attempt=1:timeout_s=300:wall_s=19:exit=0] +[GATE_SUITE:stem=terminal_edge_capture_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=timer_wake_dispatch_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=trace_ring_depth_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=tracing_provider_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ttbr0_shadow_reconciliation_structure:attempt=1:timeout_s=300:wall_s=18:exit=0] +[GATE_SUITE:stem=tty_irq_fg_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=tty_irq_pm_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=tty_oracle_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=udp_ports_lock_irq_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=udp_socket_lock_irq_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=x86_boot_tests_profile_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=x86_smp_enum_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=xhci_wait_irq_order_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_PREFLIGHT:structure_suites=66/66:critical_path_lines=260:pinned=120] +Guard: kernel FP/SIMD instruction check + ELF: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/aarch64-breenix-kernel/release/kernel-aarch64 + objdump: /Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin/llvm-objdump + allowlist: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/scripts/kernel-neon-allowlist.txt +PASS: 0 FP/SIMD load/store instructions in kernel .text (allowlisted & suppressed: 0). +Guard: aarch64 soft-lockup report allocation check (failure-capture PR-7) + ELF: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/aarch64-breenix-kernel/release/kernel-aarch64 + sha256: 1b518ad9b78c06db7c5dfd9dc2838852035c2eb07ea6891b7bb6b96b0281fecb + objdump: /Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin/llvm-objdump + root: dump_lockup_state (its own symbols and every reachable callee) + roots: 1 + _ZN6kernel9arch_impl7aarch6415timer_interrupt17dump_lockup_state17h61ecf85f7d566472E + reachable funcs: 18 + call edges: 32 +PASS: 0 allocation sinks reachable from 1 root symbol(s). +PASS: no allocation is reachable from dump_lockup_state in this ELF. +========================================= +ARM64 Strict Boot Test +========================================= +Kernel: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/aarch64-breenix-kernel/release/kernel-aarch64 +ext2 disk: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/ext2-aarch64.img +Iterations: 3 +Requirement: 100% success rate (all 3 must pass) + +Running tests... + +QEMU HOST LOCK: host qemu-system-aarch64 count before acquire: 0 +qemu-system-aarch64: terminating on signal 15 from pid 80733 () + [OK] Boot 1: SUCCESS + [GATE_BOOT_FACTS:boot=1:host_ms=1788834854495-1788834868813:qemu_at_start=0:load_at_start=7.80:qemu_at_end=1:load_at_end=7.04:qemu_cpu_s=24.91:guest_uptime_ms=14304:ended_by=scored_pass] + [CAPTURE_DRAIN:capture=n/a:seq=n/a:edge=n/a:cpu=n/a:records=n/a:drain_ms=0] + [CAPTURE_DRAIN_EVENTS:last_events=n/a] + [QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] +QEMU HOST LOCK: host qemu-system-aarch64 count before acquire: 0 +qemu-system-aarch64: terminating on signal 15 from pid 81585 () + [OK] Boot 2: SUCCESS + [GATE_BOOT_FACTS:boot=2:host_ms=1788834869858-1788834884220:qemu_at_start=0:load_at_start=7.04:qemu_at_end=1:load_at_end=6.09:qemu_cpu_s=24.29:guest_uptime_ms=13575:ended_by=scored_pass] + [CAPTURE_DRAIN:capture=n/a:seq=n/a:edge=n/a:cpu=n/a:records=n/a:drain_ms=0] + [CAPTURE_DRAIN_EVENTS:last_events=n/a] + [QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] +QEMU HOST LOCK: host qemu-system-aarch64 count before acquire: 0 +qemu-system-aarch64: terminating on signal 15 from pid 82429 () + [OK] Boot 3: SUCCESS + [GATE_BOOT_FACTS:boot=3:host_ms=1788834885254-1788834899595:qemu_at_start=0:load_at_start=6.09:qemu_at_end=1:load_at_end=5.43:qemu_cpu_s=24.62:guest_uptime_ms=14104:ended_by=scored_pass] + [CAPTURE_DRAIN:capture=n/a:seq=n/a:edge=n/a:cpu=n/a:records=n/a:drain_ms=0] + [CAPTURE_DRAIN_EVENTS:last_events=n/a] + [QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] + +========================================= +RESULTS +========================================= +Total iterations: 3 +Successes: 3 +Failures: 0 +Success rate: 100% +Duration: 46s + +========================================= +PASS: 3/3 boots succeeded +========================================= +LANE_GATE_EXIT=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/10-service.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/10-service.txt new file mode 100644 index 000000000..28651ac59 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/10-service.txt @@ -0,0 +1,194 @@ +cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +[GATE_SUITE:stem=aarch64_testing_profile_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=block_request_lifetime_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=blocking_fd_eagain_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=capture_bxcap_schema_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=capture_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=context_restore_structure:attempt=1:timeout_s=300:wall_s=59:exit=0] +[GATE_SUITE:stem=coreproof_component_h_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_coverage_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_mutation_register_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_sites_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=critical_path_logging_census_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=ctx_diag_ring_sample_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=degenerate_transfer_fd_validation_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_fact_census_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=dispatch_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_strand_census_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=dma_and_log_sink_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=entry_point_df_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=exec_lock_order_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=exit_tally_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_disk_size_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fcntl_pm_contention_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fork_lock_order_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_boot_facts_pipefail_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_boot_facts_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_capture_drain_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=gate_qmp_backstop_structure:attempt=1:timeout_s=300:wall_s=4:exit=0] +[GATE_SUITE:stem=gate_structure_preflight_wiring_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=green_program_envelope_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=launcher_smoke_xhci_evidence_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=lockup_capture_guard_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=loopback_pump_structure:attempt=1:timeout_s=300:wall_s=3:exit=0] +[GATE_SUITE:stem=masked_binary_load_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=mmap_floor_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=net_lock_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=parallels_capture_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=parallels_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=pipe_fifo_blocking_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=poll_tcp_gate_wiring_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=preempt_bracket_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=qemu_host_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=qemu_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ring_span_report_site_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ring_span_unfiltered_report_site_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=run_inspector_import_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=serial_line_atomicity_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=signal_eintr_predicate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=strand_handoff_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=structure_preflight_parallel_structure:attempt=1:timeout_s=300:wall_s=6:exit=0] +[GATE_SUITE:stem=syscall_return_register_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=teardown_rustfmt_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=teardown_structure:attempt=1:timeout_s=300:wall_s=19:exit=0] +[GATE_SUITE:stem=terminal_edge_capture_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=timer_wake_dispatch_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=trace_ring_depth_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=tracing_provider_gate_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=ttbr0_shadow_reconciliation_structure:attempt=1:timeout_s=300:wall_s=17:exit=0] +[GATE_SUITE:stem=tty_irq_fg_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=tty_irq_pm_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=tty_oracle_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=udp_ports_lock_irq_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=udp_socket_lock_irq_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=x86_boot_tests_profile_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=x86_smp_enum_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=xhci_wait_irq_order_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_PREFLIGHT:structure_suites=66/66:critical_path_lines=260:pinned=120] +Guard: kernel FP/SIMD instruction check + ELF: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/aarch64-breenix-kernel/release/kernel-aarch64 + objdump: /Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin/llvm-objdump + allowlist: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/scripts/kernel-neon-allowlist.txt +PASS: 0 FP/SIMD load/store instructions in kernel .text (allowlisted & suppressed: 0). +Guard: aarch64 soft-lockup report allocation check (failure-capture PR-7) + ELF: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/aarch64-breenix-kernel/release/kernel-aarch64 + sha256: 1b518ad9b78c06db7c5dfd9dc2838852035c2eb07ea6891b7bb6b96b0281fecb + objdump: /Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin/llvm-objdump + root: dump_lockup_state (its own symbols and every reachable callee) + roots: 1 + _ZN6kernel9arch_impl7aarch6415timer_interrupt17dump_lockup_state17h61ecf85f7d566472E + reachable funcs: 18 + call edges: 32 +PASS: 0 allocation sinks reachable from 1 root symbol(s). +PASS: no allocation is reachable from dump_lockup_state in this ELF. +========================================= +ARM64 #575 Service Sequence Gate +========================================= +Kernel: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/aarch64-breenix-kernel/release/kernel-aarch64 +ext2 disk: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/ext2-aarch64.img +Boots per profile: 2 +Profile selection: both +Block IOPS throttle: 2000 +Per-boot timeout: 90s +Output: /tmp/breenix_aarch64_service_sequence_gate_20260908T023623Z-83722 + +Profile max: running 2 sequential boots +QEMU HOST LOCK: host qemu-system-aarch64 count before acquire: 0 +qemu-system-aarch64: terminating on signal 15 from pid 83722 () + Boot 1/2: GREEN — all service-sequence and P5b markers observed [early, 24s, ctx596_divergence=0, ret_dispatch_refusals=0, resume_pc_refusals=0, percpu_stack_aliens=0, cpu_identity_splits=0, ret_stage_refusals=0, lr_nontext=8] +QEMU HOST LOCK: host qemu-system-aarch64 count before acquire: 0 +qemu-system-aarch64: terminating on signal 15 from pid 83722 () + Boot 2/2: GREEN — all service-sequence and P5b markers observed [early, 24s, ctx596_divergence=1, ret_dispatch_refusals=0, resume_pc_refusals=0, percpu_stack_aliens=0, cpu_identity_splits=0, ret_stage_refusals=0, lr_nontext=8] + +Profile max census + 575 0 + 576 0 + 626 0 + 635 0 + 641 0 + 690 0 + DATA_ABORT 0 + CLONE_EXEC 0 + STRAND 0 + BOOT_TEST_FAIL 0 + 596 0 + 612 0 + 609 0 + P5B 0 + GREEN 2 + UNATTRIBUTED 0 + GREEN rate: 2/2 (100.0%) — census-only: every non-GREEN bucket is gate-failing, with no exceptions, including the open #576, #626, #635, #641 and #690 defects + CTX596 divergence: 1 marker line(s) across 1/2 boot(s) — reported, not gated + RET dispatch refused: 0 marker line(s) across 0/2 boot(s) — reported, not gated + Resume PC refused: 0 marker line(s) across 0/2 boot(s) — gate-failing + Per-CPU stack alien: 0 marker line(s) across 0/2 boot(s) — gate-failing + CPU identity split: 0 marker line(s) across 0/2 boot(s) — gate-failing + Ret-dispatch staging refused: 0 marker line(s) across 0/2 boot(s) — gate-failing + Saved-LR non-PC words: 16 marker line(s) across 2/2 boot(s) — reported, not gated +Profile max gate: PASSED (575=0, 576=0, 626=0, 635=0, 641=0, 690=0, DATA_ABORT=0, CLONE_EXEC=0, STRAND=0, BOOT_TEST_FAIL=0, 596=0, 612=0, 609=0, P5B=0, UNATTRIBUTED=0, RESUME_PC_REFUSED=0, PERCPU_STACK_ALIEN=0, CPU_IDENTITY_SPLIT=0, RET_STAGE_REFUSED=0) + +Profile cortex-a72: running 2 sequential boots +QEMU HOST LOCK: host qemu-system-aarch64 count before acquire: 0 +qemu-system-aarch64: terminating on signal 15 from pid 83722 () + Boot 1/2: GREEN — all service-sequence and P5b markers observed [early, 25s, ctx596_divergence=0, ret_dispatch_refusals=0, resume_pc_refusals=0, percpu_stack_aliens=0, cpu_identity_splits=0, ret_stage_refusals=0, lr_nontext=8] +QEMU HOST LOCK: host qemu-system-aarch64 count before acquire: 0 +qemu-system-aarch64: terminating on signal 15 from pid 83722 () + Boot 2/2: GREEN — all service-sequence and P5b markers observed [early, 24s, ctx596_divergence=2, ret_dispatch_refusals=0, resume_pc_refusals=0, percpu_stack_aliens=0, cpu_identity_splits=0, ret_stage_refusals=0, lr_nontext=8] + +Profile cortex-a72 census + 575 0 + 576 0 + 626 0 + 635 0 + 641 0 + 690 0 + DATA_ABORT 0 + CLONE_EXEC 0 + STRAND 0 + BOOT_TEST_FAIL 0 + 596 0 + 612 0 + 609 0 + P5B 0 + GREEN 2 + UNATTRIBUTED 0 + GREEN rate: 2/2 (100.0%) — census-only: every non-GREEN bucket is gate-failing, with no exceptions, including the open #576, #626, #635, #641 and #690 defects + CTX596 divergence: 2 marker line(s) across 1/2 boot(s) — reported, not gated + RET dispatch refused: 0 marker line(s) across 0/2 boot(s) — reported, not gated + Resume PC refused: 0 marker line(s) across 0/2 boot(s) — gate-failing + Per-CPU stack alien: 0 marker line(s) across 0/2 boot(s) — gate-failing + CPU identity split: 0 marker line(s) across 0/2 boot(s) — gate-failing + Ret-dispatch staging refused: 0 marker line(s) across 0/2 boot(s) — gate-failing + Saved-LR non-PC words: 16 marker line(s) across 2/2 boot(s) — reported, not gated +Profile cortex-a72 gate: PASSED (575=0, 576=0, 626=0, 635=0, 641=0, 690=0, DATA_ABORT=0, CLONE_EXEC=0, STRAND=0, BOOT_TEST_FAIL=0, 596=0, 612=0, 609=0, P5B=0, UNATTRIBUTED=0, RESUME_PC_REFUSED=0, PERCPU_STACK_ALIEN=0, CPU_IDENTITY_SPLIT=0, RET_STAGE_REFUSED=0) + +Total census + 575 0 + 576 0 + 626 0 + 635 0 + 641 0 + 690 0 + DATA_ABORT 0 + CLONE_EXEC 0 + STRAND 0 + BOOT_TEST_FAIL 0 + 596 0 + 612 0 + 609 0 + P5B 0 + GREEN 4 + UNATTRIBUTED 0 + GREEN rate: 4/4 (100.0%) — census-only: every non-GREEN bucket is gate-failing, with no exceptions, including the open #576, #626, #635, #641 and #690 defects + CTX596 divergence: 3 marker line(s) across 2/4 boot(s) — reported, not gated + RET dispatch refused: 0 marker line(s) across 0/4 boot(s) — reported, not gated + Resume PC refused: 0 marker line(s) across 0/4 boot(s) — gate-failing + Per-CPU stack alien: 0 marker line(s) across 0/4 boot(s) — gate-failing + CPU identity split: 0 marker line(s) across 0/4 boot(s) — gate-failing + Ret-dispatch staging refused: 0 marker line(s) across 0/4 boot(s) — gate-failing + Saved-LR non-PC words: 32 marker line(s) across 4/4 boot(s) — reported, not gated + +ARM64 #575 SERVICE SEQUENCE GATE: PASSED +Preserved serials: /tmp/breenix_aarch64_service_sequence_gate_20260908T023623Z-83722 +LANE_GATE_EXIT=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/11-citation-check.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/11-citation-check.txt new file mode 100644 index 000000000..5b757e984 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/11-citation-check.txt @@ -0,0 +1,26 @@ +Citation validation at cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +kernel/src/task/scheduler.rs:453: static PINNED_HOLDS_OUTSTANDING: [core::sync::atomic::AtomicU64; MAX_CPUS] = +kernel/src/task/scheduler.rs:499: pub static PINNED_WAKES_DELIVERED: core::sync::atomic::AtomicU64 = +kernel/src/task/scheduler.rs:578: pub fn emit_pinned_placement_census() { +kernel/src/task/scheduler.rs:580: "[PINNED_HOME_CPU_UNAVAILABLE:count={}:publish_discarded={}:hold_pen_migrated={}:delivered={}:migration_refused={}:stack_home_conflict={}]\n[PINNED_HOLDS_OUTSTANDING:count={}]", +kernel/src/task/scheduler.rs:2358: self.deliver_pinned_wakes_for_this_cpu(); +kernel/src/task/scheduler.rs:2889: self.deliver_pinned_wakes_for_this_cpu(); +kernel/src/task/scheduler.rs:4757: fn hold_pinned_wake_for_home(&self, thread_id: u64) { +kernel/src/task/scheduler.rs:4770: let holds = PINNED_HOME_CPU_UNAVAILABLE.fetch_add(1, Ordering::Relaxed) + 1; +kernel/src/task/scheduler.rs:4800: fn pinned_wake_is_waiting_here(&self, tid: u64, cpu: usize) -> bool { +kernel/src/task/scheduler.rs:4843: fn deliver_pinned_wakes_for_this_cpu(&mut self) { +kernel/src/task/scheduler.rs:4845: if PINNED_HOLDS_OUTSTANDING[cpu].load(Ordering::Relaxed) == 0 { +kernel/src/task/scheduler.rs:4856: PINNED_WAKES_DELIVERED.fetch_add(1, Ordering::Relaxed); +kernel/src/task/scheduler.rs:4857: let _ = PINNED_HOLDS_OUTSTANDING[cpu].fetch_update( +kernel/src/task/scheduler.rs:4867: let discarded = PINNED_HOLDS_OUTSTANDING[cpu].load(Ordering::Relaxed); +kernel/src/task/scheduler.rs:5572: pub fn spawn_on_cpu(mut thread: Box, cpu: usize) { +kernel/src/main_aarch64.rs:1446: kernel::task::scheduler::emit_pinned_placement_census(); +kernel/src/task/strand_oracle.rs:3: #![cfg(feature = "boot_tests")] +kernel/src/task/strand_oracle.rs:478: crate::task::scheduler::emit_pinned_placement_census(); +kernel/src/task/kthread.rs:70: pub fn kthread_run_on_cpu( +kernel/src/task/kthread.rs:79: scheduler::spawn_on_cpu(thread, cpu) +kernel/src/task/thread.rs:627: /// * `per_cpu_worker` -- the thread services state that lives in that CPU's +kernel/src/task/thread.rs:667: pub static CPU_PINS_STAMPED: AtomicU64 = AtomicU64::new(0); +tests/loopback_pump_structure.rs:4307: fn forced_retention_probe(offline: bool) { +tests/loopback_pump_structure.rs:4850: fn validate_pinned_scan_bound(source: &str) -> Result<(), String> { +tests/loopback_pump_structure.rs:4918: fn forced_pinned_scan_probe(baseline: bool) { diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/12-arm-census-audit.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/12-arm-census-audit.txt new file mode 100644 index 000000000..8715fd044 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/12-arm-census-audit.txt @@ -0,0 +1,8 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +strict-boot1-serial.txt: outstanding_samples=4 values=['0'] pin_guard_pass=1 first_hold=0 +strict-boot2-serial.txt: outstanding_samples=4 values=['0'] pin_guard_pass=1 first_hold=0 +strict-boot3-serial.txt: outstanding_samples=4 values=['0'] pin_guard_pass=1 first_hold=0 +service/cortex-a72/serial-1.txt: outstanding_samples=6 values=['0'] pin_guard_pass=1 first_hold=0 +service/cortex-a72/serial-2.txt: outstanding_samples=6 values=['0'] pin_guard_pass=1 first_hold=0 +service/max/serial-1.txt: outstanding_samples=6 values=['0'] pin_guard_pass=1 first_hold=0 +service/max/serial-2.txt: outstanding_samples=6 values=['0'] pin_guard_pass=1 first_hold=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/13-x86-preflight-timeout.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/13-x86-preflight-timeout.txt new file mode 100644 index 000000000..a7601ec4b --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/13-x86-preflight-timeout.txt @@ -0,0 +1,209 @@ +cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +======================================== + STD USERSPACE BUILD (Rust std library) +======================================== + Architecture: x86_64 + +[1/3] Building libbreenix-libc (x86_64)... + Compiling compiler_builtins v0.1.160 (/root/.rustup/toolchains/nightly-2025-06-24-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/compiler-builtins/compiler-builtins) + Compiling core v0.0.0 (/root/.rustup/toolchains/nightly-2025-06-24-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core) + Compiling libbreenix v0.1.0 (/root/breenix-s3f2b/libs/libbreenix) + Compiling libbreenix-libc v0.1.0 (/root/breenix-s3f2b/libs/libbreenix-libc) + Finished `release` profile [optimized] target(s) in 27.08s + libbreenix-libc built successfully + +[2/3] Building userspace (x86_64)... + Updating crates.io index + Locking 10 packages to latest compatible versions + Compiling compiler_builtins v0.1.160 (/root/breenix-s3f2b/rust-fork/library/compiler-builtins/compiler-builtins) + Compiling core v0.0.0 (/root/breenix-s3f2b/rust-fork/library/core) + Compiling libc v0.2.174 (/root/breenix-s3f2b/libs/libc) + Compiling std v0.0.0 (/root/breenix-s3f2b/rust-fork/library/std) + Compiling rustc-std-workspace-core v1.99.0 (/root/breenix-s3f2b/rust-fork/library/rustc-std-workspace-core) + Compiling alloc v0.0.0 (/root/breenix-s3f2b/rust-fork/library/alloc) + Compiling panic_abort v0.0.0 (/root/breenix-s3f2b/rust-fork/library/panic_abort) + Compiling cfg-if v1.0.1 + Compiling rustc-demangle v0.1.25 + Compiling unwind v0.0.0 (/root/breenix-s3f2b/rust-fork/library/unwind) + Compiling rustc-std-workspace-alloc v1.99.0 (/root/breenix-s3f2b/rust-fork/library/rustc-std-workspace-alloc) + Compiling panic_unwind v0.0.0 (/root/breenix-s3f2b/rust-fork/library/panic_unwind) + Compiling hashbrown v0.15.4 + Compiling std_detect v0.1.5 (/root/breenix-s3f2b/rust-fork/library/stdarch/crates/std_detect) + Compiling rustc-std-workspace-std v1.99.0 (/root/breenix-s3f2b/rust-fork/library/rustc-std-workspace-std) + Compiling rustc-literal-escaper v0.0.2 + Compiling proc_macro v0.0.0 (/root/breenix-s3f2b/rust-fork/library/proc_macro) + Compiling noto-sans-mono-bitmap v0.3.2 + Compiling libfont v0.1.0 (/root/breenix-s3f2b/libs/libfont) + Compiling libbreenix v0.1.0 (/root/breenix-s3f2b/libs/libbreenix) + Compiling breenish-js v0.1.0 (/root/breenix-s3f2b/libs/breenish-js) + Compiling libimg v0.1.0 (/root/breenix-s3f2b/libs/libimg) + Compiling libgfx v0.1.0 (/root/breenix-s3f2b/libs/libgfx) + Compiling libbui v0.1.0 (/root/breenix-s3f2b/libs/libbui) + Compiling libicon v0.1.0 (/root/breenix-s3f2b/libs/libicon) + Compiling breengel v0.1.0 (/root/breenix-s3f2b/libs/breengel) + Compiling libcollab v0.1.0 (/root/breenix-s3f2b/libs/libcollab) + Compiling userspace-programs v0.1.0 (/root/breenix-s3f2b/userspace/programs) + Finished `release` profile [optimized] target(s) in 2m 58s + Userspace build successful + +[3/3] Installing std binaries... + Installed hello_world.elf (227064 bytes) + Installed exec_smoke.elf (177984 bytes) + Installed exec_smoke_target.elf (184968 bytes) + Installed fork_smoke.elf (187528 bytes) + Installed block_eintr_oracle.elf (189920 bytes) + Installed poll_tcp_oracle.elf (207080 bytes) + Installed futex_handoff_oracle.elf (178744 bytes) + Installed tty_oracle.elf (218320 bytes) + Installed df_preempt_oracle.elf (187560 bytes) + Installed syscall_enosys.elf (177448 bytes) + Installed clock_gettime_test.elf (184464 bytes) + Installed file_read_test.elf (182328 bytes) + Installed lseek_test.elf (182432 bytes) + Installed fs_write_test.elf (182816 bytes) + Installed fs_rename_test.elf (182632 bytes) + Installed fs_large_file_test.elf (182536 bytes) + Installed fs_directory_test.elf (183072 bytes) + Installed fs_link_test.elf (182728 bytes) + Installed access_test.elf (177864 bytes) + Installed devfs_test.elf (182360 bytes) + Installed cwd_test.elf (182544 bytes) + Installed getdents_test.elf (183904 bytes) + Installed pipe_test.elf (188168 bytes) + Installed pipe2_test.elf (188840 bytes) + Installed pipe_fifo_blocking_oracle.elf (211664 bytes) + Installed pipe_fifo_blocking_supervisor.elf (177960 bytes) + Installed dup_test.elf (189072 bytes) + Installed fcntl_test.elf (188672 bytes) + Installed poll_test.elf (188944 bytes) + Installed select_test.elf (188832 bytes) + Installed epoll_test.elf (182752 bytes) + Installed nonblock_test.elf (188664 bytes) + Installed brk_test.elf (182408 bytes) + Installed signal_handler_test.elf (187816 bytes) + Installed signal_return_test.elf (188232 bytes) + Installed signal_regs_test.elf (188128 bytes) + Installed sigaltstack_test.elf (188928 bytes) + Installed sigsuspend_test.elf (188784 bytes) + Installed pause_test.elf (188280 bytes) + Installed tty_test.elf (188008 bytes) + Installed session_test.elf (187888 bytes) + Installed unix_socket_test.elf (205232 bytes) + Installed unix_named_socket_test.elf (195256 bytes) + Installed fifo_test.elf (198368 bytes) + Installed fork_test.elf (188016 bytes) + Installed fork_memory_test.elf (188584 bytes) + Installed fork_state_test.elf (189104 bytes) + Installed waitpid_test.elf (188064 bytes) + Installed exec_argv_test.elf (178128 bytes) + Installed cloexec_test.elf (192504 bytes) + Installed kill_process_group_test.elf (188400 bytes) + Installed sigchld_test.elf (182360 bytes) + Installed sigkill_teardown_test.elf (206624 bytes) + Installed sigchld_job_test.elf (187448 bytes) + Installed ctrl_c_test.elf (187904 bytes) + Installed job_control_test.elf (187568 bytes) + Installed signal_fork_test.elf (188080 bytes) + Installed signal_exec_test.elf (188640 bytes) + Installed wnohang_timing_test.elf (182464 bytes) + Installed fork_pending_signal_test.elf (187664 bytes) + Installed shell_pipe_test.elf (183056 bytes) + Installed pipeline_test.elf (191504 bytes) + Installed cow_cleanup_test.elf (182456 bytes) + Installed cow_sole_owner_test.elf (186928 bytes) + Installed cow_stress_test.elf (187016 bytes) + Installed cow_readonly_test.elf (186960 bytes) + Installed cow_signal_test.elf (188232 bytes) + Installed resolution.elf (190944 bytes) + Installed init_shell.elf (262560 bytes) + Installed argv_test.elf (184264 bytes) + Installed job_table_test.elf (192152 bytes) + Installed test_mmap.elf (182144 bytes) + Installed clonevm_exec_test.elf (184592 bytes) + Installed stdin_test.elf (182208 bytes) + Installed true_test.elf (182480 bytes) + Installed false_test.elf (182480 bytes) + Installed echo_argv_test.elf (182392 bytes) + Installed mkdir_argv_test.elf (182592 bytes) + Installed rm_argv_test.elf (182408 bytes) + Installed cp_mv_argv_test.elf (182728 bytes) + Installed nonblock_eagain_test.elf (179528 bytes) + Installed blocking_recv_test.elf (188032 bytes) + Installed tcp_client_test.elf (187544 bytes) + Installed wait_stress.elf (195488 bytes) + Installed simple_exit.elf (170496 bytes) + Installed simple_exit0.elf (170504 bytes) + Installed spawn_smoke_target.elf (170512 bytes) + Installed counter.elf (177560 bytes) + Installed spinner.elf (177560 bytes) + Installed hello_time.elf (177552 bytes) + Installed heartbeat.elf (189024 bytes) + Installed xhci_counters.elf (183040 bytes) + Installed fbinfo_test.elf (187488 bytes) + Installed demo.elf (189624 bytes) + Installed bounce.elf (275184 bytes) + Installed rectangles.elf (197008 bytes) + Installed particles.elf (193848 bytes) + Installed confetti.elf (189160 bytes) + Installed tones.elf (184144 bytes) + Installed fart.elf (191624 bytes) + Installed http_test.elf (468448 bytes) + Installed register_init_test.elf (177016 bytes) + Installed head_test.elf (182984 bytes) + Installed tail_test.elf (182984 bytes) + Installed wc_test.elf (183552 bytes) + Installed which_test.elf (182880 bytes) + Installed cat_test.elf (183160 bytes) + Installed ls_test.elf (183216 bytes) + Installed exec_stack_argv_test.elf (183352 bytes) + Installed exec_from_ext2_test.elf (188000 bytes) + Installed pipe_fork_test.elf (188744 bytes) + Installed pipe_concurrent_test.elf (188640 bytes) + Installed fs_block_alloc_test.elf (188536 bytes) + Installed cow_oom_test.elf (182424 bytes) + Installed signal_test.elf (187784 bytes) + Installed alarm_test.elf (182680 bytes) + Installed itimer_test.elf (183120 bytes) + Installed timer_test.elf (182072 bytes) + Installed sleep_debug_test.elf (188512 bytes) + Installed pipe_refcount_test.elf (199872 bytes) + Installed udp_socket_test.elf (193312 bytes) + Installed tcp_socket_test.elf (202208 bytes) + Installed tcp_dup_listener_test.elf (188752 bytes) + Installed tcp_cloexec_exec_test.elf (189368 bytes) + Installed tcp_blocking_test.elf (203352 bytes) + Installed concurrent_recv_stress.elf (188864 bytes) + Installed dns_test.elf (195152 bytes) + Installed net_test.elf (191504 bytes) + Installed http_fetch_test.elf (464288 bytes) + Installed loopback_wake_test.elf (190360 bytes) + Installed syscall_diagnostic_test.elf (170776 bytes) + Installed pty_test.elf (182928 bytes) + Installed signal_exec_check.elf (177800 bytes) + Installed bsh.elf (579552 bytes) + Installed bwm.elf (331568 bytes) + Installed btop.elf (184112 bytes) + Installed burl.elf (483224 bytes) + Installed init.elf (187408 bytes) + Installed telnetd.elf (183992 bytes) + Installed blogd.elf (181880 bytes) + Installed btrace.elf (198864 bytes) + Installed bless.elf (185560 bytes) + Installed bcheck.elf (299304 bytes) + Installed biconkit.elf (248208 bytes) + Installed guskit.elf (391816 bytes) + Installed bterm.elf (338648 bytes) + Installed blog.elf (331144 bytes) + Installed bfontpicker.elf (346280 bytes) + Installed blauncher.elf (325416 bytes) + Installed bsshd.elf (314160 bytes) + Installed bssh.elf (322392 bytes) + +======================================== + STD BUILD COMPLETE (x86_64) + Installed: 151 binaries +======================================== + +LANE_ABORT=structure preflight timeout at 300s under load; retry once with 900s before any kernel boot +[GATE_SUITE:stem=context_restore_structure:attempt=1:timeout_s=300:wall_s=300:exit=124] +[GATE_SUITE_TIMEOUT:stem=context_restore_structure:wall_s=300:host_load= 02:40:40 up 26 days, 8:56, 0 user, load average: 15.62, 15.50, 9.52] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/14-production.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/14-production.txt new file mode 100644 index 000000000..787f784c5 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/14-production.txt @@ -0,0 +1,126 @@ +cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +[GATE_SUITE:stem=aarch64_testing_profile_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=block_request_lifetime_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=blocking_fd_eagain_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=capture_bxcap_schema_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=capture_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=context_restore_structure:attempt=1:timeout_s=300:wall_s=57:exit=0] +[GATE_SUITE:stem=coreproof_component_h_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_coverage_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_mutation_register_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=coreproof_sites_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=critical_path_logging_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ctx_diag_ring_sample_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=degenerate_transfer_fd_validation_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_fact_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_path_lock_free_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dispatch_strand_census_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=dma_and_log_sink_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=entry_point_df_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=exec_lock_order_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=exit_tally_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_disk_size_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ext2_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fcntl_pm_contention_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=fork_lock_order_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_boot_facts_pipefail_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_boot_facts_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_capture_drain_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_qmp_backstop_structure:attempt=1:timeout_s=300:wall_s=5:exit=0] +[GATE_SUITE:stem=gate_structure_preflight_wiring_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=green_program_envelope_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=launcher_smoke_xhci_evidence_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=lockup_capture_guard_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=loopback_pump_structure:attempt=1:timeout_s=300:wall_s=3:exit=0] +[GATE_SUITE:stem=masked_binary_load_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=mmap_floor_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=net_lock_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=parallels_capture_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=parallels_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=pipe_fifo_blocking_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=poll_tcp_gate_wiring_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=preempt_bracket_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=qemu_host_lock_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=qemu_kill_by_name_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ring_span_report_site_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ring_span_unfiltered_report_site_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=run_inspector_import_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=serial_line_atomicity_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=signal_eintr_predicate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=strand_handoff_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=structure_preflight_parallel_structure:attempt=1:timeout_s=300:wall_s=7:exit=0] +[GATE_SUITE:stem=syscall_return_register_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=teardown_rustfmt_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=teardown_structure:attempt=1:timeout_s=300:wall_s=18:exit=0] +[GATE_SUITE:stem=terminal_edge_capture_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=timer_wake_dispatch_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=trace_ring_depth_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=tracing_provider_gate_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=ttbr0_shadow_reconciliation_structure:attempt=1:timeout_s=300:wall_s=18:exit=0] +[GATE_SUITE:stem=tty_irq_fg_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=tty_irq_pm_structure:attempt=1:timeout_s=300:wall_s=2:exit=0] +[GATE_SUITE:stem=tty_oracle_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=udp_ports_lock_irq_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=udp_socket_lock_irq_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=x86_boot_tests_profile_structure:attempt=1:timeout_s=300:wall_s=1:exit=0] +[GATE_SUITE:stem=x86_smp_enum_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_SUITE:stem=xhci_wait_irq_order_structure:attempt=1:timeout_s=300:wall_s=0:exit=0] +[GATE_PREFLIGHT:structure_suites=66/66:critical_path_lines=260:pinned=120] +Building the shipped ARM64 production kernel profile... + Compiling kernel v0.1.0 (/private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/kernel) + Finished `release` profile [optimized] target(s) in 5.76s +warning: the following packages contain code that will be rejected by a future version of Rust: core v0.0.0 (/Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/src/rust/library/core) +note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` +Guard: kernel FP/SIMD instruction check + ELF: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/aarch64-breenix-kernel/release/kernel-aarch64 + objdump: /Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin/llvm-objdump + allowlist: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/scripts/kernel-neon-allowlist.txt +PASS: 0 FP/SIMD load/store instructions in kernel .text (allowlisted & suppressed: 0). +Guard: aarch64 soft-lockup report allocation check (failure-capture PR-7) + ELF: /private/tmp/claude-501/-Users-wrb-fun-code-breenix/d69ffb9d-4539-4cf3-8a3d-a872ff7c830b/scratchpad/s3f2b/wt/target/aarch64-breenix-kernel/release/kernel-aarch64 + sha256: 637c7936b8c72bf063fed9c0ea20db3c006ae36c246f48168d2101c4af28d1ef + objdump: /Users/wrb/.rustup/toolchains/nightly-2025-06-24-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin/llvm-objdump + root: dump_lockup_state (its own symbols and every reachable callee) + roots: 1 + _ZN6kernel9arch_impl7aarch6415timer_interrupt17dump_lockup_state17h1f33d6ac7668c93eE + reachable funcs: 18 + call edges: 32 +PASS: 0 allocation sinks reachable from 1 root symbol(s). +PASS: no allocation is reachable from dump_lockup_state in this ELF. +Booting the ARM64 production profile... +QEMU HOST LOCK: host qemu-system-aarch64 count before acquire: 0 +qemu-system-aarch64: terminating on signal 15 from pid 12770 () +PASS: production profile reached bsshd with the futex oracle seam absent +Observed: [FUTEX_HANDOFF_ORACLE_DRIVER:seam_absent:probe=-110] +Observed: [init] futex_handoff_oracle exited pid=6 code=0 +Observed: bsshd: listening on 0.0.0.0:2222 +Observed kernel oracle marker count: 0 +Observed fcntl contention oracle marker count: 0 +Observed IRQ-hold oracle marker count: 0 +Observed UDP-socket-lock oracle marker count: 0 +Observed UDP-ports-lock oracle marker count: 0 +Observed TTY input IRQ oracle marker count: 0 +Observed TTY foreground-pgrp oracle marker count: 0 +Observed ring-span self-check marker count: 0 +Observed timer wake latency oracle marker count: 0 +Observed BXCAP self-test edge count: 0 +Observed block EINTR oracle marker count: 2 +Observed block EINTR oracle failure count: 0 +Observed poll TCP oracle marker count: 2 +Observed poll TCP oracle failure count: 0 +Observed kernel poll timeout report count: 1 +Observed kernel lost-readiness report count: 0 +Observed TTY oracle marker count: 2 +Observed TTY oracle failure count: 0 +Observed TTBR0 ASID census marker count: 14 +Observed TTBR0 ASID census untagged-publish line count: 0 +Observed: [TTBR0_ASID_CENSUS:untagged=0:tagged=23297:kernel=24631:cleared=47182] +Observed pinned-placement census marker count: 1 +Observed pinned-placement non-zero census line count: 0 +Observed pin-guard oracle line count (must be 0 in this profile): 0 +Observed: [PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +Observed crash marker count: 0 +[GATE_BOOT_FACTS:boot=1:host_ms=1788835539179-1788835545315:qemu_at_start=0:load_at_start=6.47:qemu_at_end=1:load_at_end=6.44:qemu_cpu_s=10.65:guest_uptime_ms=5314:ended_by=scored_pass] + [CAPTURE_DRAIN:capture=n/a:seq=n/a:edge=n/a:cpu=n/a:records=n/a:drain_ms=0] + [CAPTURE_DRAIN_EVENTS:last_events=n/a] +LANE_GATE_EXIT=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/15-mac-cleanup.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/15-mac-cleanup.txt new file mode 100644 index 000000000..466e6e905 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/15-mac-cleanup.txt @@ -0,0 +1,3 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +After production: own-worktree QEMU process count=0 +Checked executable and worktree path in process arguments; no name-based killing. diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/16-x86-retry.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/16-x86-retry.txt new file mode 100644 index 000000000..0e76f70f5 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/16-x86-retry.txt @@ -0,0 +1,243 @@ +cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +======================================== + STD USERSPACE BUILD (Rust std library) +======================================== + Architecture: x86_64 + +[1/3] Building libbreenix-libc (x86_64)... + Finished `release` profile [optimized] target(s) in 1.80s + libbreenix-libc built successfully + +[2/3] Building userspace (x86_64)... + Finished `release` profile [optimized] target(s) in 1.19s + Userspace build successful + +[3/3] Installing std binaries... + Installed hello_world.elf (227064 bytes) + Installed exec_smoke.elf (177984 bytes) + Installed exec_smoke_target.elf (184968 bytes) + Installed fork_smoke.elf (187528 bytes) + Installed block_eintr_oracle.elf (189920 bytes) + Installed poll_tcp_oracle.elf (207080 bytes) + Installed futex_handoff_oracle.elf (178744 bytes) + Installed tty_oracle.elf (218320 bytes) + Installed df_preempt_oracle.elf (187560 bytes) + Installed syscall_enosys.elf (177448 bytes) + Installed clock_gettime_test.elf (184464 bytes) + Installed file_read_test.elf (182328 bytes) + Installed lseek_test.elf (182432 bytes) + Installed fs_write_test.elf (182816 bytes) + Installed fs_rename_test.elf (182632 bytes) + Installed fs_large_file_test.elf (182536 bytes) + Installed fs_directory_test.elf (183072 bytes) + Installed fs_link_test.elf (182728 bytes) + Installed access_test.elf (177864 bytes) + Installed devfs_test.elf (182360 bytes) + Installed cwd_test.elf (182544 bytes) + Installed getdents_test.elf (183904 bytes) + Installed pipe_test.elf (188168 bytes) + Installed pipe2_test.elf (188840 bytes) + Installed pipe_fifo_blocking_oracle.elf (211664 bytes) + Installed pipe_fifo_blocking_supervisor.elf (177960 bytes) + Installed dup_test.elf (189072 bytes) + Installed fcntl_test.elf (188672 bytes) + Installed poll_test.elf (188944 bytes) + Installed select_test.elf (188832 bytes) + Installed epoll_test.elf (182752 bytes) + Installed nonblock_test.elf (188664 bytes) + Installed brk_test.elf (182408 bytes) + Installed signal_handler_test.elf (187816 bytes) + Installed signal_return_test.elf (188232 bytes) + Installed signal_regs_test.elf (188128 bytes) + Installed sigaltstack_test.elf (188928 bytes) + Installed sigsuspend_test.elf (188784 bytes) + Installed pause_test.elf (188280 bytes) + Installed tty_test.elf (188008 bytes) + Installed session_test.elf (187888 bytes) + Installed unix_socket_test.elf (205232 bytes) + Installed unix_named_socket_test.elf (195256 bytes) + Installed fifo_test.elf (198368 bytes) + Installed fork_test.elf (188016 bytes) + Installed fork_memory_test.elf (188584 bytes) + Installed fork_state_test.elf (189104 bytes) + Installed waitpid_test.elf (188064 bytes) + Installed exec_argv_test.elf (178128 bytes) + Installed cloexec_test.elf (192504 bytes) + Installed kill_process_group_test.elf (188400 bytes) + Installed sigchld_test.elf (182360 bytes) + Installed sigkill_teardown_test.elf (206624 bytes) + Installed sigchld_job_test.elf (187448 bytes) + Installed ctrl_c_test.elf (187904 bytes) + Installed job_control_test.elf (187568 bytes) + Installed signal_fork_test.elf (188080 bytes) + Installed signal_exec_test.elf (188640 bytes) + Installed wnohang_timing_test.elf (182464 bytes) + Installed fork_pending_signal_test.elf (187664 bytes) + Installed shell_pipe_test.elf (183056 bytes) + Installed pipeline_test.elf (191504 bytes) + Installed cow_cleanup_test.elf (182456 bytes) + Installed cow_sole_owner_test.elf (186928 bytes) + Installed cow_stress_test.elf (187016 bytes) + Installed cow_readonly_test.elf (186960 bytes) + Installed cow_signal_test.elf (188232 bytes) + Installed resolution.elf (190944 bytes) + Installed init_shell.elf (262560 bytes) + Installed argv_test.elf (184264 bytes) + Installed job_table_test.elf (192152 bytes) + Installed test_mmap.elf (182144 bytes) + Installed clonevm_exec_test.elf (184592 bytes) + Installed stdin_test.elf (182208 bytes) + Installed true_test.elf (182480 bytes) + Installed false_test.elf (182480 bytes) + Installed echo_argv_test.elf (182392 bytes) + Installed mkdir_argv_test.elf (182592 bytes) + Installed rm_argv_test.elf (182408 bytes) + Installed cp_mv_argv_test.elf (182728 bytes) + Installed nonblock_eagain_test.elf (179528 bytes) + Installed blocking_recv_test.elf (188032 bytes) + Installed tcp_client_test.elf (187544 bytes) + Installed wait_stress.elf (195488 bytes) + Installed simple_exit.elf (170496 bytes) + Installed simple_exit0.elf (170504 bytes) + Installed spawn_smoke_target.elf (170512 bytes) + Installed counter.elf (177560 bytes) + Installed spinner.elf (177560 bytes) + Installed hello_time.elf (177552 bytes) + Installed heartbeat.elf (189024 bytes) + Installed xhci_counters.elf (183040 bytes) + Installed fbinfo_test.elf (187488 bytes) + Installed demo.elf (189624 bytes) + Installed bounce.elf (275184 bytes) + Installed rectangles.elf (197008 bytes) + Installed particles.elf (193848 bytes) + Installed confetti.elf (189160 bytes) + Installed tones.elf (184144 bytes) + Installed fart.elf (191624 bytes) + Installed http_test.elf (468448 bytes) + Installed register_init_test.elf (177016 bytes) + Installed head_test.elf (182984 bytes) + Installed tail_test.elf (182984 bytes) + Installed wc_test.elf (183552 bytes) + Installed which_test.elf (182880 bytes) + Installed cat_test.elf (183160 bytes) + Installed ls_test.elf (183216 bytes) + Installed exec_stack_argv_test.elf (183352 bytes) + Installed exec_from_ext2_test.elf (188000 bytes) + Installed pipe_fork_test.elf (188744 bytes) + Installed pipe_concurrent_test.elf (188640 bytes) + Installed fs_block_alloc_test.elf (188536 bytes) + Installed cow_oom_test.elf (182424 bytes) + Installed signal_test.elf (187784 bytes) + Installed alarm_test.elf (182680 bytes) + Installed itimer_test.elf (183120 bytes) + Installed timer_test.elf (182072 bytes) + Installed sleep_debug_test.elf (188512 bytes) + Installed pipe_refcount_test.elf (199872 bytes) + Installed udp_socket_test.elf (193312 bytes) + Installed tcp_socket_test.elf (202208 bytes) + Installed tcp_dup_listener_test.elf (188752 bytes) + Installed tcp_cloexec_exec_test.elf (189368 bytes) + Installed tcp_blocking_test.elf (203352 bytes) + Installed concurrent_recv_stress.elf (188864 bytes) + Installed dns_test.elf (195152 bytes) + Installed net_test.elf (191504 bytes) + Installed http_fetch_test.elf (464288 bytes) + Installed loopback_wake_test.elf (190360 bytes) + Installed syscall_diagnostic_test.elf (170776 bytes) + Installed pty_test.elf (182928 bytes) + Installed signal_exec_check.elf (177800 bytes) + Installed bsh.elf (579552 bytes) + Installed bwm.elf (331568 bytes) + Installed btop.elf (184112 bytes) + Installed burl.elf (483224 bytes) + Installed init.elf (187408 bytes) + Installed telnetd.elf (183992 bytes) + Installed blogd.elf (181880 bytes) + Installed btrace.elf (198864 bytes) + Installed bless.elf (185560 bytes) + Installed bcheck.elf (299304 bytes) + Installed biconkit.elf (248208 bytes) + Installed guskit.elf (391816 bytes) + Installed bterm.elf (338648 bytes) + Installed blog.elf (331144 bytes) + Installed bfontpicker.elf (346280 bytes) + Installed blauncher.elf (325416 bytes) + Installed bsshd.elf (314160 bytes) + Installed bssh.elf (322392 bytes) + +======================================== + STD BUILD COMPLETE (x86_64) + Installed: 151 binaries +======================================== +[GATE_SUITE:stem=aarch64_testing_profile_structure:attempt=1:timeout_s=900:wall_s=1:exit=0] +[GATE_SUITE:stem=block_request_lifetime_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=blocking_fd_eagain_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=capture_bxcap_schema_structure:attempt=1:timeout_s=900:wall_s=4:exit=0] +[GATE_SUITE:stem=capture_path_lock_free_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=context_restore_structure:attempt=1:timeout_s=900:wall_s=368:exit=0] +[GATE_SUITE:stem=coreproof_component_h_structure:attempt=1:timeout_s=900:wall_s=1:exit=0] +[GATE_SUITE:stem=coreproof_coverage_structure:attempt=1:timeout_s=900:wall_s=1:exit=0] +[GATE_SUITE:stem=coreproof_mutation_register_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=coreproof_sites_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=critical_path_logging_census_structure:attempt=1:timeout_s=900:wall_s=6:exit=0] +[GATE_SUITE:stem=ctx_diag_ring_sample_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=degenerate_transfer_fd_validation_structure:attempt=1:timeout_s=900:wall_s=1:exit=0] +[GATE_SUITE:stem=dispatch_fact_census_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=dispatch_path_lock_free_structure:attempt=1:timeout_s=900:wall_s=1:exit=0] +[GATE_SUITE:stem=dispatch_strand_census_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=dma_and_log_sink_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=entry_point_df_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=exec_lock_order_structure:attempt=1:timeout_s=900:wall_s=16:exit=0] +[GATE_SUITE:stem=exit_tally_structure:attempt=1:timeout_s=900:wall_s=4:exit=0] +[GATE_SUITE:stem=ext2_disk_size_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=ext2_lock_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=fcntl_pm_contention_gate_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=fork_lock_order_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=gate_boot_facts_pipefail_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=gate_boot_facts_structure:attempt=1:timeout_s=900:wall_s=1:exit=0] +[GATE_SUITE:stem=gate_capture_drain_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=gate_qmp_backstop_structure:attempt=1:timeout_s=900:wall_s=11:exit=101] +[GATE_SUITE:stem=gate_structure_preflight_wiring_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=green_program_envelope_structure:attempt=1:timeout_s=900:wall_s=4:exit=0] +[GATE_SUITE:stem=launcher_smoke_xhci_evidence_structure:attempt=1:timeout_s=900:wall_s=1:exit=0] +[GATE_SUITE:stem=lockup_capture_guard_structure:attempt=1:timeout_s=900:wall_s=5:exit=0] +[GATE_SUITE:stem=loopback_pump_structure:attempt=1:timeout_s=900:wall_s=29:exit=0] +[GATE_SUITE:stem=masked_binary_load_structure:attempt=1:timeout_s=900:wall_s=4:exit=0] +[GATE_SUITE:stem=mmap_floor_structure:attempt=1:timeout_s=900:wall_s=4:exit=0] +[GATE_SUITE:stem=net_lock_structure:attempt=1:timeout_s=900:wall_s=33:exit=0] +[GATE_SUITE:stem=parallels_capture_structure:attempt=1:timeout_s=900:wall_s=25:exit=0] +[GATE_SUITE:stem=parallels_kill_by_name_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=pipe_fifo_blocking_structure:attempt=1:timeout_s=900:wall_s=10:exit=0] +[GATE_SUITE:stem=poll_tcp_gate_wiring_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=preempt_bracket_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=qemu_host_lock_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=qemu_kill_by_name_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=ring_span_report_site_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=ring_span_unfiltered_report_site_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=run_inspector_import_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=serial_line_atomicity_structure:attempt=1:timeout_s=900:wall_s=10:exit=0] +[GATE_SUITE:stem=signal_eintr_predicate_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=strand_handoff_structure:attempt=1:timeout_s=900:wall_s=17:exit=0] +[GATE_SUITE:stem=structure_preflight_parallel_structure:attempt=1:timeout_s=900:wall_s=22:exit=0] +[GATE_SUITE:stem=syscall_return_register_structure:attempt=1:timeout_s=900:wall_s=6:exit=0] +[GATE_SUITE:stem=teardown_rustfmt_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=teardown_structure:attempt=1:timeout_s=900:wall_s=173:exit=0] +[GATE_SUITE:stem=terminal_edge_capture_structure:attempt=1:timeout_s=900:wall_s=5:exit=0] +[GATE_SUITE:stem=timer_wake_dispatch_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=trace_ring_depth_structure:attempt=1:timeout_s=900:wall_s=1:exit=0] +[GATE_SUITE:stem=tracing_provider_gate_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=ttbr0_shadow_reconciliation_structure:attempt=1:timeout_s=900:wall_s=159:exit=0] +[GATE_SUITE:stem=tty_irq_fg_structure:attempt=1:timeout_s=900:wall_s=11:exit=0] +[GATE_SUITE:stem=tty_irq_pm_structure:attempt=1:timeout_s=900:wall_s=11:exit=0] +[GATE_SUITE:stem=tty_oracle_structure:attempt=1:timeout_s=900:wall_s=2:exit=0] +[GATE_SUITE:stem=udp_ports_lock_irq_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=udp_socket_lock_irq_structure:attempt=1:timeout_s=900:wall_s=3:exit=0] +[GATE_SUITE:stem=x86_boot_tests_profile_structure:attempt=1:timeout_s=900:wall_s=6:exit=0] +[GATE_SUITE:stem=x86_smp_enum_structure:attempt=1:timeout_s=900:wall_s=4:exit=0] +[GATE_SUITE:stem=xhci_wait_irq_order_structure:attempt=1:timeout_s=900:wall_s=4:exit=0] +[GATE_PREFLIGHT:structure_suites=65/66:critical_path_lines=260:pinned=120] +GATE_PREFLIGHT: FAIL (1 of 66 structure suite(s) red: gate_qmp_backstop_structure -- per-suite logs under /root/breenix-s3f2b-tmp/breenix_gate_structure_preflight.HsTy4J) +x86 frame-custody gate preflight: FAIL (structure-suite preflight failed -- see GATE_PREFLIGHT line above) +x86 frame-custody gate: FAIL (set -e abort at docker/qemu/run-x86-boot-tests.sh:157, exit 1) + failing command: false +LANE_GATE_EXIT=1 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/17-x86-qmp-failure.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/17-x86-qmp-failure.txt new file mode 100644 index 000000000..7e40fdc13 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/17-x86-qmp-failure.txt @@ -0,0 +1,37 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +command=x86 gate preflight, BREENIX_STRUCTURE_SUITE_TIMEOUT_SECS=900 +== compiling gate_qmp_backstop_structure == +== running gate_qmp_backstop_structure == + +running 15 tests +test a_socket_path_under_a_worktree_scoped_output_dir_is_the_reproduced_defect ... ok +test gqb_alloc_socket_returns_a_path_a_real_af_unix_bind_accepts ... ok +test gqb_free_socket_refuses_to_remove_paths_outside_its_namespace ... ok +test moving_the_qmp_decision_after_its_kill_reddens_the_check ... ok +test census_wiring_calls_both_outcomes ... ok +test service_loop_routes_every_verdict_kill_through_ordered_helper ... ok +test strict_kill_follows_qmp_decision ... ok +test gqb_alloc_socket_pairs_with_a_reachable_free_call_in_every_converted_gate ... ok +test swapping_helper_kill_and_dump_reddens_the_check ... ok +test gqb_free_socket_removes_only_its_own_namespace_directory ... ok +test neither_converted_gate_builds_qmp_sock_under_its_own_output_dir ... ok +test pass_emits_exact_contract_without_any_qmp_traffic ... ok +test core_extraction_uses_physical_load_ranges_and_rejects_missing_or_truncated_bytes ... ok +test missing_socket_and_hung_dump_are_partial_and_bounded ... FAILED +test fake_qmp_dump_precedes_sigterm_even_when_decode_fails ... ok + +failures: + +---- missing_socket_and_hung_dump_are_partial_and_bounded stdout ---- +missing_socket_and_hung_dump_are_partial_and_bounded: socat present; asserting QMP timeout after dump command + +thread 'missing_socket_and_hung_dump_are_partial_and_bounded' panicked at /root/breenix-s3f2b/tests/gate_qmp_backstop_structure.rs:474:5: +hang must reach dump +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + + +failures: + missing_socket_and_hung_dump_are_partial_and_bounded + +test result: FAILED. 14 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.12s + diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/18-docs-claim-lint.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/18-docs-claim-lint.txt new file mode 100644 index 000000000..4f02a7cad --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/18-docs-claim-lint.txt @@ -0,0 +1,14 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b + evidence documentation +claim-lint: clean (42 file(s) checked, changed hunks vs 58af1a7fb63e). +claim-lint: 86 pre-existing finding(s) outside this branch's changed hunks not reported (--whole-file shows them). +claim-lint: 4 target(s) SKIPPED, not checked (extension not in ['.md', '.py', '.rs', '.sh', '.txt']): docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-preflight-logs.tar.gz, docs/planning/green-program/aarch64-testing/serials/3f-pr2b/mac-preflight-logs.tar.gz, docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/census.tsv, docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/census.tsv +claim-lint: clean commit message (.tmp/docs-commit.txt). + +claim-lint: python3 scripts/claim-lint.py -> exit 0 +claim-lint: python3 scripts/claim-lint.py --commit-msg .tmp/docs-commit.txt -> exit 0 + +Evidence-byte preservation amend checks: +claim-lint: clean (44 file(s) checked, changed hunks vs 58af1a7fb63e). +claim-lint: 86 pre-existing finding(s) outside this branch's changed hunks not reported (--whole-file shows them). +claim-lint: 6 target(s) SKIPPED, not checked (extension not in ['.md', '.py', '.rs', '.sh', '.txt']): docs/planning/green-program/aarch64-testing/serials/3f-pr2b/SHA256SUMS, docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-preflight-logs.tar.gz, docs/planning/green-program/aarch64-testing/serials/3f-pr2b/mac-preflight-logs.tar.gz, docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/census.tsv, docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/census.tsv, docs/planning/green-program/aarch64-testing/serials/3f-pr2b/.gitattributes +claim-lint: clean commit message (.tmp/docs-commit.txt). diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/README.md b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/README.md new file mode 100644 index 000000000..67cd8958e --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/README.md @@ -0,0 +1,27 @@ +# PR 2b evidence provenance + +Kernel and ratchet revision for the final structure and boot gates: +`cab966e76c46d9a6eae343ba8bb5bf564d1ee24b`. + +01–04 are pre-commit development checks based on `58af1a7f`, annotated in +those transcripts. The first emitter used a second serial macro; the logging +ledger rejected it. The emitter correction precedes the code commit. +05–18 record the code commit and the subsequent evidence-only work. + +`strict-revision.txt`, `service-revision.txt`, `production-revision.txt` and +`beast-revision.txt` map raw serials/facts to their commands and source revision. +Raw serials were copied byte-for-byte; the local `.gitattributes` disables +Git text normalization for captured TXT files. `mac-preflight-logs.tar.gz` preserves +per-suite logs from the initial and corrected structure runs, strict, service +and production preflights. `beast-preflight-logs.tar.gz` preserves both Beast +attempts, including the 300-second timeout and the QMP fixture failure in the +900-second retry. The first Beast attempt was stopped before its built-in +600-second retry finished. The second exited 1 before kernel build or boot. + +The forced oracle transcript is host execution of extracted scheduler methods; +it is not a boot serial. The baseline source is loaded from `58af1a7f`. +No x86 boot serial exists for this round because neither attempt reached QEMU. +Issue 963 tracks the un-attributed QMP fixture red. The round document is +`../../3F-PR2B-2026-09-07.md`. + +`SHA256SUMS` covers the evidence files except itself. diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/SHA256SUMS b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/SHA256SUMS new file mode 100644 index 000000000..5a3c19f81 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/SHA256SUMS @@ -0,0 +1,46 @@ +a81e9269a3e8ee4b7180e971aa6ffd906c40a3a94b41f509a4a8596cde943f25 .gitattributes +0142e87976580d455ce34abb9c0a88f51354909c16bca4512878d6aad88cc39f 01-structure.txt +aa50fc38e59bef9608055ff52569c554253a15f2aad1138546b8e0b3514fa914 02-build-arm.txt +c82d7416d356370973be5c58e1294229b3dbcd6ef011cffd61bca0569566bb79 03-mutations-oracle.txt +8dcaebf9c4ca765ebf080fbe63d44cb90d3765c0b8dab1a746173b54fed90086 04-census-correction.txt +3b2f4aee05bc066bbe6cb5a48381ddef7054bbf3c60eb44c73f577ab9fcf9cc6 05-build-final.txt +8e655f2451a293cac7dfa44129eb00f34d11625f5b4b1d5850ca78a6760109f7 06-structure-final.txt +e4f8fef13499d1c83144544768d92b5ef547f4750e08254b4db11e9e863a3e29 07-citations.txt +e7d946a9c8198b83176afe7dcebfe0d16e9412003784dab2518617d1c5140024 08-code-claim-lint.txt +21374d68a8cfc6eaf457a5ccab40f873a71acd2097ef7b0e38c485d12c7d1826 09-strict.txt +9f64246bf9fe4a6e7bbb56dfb66679f3f12d340865e33b4024a6c9a37d1085e6 10-service.txt +ddc2db2fbec589a49f40c7e0882f3c25ff8206e265b2e7e80672790453e5b53d 11-citation-check.txt +bdf9aacb13ef741e78d1999d348ed1e495ebbb6492bac61e80cd70737f791064 12-arm-census-audit.txt +e6eaa6d667081d0d08e1d0839494c19fa0ccefb395ed8bab5c7b5ac1c85015b0 13-x86-preflight-timeout.txt +d49a9191e9f7c7d22e9373279adcb1b527409d2b76770fe31b124f8ccd76adbb 14-production.txt +3e2c27dce3352878f1b9473fc3a9b8acb88708d908fe32db9d6fb9540fef2cbf 15-mac-cleanup.txt +3dff3f32d2f5ce5b69d31f44360ffe162a0066439152b05dc723fa32b053ec86 16-x86-retry.txt +4973044eec654ed3b4dc72f2208710629316d9a4fd1b29689c130da617314ef7 17-x86-qmp-failure.txt +ca16b56da1c1bab5206c5a3804b4bb24bd219c105a45f4fedfb693896cba4f67 18-docs-claim-lint.txt +e6bc7bca230e9fe259b1c413f6e908e9a5f55acf147df2b1145c6f00ba38ba11 README.md +bb866138867488ec95be848d02e6fec138e42ad00e62721f555f90fd39bc4100 beast-preflight-logs.tar.gz +69177523d4fa0fd429a843ed590b5830e0a16b91df0ae4615db4ca61cc8e218b beast-revision.txt +25d049f30f401ae44d13541a79caed2f0c16613f2b63d94651e48ba2593c08a8 code-commit-message.txt +4e41e0ab73b6fd8f08a736ec8dde32923a9223ba7a9632634effaa4d26690eb0 docs-commit-message.txt +dc8c836707ecc2b9bea1dc41ab7b75a82a5c8bf474addb2ee2d4a04e416b2dbd mac-preflight-logs.tar.gz +d4661ffafb3b2bedccc0e5cb97a97785078b7a2f1aac5e714c92df7a5b36602e production-facts.txt +ddf4c3c80cdeaf2f514c1460594bcf6624710a21b98db5e13b9b4d94f89ab075 production-revision.txt +2d50d7b39ea4f7c9abd5d874df332feb4adaaf4ffebd1d13086c4d4d9abbe831 production-serial.txt +684ce89698e5286c0d60515d4fb2fa1f94fca0cbcf211920424517da6c5e563f service/cortex-a72/census.tsv +745f78f8735485d2cd06aa079210d97f2156e3250b0441b735beff731337a5f4 service/cortex-a72/serial-1.qmp.txt +7e98188cd8480df04fe891a5d009acd2031d8f35c95b19388bf22b427d26ea5f service/cortex-a72/serial-1.txt +745f78f8735485d2cd06aa079210d97f2156e3250b0441b735beff731337a5f4 service/cortex-a72/serial-2.qmp.txt +f89f8b96c940ae6a9a9646f9fbbb43526661f818e03d68574db1053c4d424391 service/cortex-a72/serial-2.txt +bc5723cabd5b8c97b2fbd0b6db9d7a348cc383d3b9342384ef7de840d633b6df service/max/census.tsv +745f78f8735485d2cd06aa079210d97f2156e3250b0441b735beff731337a5f4 service/max/serial-1.qmp.txt +f583a6b37f6ea9d950a3b4524e01abae979547c169fea32647d0af7c78c428aa service/max/serial-1.txt +745f78f8735485d2cd06aa079210d97f2156e3250b0441b735beff731337a5f4 service/max/serial-2.qmp.txt +a4e287d052bedcd48d3d2ba7578af56f8e229acc1dde15d2911923232f4b5fed service/max/serial-2.txt +537a0d99259c184f134708cd27bd282a810efe237d4202388d5260bc7ca1af98 service-revision.txt +45ea0a0fddcb7ef87df21a24ac36101b5ec94d4d8d9e1b7218100d510362d585 strict-boot1-facts.txt +2a25336586793a398028f280b51b395b045830e073ee072275c607138e60e263 strict-boot1-serial.txt +de61426a09bb46498693b2807fbc669f6b84fb0da0b330ad7506f7abbd6b085a strict-boot2-facts.txt +c5d73513bba984b6a8285736258829565b6d13c819990b250dbaacfb44778774 strict-boot2-serial.txt +ce5c8be8d0305842757f415d1b82ab851483e56b20afa9e3b04997decb625c12 strict-boot3-facts.txt +78d07b585933725e2481a5e5a30b59b9d870a8fb8c077cf2813f316234055576 strict-boot3-serial.txt +48f41456456e3c1a7193a78e78738aaf6752fd731a647a7bb37851f48032aff0 strict-revision.txt diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-preflight-logs.tar.gz b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-preflight-logs.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9db303ad3fbe2cbfce15cadd0a26975d95d82fa8 GIT binary patch literal 69678 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 literal 0 HcmV?d00001 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-revision.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-revision.txt new file mode 100644 index 000000000..5483e436c --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/beast-revision.txt @@ -0,0 +1,10 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +clone=/root/breenix-s3f2b +command=bash docker/qemu/run-x86-boot-tests.sh +first_attempt=preflight timeout; stopped before kernel build or boot +retry=BREENIX_STRUCTURE_SUITE_TIMEOUT_SECS=900, exit=1 +retry_failure=gate_qmp_backstop_structure: hang must reach dump +classification=UNATTRIBUTED; issue=963 +x86_kernel_build=NOT REACHED +x86_kernel_boot=NOT REACHED +owned_qemu_processes_after_gate=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/code-commit-message.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/code-commit-message.txt new file mode 100644 index 000000000..0f0cd86bc --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/code-commit-message.txt @@ -0,0 +1,9 @@ +sched: bound pinned wake scans by outstanding home holds + +Keep per-CPU reachability credits separate from cumulative failures. +Retire delivered and discarded credits under the scheduler lock and guard +scan entry on the local balance. Add source ratchets and extracted-method +before/after probes covering the guard, balance and discard dispositions. + +Co-authored-by: Ryan Breen +Co-authored-by: Claude Code diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/docs-commit-message.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/docs-commit-message.txt new file mode 100644 index 000000000..541c3d3e1 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/docs-commit-message.txt @@ -0,0 +1,8 @@ +Document PR 2b pinned wake scan evidence + +Record refreshed source citations, the forced scan delta and mutation +results, architecture gate transcripts, the Beast preflight timeout, +and the bounded scope of the scan accounting change. + +Co-authored-by: Ryan Breen +Co-authored-by: Claude Code diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/mac-preflight-logs.tar.gz b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/mac-preflight-logs.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..dda691659a2516c5bfb5b2fc6943613c436466ac GIT binary patch literal 179369 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%0A1g>K94PUd`dl>1F@hMEjI{N~_ zvd52(-2ROMt&gfu!?~dx*4dgX{}3mj@KYS4AE3|15|A%2qP7I>1o?gc&4C3YPG8}| zJ)^+wxxWBKN%y^~S36m4wu&rXz+@vVz}6)?jv*Uam?er~`iS?+&#zzh2eoo;9Z7*5 zy`tMZQYpCArKjoS3@xEz*frX`Cvm#eqnZ;>S7{z#rP!g{?%p0-u_KJ1v;CH=lgO^R z?fK#JCc!7sUwacsBl(2+`&n9jp9dhv<-2}K?o#59Je%vx8%y3t2p^+JviiTfGPQ;Q zvmn8tA@F&wW_9w|?l%U!)HB|qKOXEl4p#}}N*Ik{KASNTDqXiC*Yng2V|*0Tc6#+NKE8?Fd* zPw~TWFoDifz_%qA3C{=kCV&b8>>q}}dG1Kg)>|DX|4`^TqaI^faJEW}MZc1{?!O z!~z;<@WkytgX$Be@1UK_VVP02_9Fh3h!fNI-%3~20t+TcLQdLF;4Fv}oMQI>Sq5BbSFq`P z)%utp)3$1}-tg)WRi6?2iiIZq#c7G>CHH)eTCsCW^AkS*OVdw2%{VUx6;2OZdYR zNu#rTphX>Epbwub2O2Xq(JcS6o}|1040mlG(A$2%3V^gHv#$VYOelB*DRv-$Y%I_^ zCe99Ib$7@l3f#K3V0;HSO^~t~)x7~gTiYCgk=;X>3F6}czzh~{Ah8ILM{1G-;Ykef zSLB$>$WymUe2&vN`7g;anx_*=6Z|9^SXH_{evp_7M_YQre6LEp-RN&;%`{#}Aav*3utMBJ9NqN^WS^)R^ zz)>x8i^;Kezdmc4Y{`L7z1GH_q(78RVeZ#}P3*uYSA4ibp$C;P`mKGf{%Jjz&RCjm zf*@B`qV|1c{KWMBkCZ;!ghzr=y8NV~UOus#Zs{7KUt&~WeG5MCw|@D6r7{xy`T7;T{yJw07~@|H7>!GT7Jp<`DgsnTSzl$9 z;A(I{-T*9EpquBFJ%R-c44y7L0DlAesgExMZ!ib{^~-oorwqD+k3{LMfPsdPP(TE5 zyG(V?*|pgtrxL9U8_Liw7 z-4U_RChkwd^QtrV13ZNuWb9F@w4~%t(OteR;L=w;iMrpl{ngR7ZRUCHpwLfZMCMsN zuVPCNy$=a^Bk<4<52Fqmv=D~Gi#(iEtaC zuczLJ?^wFks=EHNFGaDj z#}lWq(^dGU9SR2RQA^j&Hh-mXmj2rFNY*iv!+7XK(CPq?5LlEdroZ?E$;m22J!jya zA8V;_k)J7Mq#rqVkI3XU_(k4aD)DhGuJO(E#67J^Rw6#)Z@BZl_XCD(T0+w|r>TyqF9Y#n}hf-$W`loA)BdR^Ca4%Yvj0@dk zn%RE_p#gbf(Es9zHB)2uIw=AQK8|DuiV5xf_rm&Tf48tk-#`-qO$eyPQq9Vx%cj2* zG?e=H*mKkst4X@LS-O)M=nG1ZDa^D2^iH|wDiU_TF=o8)*QwKb!(lj-#eB@UNa)3Y zF;QZf0sNm~cmkkZbj4b*A061fDILNve>IdHlj_4liXrVc_nIc+$RNPqSFE88!hmub zvSS#&4Myn-E?7o;D>UTiHFqBeu$~Ncpu1MumNY_=7l2eC4jHlpo&TpQ1G#Ci_dv-c zxjrZbyAQI-Abd_2UtZkf+rB?D-;U<%1@(6Eq(f2k|}|SuhC}1^t+tUsBg+^>p@|a@T=_kMsW+#Eg@B&bJI{bbIYH|cL4*y4zZHGLcN61#j zN*!I-NkBkmdM#A0{i#PH_Q*}NQZOy)E;KL&)7xAkhry`>g$xaRTR=wkM0F1~^HsgB zWbdiXa03nBlYu=X5pD_%eo1^TNa?d9CCGsMQSPquS-=hC8N64G zE){@@^IzPM<5T&=R7ke;G0VCx{3%biBw|wI{4yeZ~>|{S^U@*bi1;cfAehM z$=f|^30Ldyg_0FpZ(N+>vzPbZS9h0p#_lE>{D{>wdFf}g{qBn6Ov;s|IHno$g}KN+ zUZ82D_}SpI-$)+vuMi+Nr!T#@_czR#oP7AeE?8?+MP}StT>xR|@tVIgGiRwXO(P8$ zF-bMas1jx>Y9i)*nR$dy>HLEEp{}fGw4;OJmp`-e_|J$3L!ud=oPu!ReONH{WL-`{#bqTXc>QjAbk^^_CdyY%l(4gQx!W z>NCBav2I(1cPy@Mm9<|YUTG9hvPYu)BKurPqiNCvl7K7m@wj@*>rTy`+Vrgb3`NIt z@-M5eD+{D4HmLbO1~0uRaKRlM*^)O7f2M{I#1CxI`u%UVUV@qxNVii%ief@Su* z@HU6>sa3;E`NWbyL(T^6p{`RL@fUKulQCm8f>I%gsKyM}G?VJsVe?sPE6*!V^2X73 zl?P5PRn48BSh|X4gg<;86-_1*y&-2`z8&NB>>jlJuP#%9X@|}0j^fJ4=gm~=MR=ra zE8{;QqS$}$>CE2G!nV=$h_km-Xkr`MH!W-CG^L}=T#4xTLs=E5t#Jo%D63)6FHw|a zV3M0FRrr!VNsW*@*e@pMGu}(2@LJ07`h7EVHqjEjKK1>*?!#hs{~HfOcP&im3y0Rf za{v7V5i0F%@H1a*`TOlBL3A2a^*2{3cHT@=Y2e$$k1LOVy^QMC#F`=v@pcP74Lki1 zlfH1{P*qPu+E5r3xDSBo6G~0M`@%ioZ%Jx7uz_|1`-*04#O^uNasv;n*v_H<&rfII zL(YHh0CGJfAhG}oYS_=A$7CVLXz0%eXglR|C|KvBp(zCZL)atigx3ZWnz*2#gCc|i z4HkBOgl#kkzz>93Oqq``KH(U5lg&$@qUFJBlWE!;;L)EoK_n_zfJ2Rew0V{VMJ zyX&uNH_tFUoT0sR7h>1iDaJCrYyshbl>*CO;&}ea+=0TMOH+rK9C;Ey6+G0?5Pr|= z_b^|?o1ebsflj7-@?Jo@k!xYMbhX!eo}woDsdTluuyoOVuUJxfu3s)@^teR%Mq6yi z{TE3AR*`UpJ%0VVO-4OU)nayTQqp|h$6|+0x5dge@j!3tc=UPBK2!!c&d_Z(`eVh0 z+W&!WU_CqUKY_8HJOH@=t@8dk;^qtiPbpd|Bj~}oXc%OCvh@<)5p<3{O9uNhk(MH2Dk|xX%2ojI`fkpqrUqtp8 zrPl&`&%W$Hnpdf<16Pu`XgmLSCB~7634h6W_-g3Uk&40ahM8Eh zT9GmLnaPc0L%mf=zMOY!F{+etim;l+n+^r7bgq;&;& z3k9j;%V`ThAz`{RmUJH|vi3rQ3epER9GJixu?-+k1ZEE3{fkWjJv~sj4*(gspbjAE zm4N48=?t)fP(oBlt+|o`0+E0$?RPe0AtLMCulpQ8$!7kzWNH2lJB9L`4}1E)9yqv- zPn4`}x~^{K2p_<|V04}gD(%p+YA4O`ww7hSkwK9cW;DT}L>TD8-Ia4XQo0b~C&2LX z&Wi}Z`29-nk^f$nIkcO2oozJjv^yN)2)3M3}Mc zGN$s){FOgq`lSD!!f5P@(cf{=weYHRqVZ+hNx7YNKx&!&rLofMXGLB{1D@2KwJeo) zbB`<}&l1^`fPm%N){aNC;*mFQ!sAS$ZE*znUYO0lxwYFn$+3-HU8GgX$uS+2sbxoR zY?rOAYx$aTLwRHH@+*Fz!(DGmmsByr)OWp|+--Q=uZ45a(p6ting#HF%o}Sqn(w&( z9MKqA6LZ=560-EQTAV6GwZ3tvEb%mSy7|?Nk9)Jf=~No=58cT`P;MoFB@1{SM1~J> z7DjsW@t4J-M2+yiKtHZj5?Cy5QFEtfs7Q|9Tc&0U(SL8SAO?YQV`0({Kw7A&8`Fgi zmhw8Vy$(byW|_I8$t9x!m4BrB|A(3%TD%Ue2HUK4pa{uQzW)&$D+5>`0!TUlo_7EZ zDGD$d&N;?3P*(t2CUFxyBS%n>IS^@s?c;p{{bw;7^(L6Ga|K2I+ur^Y#d8iO3|ZWG z08lOhbU=fHA&rW6+lins-)WK;Y{1qhq!FnpE7k^rK9WZmjmt8yPUvSrR+%j`EN(F; zOm-`w0Dl78U))*sSN?!^8}s0>D@mwO{R5a%dsz?O@;$k~$I|j#s|fqZVQD zXu;H3`PZ*cG!aoPHtKxYR*mYNw|k1UQxx)Xg5};8wC(6(ye=4i5_K7o;r)4b%EkSd zo?&B8eN%KM-&joX{vW2H(+$?d7i6@JL+6$bcAU1FJBH@U^TCtTBmCAfSrb{?c5s2#9c1 z-vTR2(8rZ#F!bdv6zT2`MAFIpTS%s{*b5S3GRlD3L&)pR%g6&j1PQYz^Qu9`kw3(q z17<;y3rjn63CwxfTm+^)^QcX+Zh^Wwb9>7*!(OrM5bsjs+mz_R>?@VVA^J6w|BV zZ|}u$bv>*Phvp6Y_KV4IA=pclVn;jZ#~Gu@nQSezGM?dlSoX?c%gEP$;QbI{EJWR- z!%enCB$eIJ?ZIqxH!Fqk&xq?xeOIwn4@J1nCz7yF%9$y3dj?)Tu1x!b5BMIG+K~@) zTn2ft)PAJ;5#&)6@2}^-qrrGXV(n5AH_>(Y!#ZqbS_85@u-|`^a^S#Rtn1p`HV8Ew zfQw5ZF0cyaM7c$wMOpCoUZePKnpOk(R`$wtNZJbk-t-L9n(kXL%y;ndbo`E24jfa{M}@-lC$+4VzQwf051!nsXQ&G3-!XLY2&r4uN4 z6c%qHynF}&#pW7teg8?sJ@|%O(mkzV+rfEG6V|e3l;M+AWwb7I-`g zG*5B@eE-Xos{!3WCWm=l_eD_qy32sCG}sLJK0SjR<4W1xSV_2h4W{wY10A5|lM@Nn z2yI#o6sVWvY}X+zBpbGTyS^mmuo>{n_jzvZV8i+$YXu{LN3g zA695#1&6p$iNAF;|E+DG(ahPeC!tTP$&~lIMm+;B6>?O4)$m83O5#AF`XoBQ;lya* z4a>&>uInE9(J4&0?I4{(CK2869QZ7NeeG{1nv3`kJPX4?4Kr**$u^-rzkysX)UYR; z(U)sCw3q53YrD{;8~|K3pk>V0T`2EOp){=9=s&38iUoAfu@&ecaRZ=P0zMFpfEbQd z3KIISV+jV^p#$db{ZoV3 z@^zJgdM*C)x)2s}MTTY_L8 zW^hp&Kp)&Rx3;M+b+CLeSM4hu)3ezjcAsA&B9J*gqmt?P{IWz$-b<|*Rr4!H!g9L$ z(Z|x+oB+S55A)}YbC1aywI^5Q>@*(y1{e(o{YRE}o$A9LSi;+2r>_)zPI(W%)d(Dv za$58=@80aDNQUS}{qo_DBNvnXh4=cIMqczy9jTQr>K>o-BuRLx6>U#H)Hey5>p z*S=lfOUZroVO%cr0qM)NZ&3jjsTC?5`^ZyDrW`r}21!}v`(~%~Apo0HGXUgloXwuF0m64F@*t*`N-6`xm&p%@JW(jq-g>J%0zPQJGsygp#0&gKnz0tY6nnfQZG*=ADome8t}uYn=rs7 z28AW>sqm)N#sa-S$k59H2ToOqJMjlcQ8c+r{b3=4hmeokWXC`k*&*Z_9UEW;AZPPu zeclXBltXp^$yLEJDn6|k5&IzelUIYb<`d@q?$1$nzs@A&_4*r(ORHF*iE=~vv|X{U1VvkM(cYqoQjdGr5i){nFi(O1 zfr0oJWAkl1v;4LwIR=MU>V9Eg*9l|HdJ(^sQ|ljlDvmbOmL$F_=<{X9ZhZ06ZKT}F zu2kPsk%ila9zB(7U1KuyRgj15zy*cl{p7jtKwPR|m$*B5@N`+Oa{nVyUgP>Fw$9@Z zxh*q%X{2tRDC`E{>sjLyz+Q)W^!?Tf>>Dy#+bD(S{b0NS@e5rde$8V@? zi&kJ#h-Dq$j)&?*(#ya3Gx=FDpVlNtY@wv}lB(A5KJXDakq9L7BSGC*Jklo|DN2F2 z_42~4(F`2bM6Ey)0A)1W#l9#j@DVkvlnDF{KQjN$aTvD(GhTsxWR*!ggS5hvfWK4# zAgu{U+garn4g}w^IXiapzxI|QIDpo$f@LW<@POXGF|vCB{9R1=57Z9MRYVV=jYNwT z)R=*XFq*SjnN3~9;@K7$D{Fl}%{QUS`*B7kPCDq?zkLZj61Y#h2ry+PqwVJJ`_#%j z=C1RS?f?4ln|$_(p@{mirwR|xvs4S&`ct7Q<&|gl7PBi6yFz0chWXVgdVg=4nw+qr zB#^6a^LNuQ)kh>?JQ<;a4Q44ypvjFwXF;kknhX68$ppMVl-dA|g$M@BHE(jhmbqqVNeLVz+ku= zZvYykd5f`g*y^=V{WGE>x9467t||+0`Lf?{$X65u7dqDlurI-2UylLP%rg|Qao=Yj z)kD${1fdxufi|bOUGmd=-K%XljeS=QRURCBVjCw{m>YCx-mTkXzkctfMA|FVtJ_c6 z-#+Mhz9TX(;rX^iMw=w_)0lePmn(OsB}rS!Q1lZ>TZWh_Yf=_X5Bf-gnK97FA;h6$Cll!q1beXiI5DOQyvWTED!0SXEQ=nEy?luFI!D+TEk@#9mB4~Z|_=m@Y^p&S=+|Fu5Bp4N z^nAS*mrKULTiPlk`TkqwubArRC9m?Ww1PinmBcAT3DRgJSaK!Ix2#wpn~HoX(pL{O z*R7nNCu!e5U?A>O&t1atFM9uo#aXSivGeSyie+Vso@Elu=H6>7@1{k=pMnm;A_Tvr z4;8v4^?&3fOvXhAURwzn5S%0|9b1`fCgLhlPKgjSJw`VY z<=)LSdj@LU{cJ$oeY9WU0&Q0k-Rs!q|T98P`ryEFLnct+#F_;8u}o zHpSP(MOBt>K?&Upmp`$t&Lk?nKDP@EiGDo=BdU8*g_A6#&frz8S#6a=$v=C`I=>V= z9;mTMj_4)M(`{!X4eFkpso~a8Zw|TMj+2v#*m#hbx){VY@Xb2ISFjB`)~^NIcqDkq z=!lAw`tIhE();q7=pX&4W4Y@ocimviADd$=;1$GXAL#2f_KbTW?*qpl@5H< z8h_C?arHk~d+VsE`nG?RmPY9klukifQ3j+-P`bO3ZiJx(Y3Y(sLTQjLhejId?ozsI znEl(seZSB1p0n0DfBn{8Yi3~YH4FCs#&unvxTG?_@XL?V^fazHl!OU=)h@>Oe4A6G zBCOdRzSI#KnC?t!Yq+b8Pa>g7^ED8Xp(N!(B>Ap5sv5PI#%^P|dMtc;O9aibK3)z& z`t`nc+q?I{qQB14{gLUCW*jCDBto zYW+Rns0OR5f0FSoQa%2#r0S~HMg}LWZJ|GMP{zLUi40G3GoC>3UN7-9TBbdj2`;&X zsPN~G0+yUER4E3$j3;=6eH6)+YH!vnc3S>6%|_UIo1H&2Qvai=E2YL}EzEu|gska2 ztY$SQ^7J149@j_0r^^(dQ3o6og7I5pUU+jnE0--*maTD4C~V1`#2T;dOTlqb!aaGf z9<16yJGAXH_k)Wje4KQG@RX7K@k6?H&k|1if;xCD-&YF1#$TnDx-h3t2+2nxM9KJCV02| z5KDJII)9DuU9DDu0IyU$d!Lui)08Wf4ev3!8)G!g6O#bnhT3jDi+dTY%zteXAI2@d zVLp1#!B)J>+eBXWVk#DKSWsAHANK#_pMD zvUyu1R9BFgb96f<{9ctWYF8f>`CM}E1LY9$yx8v|jaXt{95f7aJM3%IWuFei#}l8> zRPkkrL_VM>vPFvy;N(o4+I{}C`ufC862~Lg>Ns9LJaSS(y}3NF>(vUq$i6m*JK%g-53R3e?wtk^xMg*VNHMgnX$m)2jga(DurrTeL=Hy7^Dck?;_@Y-#Gq**pHrCbP zSUnL{OFZ-hO~_p&p-q_oG2Nb^)$g?E^XZuR!o)hvDKVU4we4oZ^@(pLD@EUiB)$k^ z$vW7F4)<&47`&hpSYFy!xa!j?-%~lS`f3|xr`Pjp-a#d0t@llS(TIb0(#0#uwGh7_ zvf|C2)vktl8=Ri$!A0mFf8WfHU~_Y-XbG6U8}&hpB8N$LHqDpg{W=!V!V-P@X(d1tZ_PG zIjKL>8cMk|^`z8#q3H$Acx1&(Y=f4Eq%b4%==9NwqEb<%V7m)bV?KVv(qU>532f^8 zHOXS1j1QdMKYx;Sni7pRzf_$0>N+=CUrWA$-6WI$o!5zL*b7as&FNZ`Ta5H=%Gdr0 zy@-`Y$x=4o-#O-gE(k>#rHC=Z%Db7XTKFHX7KJ~4c4XD$Io(?p!~8xrhUrSt(I86T zdwOo8+CIn5QpSoa{Z=+Nd_1i$uMxF^W1zESzV|B@HB3+Y9i zSl*~Wn`TDRnQw;WZ-#$&(pT+5DDWH`cBi4Ck)KwfU>)lh@KoftS~%pr0$kz}0Q(=` zTpoZ7C``}^?vmb%Q}aP9!Xb3?G%?*}Q0}lb~Jv7SI*33R&3r z^9Sf*@#(`hmXJY#)&3iXPOZcrLqVIoP5_57VD1z+hrx5H1eGPB&RY}5L?!l!0MOL7yP zm~H<^kAg5iCURZOKN<^5wm67bC%-#xhq9+7N-f#-vh=B=ydDY8<&Ssl)|y1-iP z>VuXqd(D(IX11@p)aBT6ihtRT)_*Eyq$`XRR`b7H|8(6S5Bvhwa(kgWkFSU@#2XQh zuN)N+842(;jpHQ_?N0z}FBF-N${y1%fN!2#H?Y>FCw~xNaF284_!^{-XP5wM?t4%) zP+@a$0*3ThEa|)cchn}uOBil#B9L?lMFX}lfXk+-X#hhpdmr??`d`t!)49VT5l^QyEBXDP(9O#{Wy`GoqG5d&2WQjYkN(y3 z(O4`<3^m2BJ|hFQ_-g=nZea71)c8odVlCS(m2S$5vPpr;^NTPx0&`9J{E&uMyjzR{ zC33}`Idwv^S+5zApX|6NQPgBVb4UzPZly3WMLBxkanb*Re>F|k`*<~8t>$gi>p||# z(Rd5K_PjV_49+rk^C|Q)$98j*ur6?r5NbHy7R1$q#mWrj;CZah{6g6Q`GC1Dv_j2nv z`tw#F{Bq@0zeDt|9${&*MSX} zhnL7-Ls)>}YD9(^K;d=(tbi2>SkG7$u%mLCc(xQ@0{FKOT|wi4EfmDf9CxW@J4g%$ zzuL3-HXH00IR$EB{;~bP^Gjcb0S;9-6ee=0k3h`fGTWKp+simg@}mLrG)HWaLI98a zA>1hJ@dnV?KQ;Bx#`0=~$lJ<}bOE=r9Hmpf@x@!if< z_KA!RUyfDu>@TmeDMahrusTEd$xm)#Jo`dTS}v#hJ5~EuT^e&1HVy%&lGRe^}fZdm)Y0LN_iEH4MU&)@P}mk$p(#cf+>!YvXn1io6J`(#&= zz7b~3ilrrg^vRNafRj*(I@j`>QpDE}YM36d1%|hNNx9@D6}Cd5x~$x5aVkavBcC&q z{Hvde^yz9|bt!c-I=e?T*;6nF*{R9Qv3XYvaCVfg;zCeJT%#9%ImsyOpe31BWU=VF zCfk$@4gPwZHu{WT8pGfzzR=UZk z8O0N)W&q<>>f0*(`P`yR z(QJSqqCo8e9)Tke94GP!R^(7r(MNo{0gNVZ0gpddU=8OOcyR^oyYKWIu$oQ+ro?)| zapQ9iWh8lNfxR8~c)5HZsdWG=S*5VA8cLTCJm4EXs$(61C)o!$W&ejOpK%23aH4sO zP-zED;Ly(gfrZE>tV|0Gkq^L*G%Er|)OANk<-CTi$p0+DXnxzAkE1V07I>52<1vce z{HENY*N$7iAc3t1&()Yclh2i$VQ0RQXu<=x@$H31UYvqicsk={gWn27ivF2cHye?u zlB^~R=V;K>V@x_VcbTp+L$Tbl0Y8I+Rt+0T-*MQIQHzdHZkI~0B~opMbpC_QKe<~1 z(Gjtfs0&d*zn}xoKV>T9>qQS}Q}zkTX2yckKSfI&2X6c+fGN5z5bEdu3eaa+_hDYj zzeHXN7QLQ;?Cm>KD)6i3vjE43s)+2H7kNnG7hrS@yqg8CGWHm9cEBPU3!-1CqGg`5 zwu3iddq7AOWh4=BTrTz50t9D(g$W4;GK&h+kx$lpbQPyP+rbz#sRVqBwA4FejMl%(?Gu~j3;7;ejb(w;4zZrNG(enNl z=I5S$9#Zt!{R9)@lx8}FJr^QVi^?<*!_b@4_8J}3-M%Eqri9Q|SM-0}`pd+a2Gc)& zBd%PSC8eI=SSKAQ7kwLISYS!?p>(HISv-&m-8=#jT@(5>ci?`S`DN#GjqyEt3T=9CPcCKm@JW``7uy6hShsiZSh%wEF z__~k+pCz4*_>$~ibHcr~-FZRxw1+Gj-kB~PyrRTg>h=5TOSW&EnzZuVt}3<7_<5_s z2jcAP6$s+=(DrZ~;@*h5;dszmW7IXg@K8wVRjoJr!+9HOhd}B6 zagz6S6=T3sPn&7myFB~wwezEyP;ypn36J@bCZ1aP^mv;iPX`x8Qdm?1(GDz0$g;J^ z<5p8a1bVBM=yb>PgQea;J^^)NA8qWOqk!{P1p$O#!ETPB+nA(4!hdJ&ztb0pIR^Ul zR8dsHRlg4)K@BKa15WnZ$~Q+qnC~|!%Jx5U!h46%KfcJp%6|l9KpELPhpzZY zAi05etzdS6Ux;!W0A_HRCA$KG4H=iQ91$=2^xLY&g|$&$uRy0G0J}BdG7o4P9-9QB zU%P0bix}4Dqn~DQv}&hg^K%D?q+xgPZu*ZUA?(S>!^*Py!Q`AbBPhIj;P`oeNGXRK z2eHTM^#hG}mfGA53Jd75#3|IRHJPk325zJTF5i89O~Tum=#r1!HG%-kefXk*;N4_= z2{&?>dOQP$mBT&28@wEFU7^C_jJOL40h%^wBLG-mLY4v8nFJj74_d$>R0t8Pi=xy6 z95r48NwP=Cs^=MyOQQT6DpvV#sF~7_iF8NJjs|kcQOZ98RZIX#w!53H;M(Rm3vk~W z?|_``ltWk`ph`I8XCFqG!H`W4x1t7GHX5yfgBw(&A_FW?*U0Z1-WqXFHJ&XAIo>vS zKWorqAm1ZWiWDI)Y!RXk z`kGuV3STC+7i|`zvcDYhJR}HKa%QUEY?7K5lHnNqk_Xl=pMPyyS526E*y&Lhe_uV< zVnnTS!8%VbF8~Hs=M<+5jQdkY@68CoN_#5|3#o=wgD^r%!MtgTB1i z=p0%*Oeo~Wq=Bq%S^WclfOY0ZFl0ISc>(3*IqgM+t;2MVm!yypDG88E0Sp_BAysid!Pej51(xHz{1 zM62o*j6SbSFUvCqpq7`w`7zWRZ1XY<1|#|z>oM0`wv{_#uuKkjHs5d0#r--+VsR(l zY>Ge^wv>O_--b}wxRuO9qdDA|J_mi2CD>ZH=0~p2p@^k}B_IJfFv!Y60JBnR z>#-`wkCB+^y~8CUI5)R>J75FP)&yWOzyb1a?U%d;84yU=gavVLC%SH06-l=xL_ico z{_Yu4ve?1eFpO~lEfapk1@RfM5&^e$w(bZi)jRUY9S8@GR|yE&_S;U^0l5r@?ft7e|qdjqDGA8Vd^8IvSe+ z1x&%fB+L;VDVzgUIxjy0CgNA1;sMOs5^-9q5g`7vgE@nwU`zr;Dj>1oy$=!6rxOwY z>#^ztBR9DL9OaL=osd|7R*hQ>V zMtlxaXS$A0B|Y6bKMqBZvFjE@q*8rhR+-k3be%m@Q7u-YT!h18(B;!M`+gSMWNXBA z+OukR;%Va$8NEnlM4X}+{FD;eCmu4^Ze)6w;rK{vtWs))g7z^t;iz_v)JxS%mL8{x zmf5lje`j;0;(poE9Mtn~E}gTI6Ixjzjs-7tR0k~MK_>PVg+D-o!sIBADs{Z{{>pIx zYaPS`smj<9jQ{3mM9B9A1H?%kO&=if??u+5h#sSJI5ZhNwee>LP*M_@0jU}!2>C8p>!fE52P+=OAwbgiG_!Y(<59!)>7(6UCYx! z+^mI!m%UZO+YZ%qeqciMEV7!fJ6U#innn1%u$xLjrI(ED2nr#3#2_*IwWnS9-y*%R zzu&gu{^?IjhlgrC80rJFFU9I`1(y#}1fJU_6`_U3SS63?(Qf-!xmrTVI$lUMsM`nz zi(^bbCc{yBIFQfbg5F}m^0vNSw-ev6X49cRH0~pvfqSZDF5gVWmw-J;_gHj%F22=tW>DGLhOh|5nz!4PBmycVo z9hh2%4wD{Qf*mY^p&;`Kd|;6Onb_qo9V>O>&^{qI3h6#`TfPSy3jE$Ktq>l}X>$Zo zxi7+~L=)UK`~TfFw}cJrOSh_Qf4=p7991txQmD#Vi`r~u|P=PGb{m*V|rrNTp$FM3A~ zT5gPi?LxuYz-Zf(xI*I>TC7yP@QvtWC?=vP1?UG^Z2e=6Kz8bS44QF~n;v?Fwa>K- zhm4lQ$u9wj8Cms{XkrVlEz}j((}U_E7>_q=6YBf5a8|xewvV<)jBMa?7fY z6=6%~fyfyl=F|}iL5$(&t2gVa1s+@vkJ&zui(Ho-$k4uSzk)pfCM!&-p~ja*uXpzQ zXBkc5Et%dZT& zLmw$6hVyQ%KZRSeeAQ$9l)~&~^uy?OZ2SvHK8rkpuA$-YBJ7+~4;#yP4xzV;J;+Vk z559yo_h|_HB)klKMEx}g)`EC6%>ksh0rCKz9zsbRkXxZ+EARk4z~&Y#{!R6REkWp1 zi~z{f-=wJP2|md4V3bMYh5X99FKXpH1=`Y)EQdefIpo1}dC;PFZ3n?-N1Knsu_jcA{9fFvG2=fQ>EA4gjFzU#3a7uz=-BYN;aK?6ZQSxql$Xbt8?-Oi zt)de1@?WC)1ZRDZjn?9=P2DsIJRM&3JL#(WI6svbqh}UYC(gAce>{5q)aYwBrgc9o zd>>D7>v&E~!Ig5Er0T_|*&}O5wd}nle_BK{cfA@%-P(t&yfksLLAki0j0i!qg-z?5 z;|_K+QM#9CYL*M0=uK>*ian?)@%0C*wxZVlrVM_>;eF`_ie7Q;wt-@qrow>57Ez36Obv2Jw}d z_)DAq9VTk=O_Xo<7$U0EL178m+c2#30j!(VQwbmS&A-3EBI+h9e>C%2a!QJkaKnne zv(Q*};PHq}v7d83d&+!rFb+2)Bm3sK>WDWjTUq-zRLH##QKH`@dl@@>FvsJgq%|l} zrCo?Jfrg-+KXE~&%^Nx-{NxPn3o{gijIoLMT-G8&flc8n5OlAx8rM{itf=x7y zT(k?$K*z4i-4QfcSw{o0RYOn-N`Vu|r56}Fk%HY;Rpt;oeN3KvKg-DM=6v5R^)2^z z_ZJctZB%w0bJ8g=k6S|8doj9Z7_44Ih$r&qzqiD!q3tsc$jz~%cYzP-I4t=cN9Xsz5kl{gOaf-lMEVhp`c_Fsg2$j2}fpyBd-D(=byW3dGV`> z)R)u|@~H%h#Z@MJ^te{zjKtTdYu6zruIF#X)#$qL1Rh!y$+;#?yIP7S4;k7fcn$^g z(!_oIP`Pw(=2H(_P9ypo=;3v#w!Py!X{$%hf6p-wF~b~+yOS^m#5v->h|9<=v~(4$ z+8pBd*t#a_u#ZtCk_yHPbP<{xPye8#`+I39LRG9R$Vs`B`+*Mo1C&Hp;$rzSd_A9i zjl((W93!~HyosMrn$G0{NAt4BE*3AWLsoHRUaGGwuqs5u&0)ASisTJ7%ke`lWm0W| zh!ZbM*MzwC)V&JDhE5^lo8y$D!a&z>gTl#C=Pg1Wr}@^T9R?Yy7YYx(C)2X&zHph+ zK98Gq4l|33GG=x)V;ZRU$V+#Hk@z+@%ycw#(510XqT%~b(2KZ9Yy~D9E<03pJk#9n zJX0{Em22{D<=t?amP=D0ndU$Ds{P&PH+@8=!b1HCC;FXJ6vi#7je&FXMeNfJXT583=Y3}qu57{k1O5H7%Y=C#R+E|5f=>IFl$7F)z7j#}S-S_# zqb6Pl=ClctxeSAY4}|!9Nz$Z-psf3bqSyH6Z9&BnMHgzm>h0()8Yw3 zrQ-0uo=50{G=q$d=$dKw8O{NtNSIlM9@C!0G=YaVimZ&kd@kcIqG*0$;Zu*7cQAjz zRE%`l=}1&k>d2zlL;B-w?c4hu>-kvEgHp8ET?(GH`@=;rcvPPj*7|k|F=6RZw=(q; z(>r%}sR#l7aH3p?75cN+sxd(+2XFiuGBDLt0-~5%z>wM@MDK1-W5287i z)h9$P0S!FQ=5Fy=MxsRS*)R2pwqE#)9iV{W{1xQ-0%EuHZHK-QNOJ}F)30u7E+CZ9 z_?Y#U)U1U6J$4fDQ$;5q*B+=sSr1g%0q5qJ-@p6_?!t~Qi)A<+nLZ1<+1xwLjfx&rsuh{ z8h<<7c!)lDL=bMPw1Yq4PeO#fgc4OLvAMbNPhCgzQp(pu69yiM@2_+k zVohm?v!2!DXdFgv$%!YZx>u-4&ra%S3O}Oefk_p9?2mn6RUjVbR6JVK*P=}}Nu2kQ z=xeF__cQTPUJ3$~g}w!t{>0l#%d=;Nt)U=~6wghuZpn3jzWZ%!Bj4Wp%JMAiB^l8N zKlR|cZwXjMK4si9~wN_TGtPKg!&di^lv4C4*A|x2d`T!L(?4x zb1e>lKo?zk7AR?sfp2kBtb@KSR=*Hd-BKz#=%u~XACVcoRwR(Y`{?KfcZZ*JJ14_ zhT`iqE~vo{x{?z{TFdKVrj^z~tBI5H--pPXaiiP|)eBe?EcJ;8 z96kYM_t2Vk5PD_EDh&jAKKJf@p9jF~Cjfg0!9644o-gl@#Gk2`@Fw82*Mx8lIb~_ZJ?|uep^SRUg}4)wz`ast|mps(*;(g&a*ds%}q>0IkS zwLciu9Tb59PKdjUMnGw54%ilA8%(W{Ky$f@06Qo@#Q~r+U;>V{4o0;gX2Hsj0=COD z3T+Fz(@G%A{A+8lsSfA>0RE--;6%@lU@w3LK5a)Ey+?5RPOv!>;^c4%@Aote)XEs2 z0NzNFyVWI_)-M9HegK2@jaPS2X1%w0dbT2~3ORG1HWvRY2u{b_qt8_fialXJ-e{OB zY*|FPb9=S#ijp;;9KPuZJGWE>~b8qW6<6JMilYiVm?zZi)C7`wn&PqT z2o1A-R?ZYl&uO8{CY}%^f`Tov zMaida)uH^$0S=Vv_~VAR+pbg*#V|txgTnL10cT)`mBS8HaYLnKFOZLH6JYkGV?;U5(@}pndzSLjyOoLe zN9A*E$G@}}&Lv(Uae?fuWK8oxpfc3x@0$9uUh>1ZQUl2V1M`V=#?y~UQ-OP!_`Al> zXuU)wU3i&p+FN@R$zSam`3?mZj>gbjSjdgQY5O!76F#C(LY&hYTbKr$TH1CAKrsf% znD05$Q+|xs_pjft^*CFHYTFyNzUmATC4(8aVNeIw9`KA{rHV{x9u4Hu`oE$-@XA9B z(qu0b^OdeL1g-2j>i%jO2}`{^Cs`^qCELbp(@CWf1Nt=8Jw)4AqvC=#f|UG{m~r~Gr>ElWmrn;%l$BU8{y zFk#8xrbKv;)_l1(@uLo}$#m}hH1v%A*Ct_?`B~&+*-uGq(!P9yl%S_VwrTMh_Sv>K z4w4lV$I*tGUw0M&Uc}FnN2F*JT3_oHeezY^eC5%e|J&hX=L^<~$rusZ-;1S&IQ4J% z9Ey3Ppth2A4Bu;h?qe-~eg%o;Geb){OC2^h_C62C=jAdbc$8uQc94)-ea6r&-ztzl z`nhQG;7j@K@g~~{fpmj>kJM8KA}rF)YgJ<3Wx1>263>k%s?kI-h~oL*5q`If6-%uH^Br594;U;lp7 zM^X0&UM*dBZv2TCP4AawI!`|?4Iy9SRkhIO>-L_@%@JL%_P zB^=gs7ia+SFTWF)swP*WfAr<&ME6D%PwsFUEF)>*fyYckC+cuX?? zS)p z`#EnqSFbG|VdJ;*D?L%MeSF`8NxaFWThUQORBS{kam<|EN-v!D{Kxr6=>2a&M{H*U+nHKOQe3s#Vr$iNYNUXNZgk^$PP_?Zm|? zT9?l6$G-JxH^KWrkgD}oN!sL-kGuH3+JPrken1`%s#cz{qKNhUu5qrPlzJynDZAa$ zp49WTBp^SzQ0k#!H@kX%8O|n_*ROYC^)b)*WBEE5J4PCQw)hbZ%KI6U7jlL`>um7t zEjscla$3@zeG4m|Ry`*`drs-Q6W6v`6i4iEPF;5>Cja7cMOtY$z$$12^D{?$@(i!a z!$k-6IlryNHL4*)c-#u)t@D27Nm}3@Zg(>c)D8>dk=54U>fk`d;s8Bv>djxMnF`+n zG`D}8iN0voc<1>3`*TAB)>T~ma`O9(dppy9#Sb5p_`++Os$M=?dHqRvc&nm+$Nxp; z^RY*?=|}BYME9Q@7`sPouyNU77)B{+e*O99f$eFXso{l@$WG$7s16D(_8)V6V5KgWi6uCil`ko$Rar%BP{;@F3j zcE3*`M>xMUDm5^)ZFD{OW${W4V_3DKkNZGd0!>tv@>A8}_kd>%Bw4EwsG$OAu6FAS zB`Fj!U4^e&nm*WmPLIdpaaoSsH~He8xSP$ekR)gB8%&(?F34}?>+Zs9J9DYS&X-Q_ zD=u;hn_icMxO-xv?I_LiJ0Bnjx zewE(S+zSVzA6#~^_cZS>%#D%ylcN$4(s)I0QG0H*>M)uV1io{jL}(^TX`6Gk+d15q zS83W8vR5HXlfoI^U!2(2Dx(t7`MceBggr$C-r_tX8s{In7LpX46vid6Ic!ZE{<#7# z!NR`j825zdp8ZYlEg(c@1tZ18}pne5P&w5nj_bzsKni$M-{j^XJIO%rbKi3Bx|h^1SAr2MNnIZxqH@i_|a|FG9ySiwTjXTOZr`L09LazdE4COn%9n}gdE{B z(5VCgqaQ?Ay)*`@2yX@RLF15Y=bLPK*wWM-P?C%ny9@n=0HeVF8!uT#DYryjpo7CX zBtzmR+qmk`Mh9#}pL#oNKELFB4vGA*_2D7-`v*_JhG2BVXP2<5HH42IF8t1Ym3;+D z$;FNU)yr%MmG0ZjNTBo*HiYnO$-4x(D{SD2JG)$d5Va%HQglIKfIF_h#N-7++wuHB z#?#EVVO*>ifk40X$N;bfEVLV8;350be_I3ipZC7B$~hW+H~gsl52d+sS&1x$E*V=w zb|MzysbEqSM||quCwo-=%fqhVXR9hiR4NwZ{7UtyX{~yp1)kw*N4X}L=Y#|ym?L~c zwzz#-n>gLJDWwFMyzO7iqC-A#V(w>cjm#+86?cE_qkYNunKfJ-9m^^hg)5ljbLYpO z%pcxa7v9LcbD6uzqsIDHq|s=X6jG}`ahO>dUo#aQskT|dn=ar$+o#!YjByd9$2TO? z;XbfOK52a~%(2yjxM@5ydR(YjAX|!)wz`!~Z^lk$!pCkhut33iK23WdXTxik?GlcK#q)do;$j3V3*^xsEF|Ch=JVlbzlKu`vF zxB-QnCRZ=YBeJ=HSSs|_AUmc%1`Z=ciw6#l@uxw4!D-^tEl?{1f-nLKNtxfXhjFlDu~utv%#+WxP(6^}`H9u%!od}~qAcz77GMM>+ZU?nIw zjCKCxkJ1CDwl~$$_Z)&DI}Rao@GHr-v1XC8pQLsTb$yj@-)JXiTyK*;i)!XeP%kVi z{<RIumr^`JN-ABD$P(Jv0#re<@7+UOIW4!HW? zi(Gz`6_*G(=2z-+$(czb6X5bV0BuR&m&AR8D2afeg%V}R-Zt@ru~V+MZ( zYdBu=Vym#Z$(Ggv>Q4RQf&C*epX+8xFS*NYL1`XL*IrV$_dlr| z@=oiW!&Yn?Wm#j9t+6I+9x!vkB#D+kJaMH+q)F9X0#L62t2U-9-Zm&s-R}9nK@dT z2y;qOr^g=M<%1!dB}E=Bi7_Sa7bdQpS;iWsnxChw5w(L&Q)1lqKA=0iJHaD8c=uF$ zK*HAPHb_|ov$vjTh~Wo70wh2pvsC0kj}8cXff7dW^gV#}BtZEukYWHQLeGYS)K`%I zp~ae>2xKoyA}J#N~KutpwMfmnD=&wf1K7L*`(4MYHjd)PQ~u%%O}cMm_wZFx`2K8M7RXxrL1Mo z)BDX&U#&6w&xJh=ww(UB>m{+Ifj3V)d&_m1+xnB=vu!xX{YBhW|GURq{rAuJBo>)D ze43+&B-#g>$Ge*b-~5OmP0~aZYxxB3FhSjgmCAPEtE`kNUmi;*|N5nz@s0*2@nw`Q zgGG2j6`CV7;7w@XQ`tf>l%Yb*@=cN0_0>8&0R4jND_ZCZ3(M$>e&YySbdt$+|E**@ zK?SczBsNihE8~}Lm`Zf<@97mN?Hm2hFM13q6=k(i8dQ9p7G^m7Fq0ni2qQ_ND{&Zp z(rIVW#UJa^|MP2J1iG5W${UQZiPvO1Fn9^N?wWGL)C=7;toWz) zOG;Z?Etz&FJdy~b^9=wKV|-tf*Wx52P1im$}$1jlm8Bc45vF=ijyOt^aNV^ z3vqz-zC@z+BnYib*irHU8VIn0YzZ8I<}&*ZVu+oXX*B*8rYV9x*Y zKfX7d{AuWQFc$6q^0Mi7-n;AfohRNu#ukx8j~oex(w zYj@$%D`EXFh70PMoy_+zV-3t2o+T;BsDI0|U=+U;zAcB~W=3=hp3SBv!sZ^!V?c=u zCOFH&R>jP9v&^4lWBg4w){{tXbaUYORn&L+?QQdgybmlA)IvIW42{BZo z7NL(a@7biN3AhJ;;HpU*-UF*>c zHKl!?Z@!8{Z4o`^B4y4*nL#P3Xy9~N31!a%b7B;Fnk=l!e!lN}^#($v3QwqBr=9dz z-2ahoSDk0=B=yV={oP)WDvrSG8OJf=By2ZQ`AI4_*)P{V4J}2thokn<9jd^?8oZ?a zS}}pFsXvKuwLS4)uXrC-c(YNGDq)OI``q}rd?H+wQrRzEDt*<5Dur~*T6&Kl(rSxe z1x7%{`3X=#cDT0%ohD`j7?BhomH!Vzt)(?kd-3TWZzkX<1`zq8D$N4r&HGp2VtN49 z2!So7(?p7Zy2rvONY;uG55lq59Lav=M1a@Mn*#@jAixU}rRb22wUGzx68LZsltk~f zl8h8@U?E_nHb5WHvERT2Ys0sFdbZJ+(+$Czo45!} zQD=}?AS?Kd0F4YRtkLnm%H^2Gx}I%WN54+W)Ce#WVfkj#Yp%<&@0EyM+zd9PE;Y3# zh{#O|B0h^2b(Pi#dD;!uttff6bNIV+i9QI7+FYt?1mbcr#`~#gjF(bH>Pu1L%2RtJ zQ=h%-`y%z+pIJ*tvEIf^W81|<5${WYQAoVvr4C7 zyfHrIi_>O)YovTJdMT7BMfO%5OPS{Hbm6bA6Iu=-Tk6q(zA(l$d<{LnLGu|N+HVSJ zRKjW^=P-&$sr`^pc4e?ATr3-ykRTtZJ1;_>pC%QDZ#^70_qBO`mO;barAl9O7u_v( zi0iQh>z5-Mc8Jb`zZh|EuP-CPM3eDJC7F665O@qZ-GDhMU(w4UG7zKHSZdjT?e(!Dg9T7Y!gq23lKfTzE2ffxATrSV0a#d}ssR3ga)O58_!2+= zQV_P61EzWaK_!qi&VsDQ_6{ta9Ks#~W2*pP&Sf@|J&L4Mf+hmt0H@=FGQS^4&(<}l zhmY?Ky})_PGSD{*gdn8{SZ9zy`JZ0_8#1tbP7Zs2OT=MfdtmpS8pkXri5+4b5{eC| z`@F(gAAh71H+SS@`{^^}xzWXg)tdN1+27BvgyFYOC&Th5ACDGqi_t~;k!b|=^kJ5N zdd3k{B8DrY$E+fR{`n-IM^FUaHbJ`}>22THFBxs|_L;)!P@Xv(XEQ>SI|f+ z!S7#YM2&$O9GovWa6o4l%7x&W!uwCtifek1*LVo=s+)Zxq=@Wl;&}*bmhf{0Q6zd$ zT<>`Vz0)@NTxahy5p6?#q-U?QHPnC(MFK(=|L_{0_7MJt!7Sn<(lLkSnnp#BR?+M1 zD~)Vn6PS-QiGm%sBC`yoL+VKSM!Hq$=naGX=PY(n7e;M=O)ky$jmIwDDyrUX&hJ|9 zlNKt*tc|vR41_alWNiBVbg(a!;nnz=*`g$sCcn+bKc@09@sJ_9Xjf=sz!(en8%~-5 zUAk`zUY$VEzWg6&17@PiziAwCvR4b*{ohczU*9fFC9o}-jz&;;aFCQ~yXS}zFpE>Y zeQv^^Ri8|o6d+U;rtw0@^vdn*PZ7Fp!NlD6H1Y#-&}a6}kRt_v?*$>zi-L8SFlb8J z4=py9KVSM+9QDtr_O!Zk+_-v-{6YB_6cTw$)CUcO623+}TR_F*5Ndbi1Mir;jvPU29tWW13*?aY1UUX441I!hd`o{nd2 zYA<+S*5S6%q=we%W7)Vf{Und->zCwdw*(OPs}n(^ru>O9?$o@=LWAq^xplG^4f)%p zMz+-tDM>je%C=h8Nv+c8XFlZjhsS8Be-5$hkbij;a)eRjGH~jwdCe`??EHy)^Rji^8BnIBg_Hn_w$80VODPh83$eS94Ei2! zbbbVtxP(%`iEcoqD<&x-5b0f#Ke=Iv-pYPU51*|8^q#OGU97SY2Y;D}*igz--r1o9 z8-2v$Ra5mkIK}!-nemq2t$%n-FqNXi_N?>s@F~Xt5JUcZ%&?eb``%dr+NsGcM1;XaWH%^$LZ&{20Y!r_M&`3f|z4Hz@F(&96IO|qz|VTMtT3?HoJ}q z$(cg>Fd=ta$4!7RIb+X75my{3lr-ZbO^LZD_{^O+Rfi=&?J8T-gdb1~IER9)`lT(K zKL7}3=AwP(TAW0ClCCS>@7VN;rP73>tK=EQs~6E}g}I~8`psuGvzEX0JB?GS zuIvg3gl0==V15(i;qyRho=W?Ko_D(rol^!#7*Z25ONW~9k2aSoaey{g->+Bh4X{@S z|8U*O!o44z|4Mq8N)5t3=z+%3LA*wdD=DiS165G(xn=vR-`Rn2$TL1X^ZT#INIgb1{eMp zR{jSnMdHe56nRLhJJywBCx-PbqUYcj)Q;=*@zTSrtlQynDU~!7Z*#P}zEwNjz=UZ{ z4$|C*<`CM6u`P51qNIVc|Foq?uKhTmo`N0=VX2JMiUWvVI=-eNv2jk%zH%i;_(p16 z!0EB*u0Y$$KYyUtU?O=&#Wp^A7NV>{WNXRg`-S}5Y2IY)EBl(HM>O6IaxqowMbh7Ts$Z>9&EgY!!b**~=1 ze{vgD`iDCDmTb20xvHf5>M&OyZm_bm3AQ?i4~EI(u2H{)j>g9H&HR%h!1U7ZMQvA<037%T&1kNm*4mXXwC;r6J^o_mR8(~4{{dy?gQm#;WAHPbo?`Cc_n z_WBU16R2%fuSxwBm3NB~%e1dr0k{|JN^MvfoaukQzj&K;;7aRVGdw)cJzwIM6Bf>P z_UP;K@W68ZMmtcBA${qxtJR(#6N z?@6o1bd#u6ce~z3vcX2ez2Ze$3=^Hq)(t(HJ7a%5-Pc65%Cn=rzJ`g&uszF75wr}8 z5DYZIs`jb25$0nbdH6EsgW8kXbs9#x^~H=o<3cc|Olss4JX?pA*5L$yLXLXNJ}878 z&@)2lg%*QqfPWt$_>{5MA$`EjZ}3@vg4gMfoc%L*>IML^dbrX0KSCpZq2K0Mr-fjP z8OaL>`sKkDDw3b#dIWHvKrx>H6f*#*89=d)I-wGJp>5?#Ws)?$~$ zo*-HqVq#W`2$`XZXcg>mSu2q4B8h_d0K@(T+=!_t0{qWV8 zXoC`^ktkwXeXFR_z@Aq|muIqQZ{`=kh z^YZdMFX#4rJ)VzozdyzvXds8`B;ez%@L(wC0LpzH1KL_pT7Q5V#YGY}9*!T&y9s^9 zqZMq6;?-^dbqobm;w}6CNqap^YJK|SBC#B?0Is1_lc||Vuj3gppAgjBTU`El1!LJ( zZjOc5WnD~yGdTfI;%Dn|nLP8y1V_jovRgB$m$w@o$#v6F9A1V8P-WTZK{J9i?V`8R zXB|mx>DUKDiD7(LM-gJdx6V-5Qm%6U$VU5teJZken9t|rev!s zHLc0pI;k+WLfrGS3PuMjHl|K=YZc_=tgrVqiB3ARRu0ngT@sl*Ty#F_DocYw$bCkhg)11iAkd zkre=BSqS-sB06npwlqzv_F`)2IxA_&=8)Do;n_xPU#WJxLP zBr7hw{|+wv7C^~D8PPB8;=*6RCnIbA2Ju!~c2(b?TRv5Zxg7*su()aTIcYRqzWbccrK&riHuAu zybdMGUwP4nbd%l>Jn|#=cgrHP522pzkUw-yY=-yZt3x?3(%3QXJ($_6Tj1YHCP>Cv z7J&UXb6uQD8%REdW#Al40OHRKhy%#L3~MY%j9{Mw948kg2NVn7dHr3IyZ^Oto$4G2 z7{!7i^E;zZ4c^61?GB(0dbAID(e$TG`vc9t|2y}39V)w909=0?-7%S~ak~(d|9uy9 zbJXYHf4)CEf&WUA4Ua!`w<_{Y^q)*F_R-tsBI%!s-a!M&1XT1{_Z7OH&{ps6`j!he zJU3wsxuvQ~jOFAgcwrL9eVThIsEUzn5alB3!O$4Ziq}!20E*{$gB&Ul^3QQoLCd zZe#D?P~2VP!f{Ah(*7u~e(l@$-R(VKl0LXIP&K)AX=j?|xcs@B<>%j8f3vR_{Cyfw zRDIXD;oY~V6c3jl)rv=UswE7xYh&&jiL5ZHwNU;37Uv?#xEjmogBcyLE>WI~W~wxi z7)kdnHFcn^Zp~+Oc%Eo?dXyb#(;#6~d@x<>v0dNNUae`UOD?OWV#Yc#l2O~;^Ul^| z?%XsrXE1rR=tZ_2twEHA(`|+AlnkcQC7}mP-nkSNi&=dJ6Y33_`FSf=znXT%A1870 zk(K5#Zk|&L3`(n(O@4SYAkfgJlfHA>@{Z}*;mdoMtehqKFKq=?eNo9x2{aPpS(l>s zXg&M0Y-;T_FVROiH5} zW3kMT1hKck*_F>)X=ODGp_-qcR}o)&AN9m1n##4}a+;8hT-BF%et_=b6ErD{<<%Ff zac-B7@0(68ex@Bc_eVUfh7J-`_4XWh5^7cb_2O8qX8;vmJO~2gZ%09?18g$#Vag$RuD{XW}Xo3FWFGyTSW)760wNcoCv?Hu=ox*HjL9)=@<&8Sq;5Bps)(y0X=&>(ESf-a6E0Z>26Pf7LUNtznbUG@)z zIL;$=cHMM62S)m^sNQ#}Gm*fZp&Mi5Ji_4QeuuoPW2=Js!{f+C)Xn&*n}VntUZSi@ z8B`K~)^D<3YPaqktt6`2y}}!tQ+l)6u<6%e)U6&B1N^yBW71RO3c+Mr>YW>oZWQD@ zWpkW#f3B7yI!yJseS}my%N9~ zz2|*iWTSU`zVAFx+1K2me%w=%sv^q&>*M0oFRQH%_OWF}&m49+O3gXbszThTvFvt_%<~Cm_u95c%|H4 zP|<)-eKObK83L?sqngkAEvHUk0cYcgN)!S&Hff378_Y!5A+cxWumEiLNqwL1fi^g^ z1p8+&Sx5a9W*l^eTz?!Ohn#XyIhJ#;_zG_Bn9^FpbM4t%GaXZd| z1iESurE^>>X95%M5OL>{XKJ*y9-dtM{-cM>YJpW9$G+C#uA!`rS0_>a$g{N{D7cj+ z9NqpBoZJILzz^(+WhcI45-|BlP2waFqKo2QtWkG#-g)HOz*jkIW-4s4P>!sfcB3R_ zIk^;scv4_aHT)X&rdJ31iZ(v{fY4{Vn1tdyc#V26=*{F>RxWm`Vdl$LXP2p&+lWKz z(bJ-O@o+&c#i>TP07V!~j;SvR{vovSuOZ5R96@uY5Gy0T{VCi`f-6EdxpbMoDTr}L z`Q1379=ZHkHIxVLtofbk+Hfe}Esj5}>e9AOa&$l&qZ{gZ9`Ig=C`%4TCeZpE&4c)6!Fl%33 zCy&xcGZDpM^O#C{56q95@%M~=5-toi{Z-^MBlbBrG z>nwv#JQlZFCtek}v>;eZ+M6JMI98dT0=${QA~59CcsSz5T@R0YMA%q3<^KBjM~<-= zji@)Lk*8bh3)~*n<^%VR&k#^Py6vkJY)m+ucyal`lfA9QmjE+|kj0z;OgR#^*O9jh&?lB?u6B;Ov zJ3|9>lMGJ+qTW3bZna``H=s)6vDf-)utJ(<8n%Dg^{M*Pe#^V2d^G(d{<3$ST(T9~ z3B@QzVp%eYqU^xI>VSyoV)>>`(N8C=J`E)U$x`&AFJz%>MRpC@!O~U$M`ai+_T0X$Ph0^-IBCwcMUw71LP-+bC3dklZGRo)( z4f!f**WYgJ^lK=<{mMzXmLaaiqu3kNT1ou6Z(v~yKjano^$C8y2GHj*C?=D1;-6fC zQYOE{xgP$o$*Vw)pxz$3a!Lq{%KkKRS@H6wmE4h%k2+C^y4E~M_vRy+^+x)(jwYo8 z(S)h5kh8u)#X|LuF*A>{vW<87)!O6euAB2-8i9MA3VM#buEaO|pIqVIFio8PK=FWk z4@Ut%TZ=({D+ep)i$N!dBoyz^kPV84W3lw( zJ_6d)8#IZV^AFt&`ZK#|Yx-MHy+dKopq#$$m~HD`J42+H)oz3GW~#>&IN$z+#KvOJ ze()pC$0kwzzHop=1Rc`M3P-B}&M{|0%T^jr_>y4jEERY?XXY=ImusBKRc&}o!P-1K zAo-Oa|5vI|*Et)eQ!gUREB}ER*PjhF;_sIfszp;z4%N$P=6UlzMQ!?^tyPHA%D(N_ zpgivHl+O?G&}s}^a;0v4f5(lcHCkqx4@>X&i;7c4tqjw99AuFz<rW ziB9CwFAFLs%n9Ro0)o8uFy))ctJE1{R->@P@9nM6Wdg@WIIb3sUL#R=m(T63_r)mebX%wkTiGC<9&1D-;1NnCq^8(O-!RfxxAqU zM;`9_Fg4(NZnT@y-2c;B5QuvlMSX0Q^R@~8?q=)QP>~SEkQbg6 zbuy&D^E_1*gWBK2O*z0A7Cj%IlRXnJDZI5Dn|PiH7hptuL7Ka2s@vtCbq{f+`aArx z+}2|HfVXS3eS*4!)APGW_4xr7f5z=G%OMQX*D&~DH!KLd^J7RBEvWiy%8#jqMz{Eb z04lrPQrfEIN62B#g~8&7F*7rR0_f_CW-N5$s5p@u+YoFlH}yTj0jNQIc09Y+4)cmY1uF`H}1zWhr2=tfDIr& z0My!?{SWdcsEylQDE|$3Y`)T$xHPDS5$Xq%WHh)hi(uOtLjnKB43PfPJEudF?Dh1g zXU_Eo9qT(^Y4__Bz9wrtAQn)_7qO2y4zugzi(PxCqs*pk(k0Nyv;F3w{SA%8NJ}Fg zW+$^2hdcCLPu}lc4e8La*H3exKR*uWc-3?J?j+td_3u;_uY=Gxp7tk=Gx7Dlptsk{ z#!uV6URic1MgK?NGW&Ct5#9BtUu+oV=sHUB1-Xi`svUXR2DDFVw>U6jLbtQ26@)FF zDx-4yI;!3kO?f6*;}g#2D>vNkJk#QzzT~4OHch+~@m@kXZG1`PI_fGzj#ZM4DdV)6 z7Uz%QG}jNul8zsMdg~~_2A{z zFFYFBpY94`*PmEht+w^ddC6Mz;r-x45%m%S0zE>@&Y~LU_lBaxZfOGSlA>LugVb!_ zpAZ@UmTvGImxvs&3*J%p(w&VcVRPX4{LCgNg5HI`{eE})#)>!Pex3E&5%K+^OZ36f z5|;le5jE3C*8p+Or*wTPrBvuJ{0r^#V62-F;(1*zhwW2DttLw(OKKFd+gIh z^hm4cjwdx2;qw`_QxypwLrLN43_TN%j`6rspB1e=+_jo_mxv$exZf+frC{hH#dQVV z8k|_LK6>_$>vfI4MCfZHh)l5+cwF~`&PK|3YF+8JEi{P;pTLZ^Y=)0T*jLGG)~1uA z=k>U_PemC)Se#oPCt>psM*_BcG)eR`3r~lmF8ec`RJ8HkGm}gXXtP?Xs9vYRC^Kp z0b578bEGD1i`k}}y&So+ODBD;{*3IeupJ+^288oHPi22K>IW0HrY#{p{QWzm)?G}~ z{oDP;DPV_GSJf;#TkZAL8Ytm6z9sf}elX$ot>kCUPvk%6JoWGhCckAdC$gECB}-6S zy|F6)aMs`~4&GK)ZSqLB_NF}L{PU)*F-P-RnP@`HBGw`+*!+3n4b@~(!mYzGEds&C zpt=4WBqg`Td{g|^7zT z*|Xnet^Q;+ZghzO1_zG=(M~5XRZ0Vhq)u*(3_TF_lX-EUO7xy~@*W|Q;``MbRN4b| zGV+r_iafqV$wi^wL&VCp_|0|uf3w@ID9DI3M(U`4dlcpcHX*kW%C@pnO-mN-unX}u($jn6d4ECtv=Z%gOhpRHc_wOE|8Jw45*XnOi5IFeVG5))BlSUZQy#EB z=l}BQa#6x&(WR_gA5^c}zV7|NY)7C>OsTkeZe{Nk;5|IXe%Lx8R;x*tx0`vKa_Qw6 zO=DLD%dGaUo`tTHhIAM#q5a(|#co=z>zxXR8}%$?FH#w)0)|E%M~gKAh;P&QJYaC^ zZz;(9HCa1)eon@}cG{{XNBo=={^m93sL_itN8{zWY#*~->V|OOtQ&4O*iYQJejjF} zb5!K|$?0r`Z|+&1!r|V~uEnZg_bMC7JHij^oc+bDE<+51>aRJh`zL~_PWf-8KFbl# zadUa+VMn=xe;MJB8dyKKd37{n{eI*`j#1@egwm(#GO7>tjM8Q(Dr&QBTej>(;r+P% z1Wq))aCG}u3yY*KfoKLJ%Au1$oy+}tA=c>8aY3a{^~5^I@HzLfch)|$ABw67v*K>4 zk$!kdGmbx_cE|mdl@t`2R7i$5EpE798fYnKt-*q-6Fw+6f4!s^wANE)B5V0xq;dzEv{+J8zXWc(v~7#TC>fr$s}Yd- zZI@+#O`bI9aVP#Xvu4X;axcErM6){5&g6mn=$_B0Y>ipWejndqNvvFHs(jMmuLx~P zlXM4bev&T;jrc8EThw1~2XBMC&x`zRctXKq8 zHL;HXh8Q@2fk}X~1Ye?lZo+r9{vzm9w81hqisC9d3n~J3J}MWA;#`Bb?I6VKWr4{|JK?{5V9tGyNX54E{ z+-mm#8AQP#lJX3;tRh_OdLx(R`CEieQND7XouCJandCAmoupp?+@meH^+nd0lHfb* zyHf;j&7a(5ISkE{ef#8he|lL2x!upJ_8B5Y4|yFPC|TB&JlOWFjT9q~NGxcmNC^mk zKT&D7Vp5dmV#nUO$sjVFQ*t`Eg~t-&)}sNnap7KG7p_bu!SyKel#zaW!2RKULA!j$ zvU_T>)p+%Ij13o}prEwmfgj`e1Ed&3ty-gmYXWtYwM1`#^L`0>;B+X|vc)D11 zPem9;w`QD)NUt0)tspG*ab#lLOc$4{2S^s~z5G=eERtXkY7BW7$l(-1FeGQF&I8Nu zk&V2f0xO74Xc2FgF*dV>sRy1q+>S=7kG_F=wnb!&5tztbxqM220pt6bAC?(?1oq$$ zaIjGVKV^{L3aqLKpxu=NB&QT;rr%(84~echcu7yO3x5q>?g0ho{bR+;dlDGrY4JUr z2LaP5hi|R!(%l4`^RyOjWm|zK}J&%8`M0P$~N|oq3d)cu! z44LDMis#$rXEATo{>TTtc5oSlT5Y%EXigEgfP*}qbPR|MKY=g6_AZ(Rz5-xu4=(i< zxWIQ>FVQdH@B7-v`XeLmY6v0&NGB$Y@25wp;+Zn9OJR z2hxB^>E1lBjB5deU>_HA0{C$LBYc?bF|z!d!EJOu{+DwPTYZ(^PE z1#p4hml44#cDpknlBS(sgZ=$I+(gXN;?}5|O9Qv4fXRF(zp5b3&}$sxK{XkEK$eKR zO~vmXdd-115k*?A!cHvBv**i8$#qByHw|lVzLcRUWo`E4% z@C!6|{@!nZo=kQ>7npm42|vk1?4x69_gVP&JV_to{B?1u2A6y-a5(`LAQ%!3iUX#b zE3h7Tc@prMVZ^|pB?cEuQpSOCdDsDx{qJ4S#4Ixmd<8}xUn0N}0=OlHqETcX9t^aX z!FT52v2$1}mpmqOl63>%0qF37J2($Q{^^H+<`ni8bTyap`{2Ie0TzC`X)p{3Au*a; zgcHXHd^)6E`{8jWl_gQq>1w}}rquIGS7;zdLx-jG#QUajp13h3vTII?D)*~nuj>el zRvz|qmU5&tLcD6W(4(HIj415Qpyi++&4tXe?7(J{b7vuBD@Y7DoqIe zjRgA6P(MkETG>-bK5jy95w~xtj)9kiA0yaL3NBp?ignOWdMC}NPxapuU^P|(_U4lch2{HoX!pcF67N|;2o^?)z~`I0oF@04}Gzoauc>Nn|gyFZe` zy6}%J#yw2>jfku7MF(}(Fm{91LomgRyf3;830S0HVcO=3YM_Aja7`S!xXQOFa}f=B zz3%rW=7(tb^Mu|XBJv_j9lnYZ6^EFZUtD}uZ3fOMj}Gc@b-pMoJWf`Zv&{P1$&}nj zuRg-O#*$ol1QVm%^hqe})q_8<5>8?I6r``m(3XMLXz#Q%GBM`z+7wS)>46m-j>hdg zm56u~RJTU`Kh=<{uTB%_k_DzTB=|GkUov)c)!#YO6c6x769Wq(e5JeS(A1 zuuoL%(bzm^?TM8*8ekr!Htz90VMh!|&i59+)J0@-mhZ!on76aSIN z3vv7iEO>z%0mV7uBglYqff8S@Vd1aZPhdAm??LhyeFUf0{F^2?OxpJlp?o2g98gn~ z=|wEbDGJ`=&k8Q0)M%uA2#b#d{Uz*PpG)A}PJkG6Dm|D?~hwnSA}-)@%PB zW2LkdIpa#U=#QL5M@mm^=16}Q{TzG6U#OwEeUu5Hblw#hw(6Er(%)WYQC6Qp8JFTt zzVEIk^YESZAgVqAxzQJY6jr>SScNcF+PROqG~5M<)qS=NMW0{P36S8UMB?7{%duvu>SGN z>HdjX6we`xw~!OFX7c3HUHtmIcU_kG+65sWLcc88ISr1ud238NeoavG{(7)=-Oxeg zTV-=@+}Cj*8)^4LH<%}4=K1$%J?km8`A5QEwB2G&)3Fl)4HH-Bc+NXD*X}{po}g(J zRMQYahu|#+VT6NkT-tCtL&i)LUq67Yzv*1D+2p{)b08)Em_x1o=VKp~L@?>HpTTU+ybnAo0$O2Vs2=4{?Yui)dtDIEeX_8;cvF zq$IbyyKvD#QlJY?aSG`wq{b2;-bDn1%ubLkc%f=v)3~*OCe{l>9D|1K0vQbQe8fKV z6y5@Li*@*VOaJ+M3g$xUF0AQ0a0mNr1-R@GLMrYYGt{nnM^`pR=)@>P^V2HlEnX4R z`$7{%M*U_OE1^xb^h#FhP4T~B<{5Sd;>?Opu@#!lznqfvat0E4T(M!!)W06$OvfNk z_|9sro5Z^(NtV;>tI37p*T{gWlYEy>c9X9D%tt+k0gb7UgF!l1uk_`x!f6wIrY&ac zodiQat!;oZo+pg#Rg% zlJ)f^D?FU`0-O?v`NmM_y@(|pX24Zdq8d3SF*9^oR&hyw*5~GKVWV#`;p&?=if$T7>oXe zWq}7>!2CPuJ{}$hP7F}R!P3#-1+Z)dFzE1H7&<_EiZDlCxIsdva7!Yq3}8vI52sXa z0fxC~3}}i7BW*z?>|J;*S1`y{EcYIez#z&A_O9Sy2dx0X`WhO#{jaK|m@tJC;+QTh zc-R~~PumwSxeENv$p+>6E0E2M`-%i8jf19j;6H_$2|hS%Vmw8B;HzuB#$D?b^`ss>LUr9yT z{IcRo{VzSG*p#wt$9yW~EsekQo;&sEgot`H!=0+EBsb*f4xzl=lbfgu$|s7;-J`w7~KtL zZQiQVRpTKx)9erQh7o4eqn}@uJNNnB5|)E0>aNnbET-_;QQ1^G`c0Lcgl&$V5xpgbxJd;x!j@*HLjyeEJ@v8>n)}d05Lz?%z{Nq)O;yP~t@0S`V7B7yH`Aa1uvLzI;By;drj; zOw47oytFj!imPNZcDL)ssGgFfkY9+94b~FAyyFQ86x7H%{F|k0I5e1&=D!3L^2jb> zkZ$`p3Jf$1n8F6m(+VG=P}xUjfwL6hHGt9*{tS=;_!rN?P#EZ3CWN+#83VtKwz-0f zIRiZui{Oy$3I-B<9BcvPM1k#6)Z5E=q!`o!f`=^ zO6KJ(IPZFgOuv(f8L|Rvha6j>Zp!IY_kmx}^C=S{$*3XOqmS^kB{AbiyuTkFb&Gx( zNc`2n$L%7T;^pnSu_@c~?2oEe66}?s#_f#fv8N?dv(=8KN$PUm!;g1YUk{47-9FK% zisgot-k+;vD+(Y|uXvltwgPJe7&jz*Vn#p_&!`6;1+`D#i5cpFXEVtG!ha?0(JKJy z$)yv7=Z_FHB$4VDYcko+VG4jLmZlAN!se6m|pIKa1FEHu)NKzS8Di<#31MHd-qeO5+l&90{Qy6 zve1L$!Y>Wa1;`LPGJ11nDVVcPSoxHX_8+phyv=1x39LBTm!@Gm2Uv$1=t5Od# zxtaE)gG2Ju()5e2@3}!!#x;cg=4c_pF-G&r5-$VBv!mUJkaG<$B3$ZqTlJDmFK$>}o}!d3 zn4WSyIm6)3PMlb$qGsbU13brD#=&2`K+>~mM&zc;Elpj_0^eDurIQpQ2XCXc;AJ|Na$%#Wm$y%8*8Jx0)$ zEB@RapcRdbJ3;so?X4q${3-M+(>%m>hMz!(aS=;_g1-Xo|MwQ!1_|1BsIRr`;c8c~ z9`ksf^EeNgS0D;=9R=rCwLv5NDPV4L=Ewve6J=)y5p~_mrE<(>th$H3!|C|u2NoZ zY~cPjloxL=H1Q+*r{0n|^#{)F`^ve=izS=3?XG)6%7wkczj9p)?V77K5^B!rw4NF$ zG23v)*_2l%O&7j;PuGyg=@gzamEzyt7FYY{s@8ItE>(Dm=O5S;-tlA{N-y4j{2HQn z*4my+O#DkqN#W=hPvMXCLkq6WkuCcK*ToUVnDv-d1l0=SQxAM30aH8o@EjVV%?)_> zuvm#RkESrdaS;Mu#EQ^W;6_<(ED1oiKATjZ)LXynB8g3msoPVm=xbiml$C~?HO{Sbh47PQZ(+I2 zh@k%s>jJz?zb{-gX<l`{W9SqDk}8KmO+hbOOT%*!v;Casd!vfXx!TTpkjP(Mtd( zGct^S%1e3igx8=|k^n%KGZ?@hVNjmS?U1Jb#}*!ER)9a7z<2)IJhX}hQ%mio{R4b% z2i|qZVdqd!LlB@zhk#0^eYZB@A9KJKQV2Bqs;u9>H6m%>uRT^>k?>ZeBJHJpGmX1( z5(dsqm8n#7|7vKoqBVAyLq(^N_e^iw!jjcBr4ZWD-N9P5bYrP;v&!f-x#A}-!>XEa zOPsgpXBn4kBu{NZc=$fOV-~GX$eS5ES^hb!VWPdOQLLxD7T&cdB+<8$p7N6=0P)U+ zZhRhCY`Horx%QR3qtIKlm}O{0madHb4KTG6S<#H{pDX-kk0#^zSnybp)Xf!(IRFMx6$;<3j>09jY$tEA@gveYO{w|uC^LB&%_w-Tf>Bp)2Moys7 z%a~!?eJIVP<+FXI(^9zEk5Y6!v-Gnj5u`Dt&#AA~Dn)DsVMq|!W_Wz`JBRg?0&xbd zLuAPfPqaeXNaa^X*V?ioq}f6&^%&EA{D9={knyeZa-zM-IzY0FMuek*`YuQ7^(-_^-=vJmslh+X#^@R2Vlm zL-r5&OpK66&xh{VqLtV^dHStC4>~F69~G&4cct-oJrWj<$TjHLrOeAkJRu)F_;^Cf z7K!Wp`{-wOexF~aLo}Lg*G$36bD+SVYFPX4gP&>dm}7l+)ublU{E{|}(tRuYo0q@Z ziyjNl7Jgfu$uezJ{9ZxGxARBfOz&zzy%w3H{0Z}VOg?YC;uvpagKL{hqM9M&Q>THI zKe(XXvc+8~qI7i9$w=Zs^iB(e0YklSytDF;;FmQB8XQ0n;a#x}Bqf)jiJXOBRG5Ky%w|zB1b?egV%;GHX3agzodfhh2m8w97 zE;YAb@_O)%QP_pyC!fae;bbb|fL+KaFY)V+TX4lO&x!I@71T<1TL;u5f5ACqfp?Zv|&mJry$ay=?0 z#Wv+)W6rbILv9Qx331#24pbq)S9NP2b{H>xH-!4u#shilPuHIx5Bxo%oHHy1vbA=m zUki0hgktC729GW2KLHs#ZZ2e0sp>irOy7Q)Y|3S0@5%Nx+HSi(*`}aZ%EP{*l>GAe zE%~U`=EwJLBlI(vxQ;6DP({tzM*t9%YSq$F3mdqMn&K_*wT&5zz1 zO#mRLp!^Uldx#E$K+XT`-6l{DsxS|Q!XBuCg8wh5nl1^w0jfek=BM0n%#iN1!<88u z^5FWrc81kjwv=XfhnD5Mg;>?^F>=^03kXw>g=?%8CSUH^%h0LO9nP<6Gp2P(6pb?1 z^=9B_jz0OsrZicvPtgwMN45(I%dz1%IOoLjj3#Z}| z&cBru3X37~0zmAY^o3gq(H<9G54;@?=+j4w=cq3}j|V7qrY)cFRz9sKZAruC*V1-^ zsggY$q@{xZLa6u2t(K+|8S1-Rm3SOSt+=tb{^m6PNB5TBcc>aFaK#T)VDpolxX9M2 zWhDAu*E@WPq$r$Pu3e@q`L+_RRiP1Dy!V)9V(#>o$ezI%!dyzjz&K{{`xfQq{NKU| ztmu*H$Evqmi#IT_Bi|JwOwdvFI63r-3WH) zoQg$DaDv&_%7QMCN@&r;%7XL)skPL_9ZnRBEWzY)rd(jKAXu6oC>3AE!7emqC?@=` z*hi2B&=A;@s(QvB`4GDM&pN!pZQu$KV#MdLa#aY3eaY^pMbr~YdVP-x1w*u=hkU4B zL*y2J2cV_O(%t}ycmBZt2V3+wWePNP^RccYyX^7-*^rgDc%JWq4tUK&gMm~L2j6gQ!O_E*{#5RKrnqbqLU z+UC*{8qB@w_0Xhp&OLoNrck;kcj(paLRh6@SN#_sN3OxNkE^dX;JP(a)jZnXxybns ze8FtvE3*|RE|O7|wjq7ki3&ZU!0NBfvi5m&&Qb7{*Y(ehe=bYMo7L2GCkl&piLT47 z)=Q>ZxHS#D9Vnn?JUOd)W$EC%6}j&y);>V~c>Rk|U0~HJ%3rk5pw}(z^OUpns0(Kt zi-FAISL5x(W^g83zM8g?DKx0i-uXUfy@2ZbpIqNrVqPaXstJH_oRK?xmc=&` zTRj8~r?_csujm7q{)v{3abCG zQGK6+t5h=&O}#kqx$~f7YL!B+N}bTa2}csc2m2DS^fW&T=O=F48~i7C*$7ub^h#nX zBcVI0*HPT5H%fTo%PX71gAm##xVq?&xLw!YM{fGV3p($lJ<1Z3>)$=aP%BgI46#CHSSFI;hPOYxEg{ zEnd2ln2&36nOIC_=sG#o$gQ*MzDbd4o7{Q#X6d|xC>Rb!dI{#6gYsB-SSG}^AE!8_ zwh7*t{qoJ`vI&JpWyIm){bKg>?h1eG5ED^+q;HKwq#$>$(^B;JQl~(j-#!AgFK(Wj zJJXNYROdY4d$ODq+YT|y{8r}#f$EPoQ17`X=7 z3xswr+{W!9^Wo?&&T>KN4hDj|HMapzvSSC~B?#VyKfxeknwNY7 zQ8WMHwfS%!Vk4rY7r^Z`oR{o*mEYLXt^Os2wW5UnwBW&gSnN9aS*9l;Zk?@g2n=W( zd^}F>pFg=&vFl54T~b1MyRL}u+bDCdodzv^sFw?S`WOXKsbZm~J=ZngwxV^9l+ur9 zIT6BvHum)C(?QG=2hn{SWYtP$8W;;kiC+;SGrLqyrq+C2qqm*x)pXc?g~*Q}3tlye zOEa*@7=*vbc#e-FVV9OFHYF z6m&AhzsM&c;q52jn7H@CuwDj}rpJBw&}oB?R=f%10f4?k`F{*6IB9`*0L<7PETshu z&$OcX_WsAnx2R`6dG6TiZmoSiD%Y`3-6&le zK~yTkb8qt~mG+vbBw`MgmLs$_B`LV#TIfMAABA;)pwwBP|Ch3 zI`?Ad!OJacTzkj&fw|vKF5bQpJNoYVwjKqM+DBg`o%IonzIsY*OS*PSB71W%*SAM; z+Ti{aKCa}e_Jty#2~%6 zJo`|-ydYTZ$G_(bbFeeKD zh+H{`wLmZR89*$8^BH@ZvOp#b#YLh>k?rKrGvmy@yhvEoUZx_}bG#L_oWmW?AhNqV zAOE6F1ubX~7A z(aFn=_n|}XVybexEzVw)QBgq zV(`|2+uW1*`MECZ>sCVvJGVxkB%e@!%jB2GeN6poQLM3f zyykTob;;S5T9uMTf2Twn$7;QtG-`{w35Cj5MXzJ!8pe_oHxo#WNpQ1e7BzZgeZS14 zZ~DmIhqL;okMdLyNeuSdF(U?TDmP^fwi4L>SjuLejn=uMRWsZzNcWS&)YF-2S_D(a z^AZY+1DLBMX@nJ*hZqyISh0p$%cICU9+ed{%sIW0zAm~muKGKofoc9rruhT6=O68K zaqF3lUCU!s(5&#*)(JZ6Evc(qqql@zLrP{yh z5ALAQj~unPeAo^qo>I@oX4gyWZQ1l(rXba1Brh~zD}OqjcmCJb+Tt3?^!0(ORV$v~ z2K~g%mQ5rTx>>$^{!;E1#J=^^?jng@&nX?9s4Ax*q04#2??l;GcZF?qqGkDI&$w^H zhi%V2=2SXzTotEX9Ag2ZrpNY~aX`5pF9%1CxgTn(DW*2hX>D#(($|9T+~^0YC?`w5 z`1W^wk#9@oi6RQ0n|mX_rY8Firlx*!9<;5`Hl}7`?w7cu8Zf+N>++rV(RwkDmt;cP zrH`IGH=SMWM{JmX_a|iDm@l7pa2aW-udG}zLy>&md?9iFW-aHSR2$mgc8nF6tu|OU3^S;UwZI4KVrJmU8V&;Co%c_`) zJ9{U3wJ25kx{ySI>I9K)tlZ!YLCgK3-b*}LJ=|X#d0rJ96KGGb#nnAS!-pHoGch&? z!}<@xFkiFMR*t=3yBK%;@!9!BS3?DsvS!A-d6l+d+t85gtm@6JV*490EKR3prEf}iB#%rqHkphK> zu$Gqif6mVZvN<}zKN^1#HN9l9>si7cAV|A>r`ki7D8gIvO^cLYJo<=h!?q+O{&~{3 z=I%!Y$*G*Hjn8$b0#EoooN5mJ=!NkKcDx+#v)qfV$m@Jn^J0g%|KO#tiNGuTaXtI2 z-%Ci3QkQL=_p51Y%LGm8Ck@o6!#x{+j$JHw0#9P42RRnK{ofD^ZrWQ-ag;Octe8u; z@K^>-Wq)K?EcQxO5*~VJ_gcH8zt5Rk<2!qyAHy$EoPz~Am;C#N{E4)cD;=?8wAS4B zetyOXapw4Kyp&*bce|8lQFbo3{^E18HGW8Jypu7*pAg|{n2wgt;6+jKtt6e$FI-7G z<4qT(rHgMT&fz~3Hd{(cQYnIZrt;TLTAPxog1V0mr86xDZ&f(qCx5cOyLy{8Z}VqX zy@?zC7{hVV`{={Fy)jPdmV)+7<%9~O63Li%@14pXWYIkC378Hl8V;5JR@qud+LGSg zGaTCWMK{B_NnSH}@XG@RccWJ&JsQvMJ-}N&ca&c$x6k{sk~vmu)^qZmcrt&;e!9U0 z`?pcHp~s{%KBsQp({a&Sha~5)qKoSCh7?s@HQAmUgl$+$Y9#|4F835J>>_U~BZJCk z?oz)G6TM|DAwEOVV>!%5KY*B?Tx@nxeBdSgXXn=B^q5FIVX;`{CI9Gfy_|z8AE6^# zo{3t^^eirQlcD(pc2!JR}-^7}_-8}qT34SfZ%UcY`W_l+8{8`BkW=THYdGPpKX6@eIAxnG z5HPtWe(oYyfN#&C+D8i0B*A@Eda@mryOviwrniRKAd($sJ5ycV@`jy+x_wb?T^!4d zc_zRhzOwPjTEC6txlRPRt&mlx*{Fs=DK_jhj){Negm;zCszZ|3^j+1x^|+x?Ofy?K zkviXm4WS2KqWo*h7z63Etq1M9hGET|M5l$9Y5Y3_czMEwl>W^VpT~^@$!F41qN5oa zO_>$s7Q;SUxDD$XT@Lx|!cSjoFQ_n;V*A@SHH90}SWz1@k zf3@|qJpGJ1*xIS3x?bXhFzzHrf$>7D-AXpu#W$`Mr$aI^=d^FMIX6cBk7=q>qUGaG zSHr6_)7MNzFDrDb+D^FgvO0ea+BFNukP{1YDc*5-f@fcBm)Db0O&Drt;`%jZ<)bm& zWd2C0u{&v_`_bR zCTod}y4b#o%#)N_TDE0`GK5jMj(uO9rs#!4gMSuT_pE|Pe`W!*QXw#-t5rgy6>0*3B7yOGjM1$7xCgE zIX7nYQsTN#@g|t%kR{rOF*3bp-;?%kphYdcA#nQ#t>joo1JHp8kTYXCFJNoHLf5-{MpJLyhO)!58kqmNX1`3ARZlW!Dtl^ z8g3pLjeKV?KYQVl5*uXiB%?K*9P^Bz)H@$LT!tlA-=286@*Tf)&M;lcihkbg0LxR2 za*IW@b&qgATasYKm}Pgp;7eO)h5UVHz{&n9yONs4%6Pz>f6CIy8CO1(uh~601{dKU zt>dXz*4Tkk_nsmH#OLVH9`C{FAhy`YjRvG?l%nWW=tby*CVK;;%45`l&^A5|ld})l z`JW+hAqkN6PaxF1dcaW*jphrQSJ~fc@Em+e+RFOP9N@Z2R=MF84l2%Q2cWm$kU?!4 zp!b850a19}fh+1E4p2@FC9G0?FSrXq?{%*i@%Lv>Q@|-|^8mGGp05GwvGuE~8mEo$ z*H#lk_I!V;@nqC=zIwbGx2=CXb(%N5um7W!u5{h)lPSV}1T_1=-k%yrZ#x-&zh23b z#h)?V=sw>zyJcT2W|1@-mAguRdhL;H)@Pc3NGESe<)>7o7`9j}*FP(C$Y+u`bzYU9 zYY!iBROLffK5=_%WiFi2dQqmUTJ)LRq(48mtXsgYh>%TH%TUS-lT+r}ssr8#NfuDG zR}wj?&;kGS`y~XgL;0CcaFP4W=XTT&kU0NAul}-w4(E0?5@!$+1F@L*R%t=mGtfr4 z0Y0IY_R-MN9wII4pbaE#Fqi{Ko~z^~z*p0b0dP>FF+(p5xygM2`?0!sy~^-EOZ(jm zP^`s8h=Z{Q{K4phNM$R~4P8q*uIIF~7oh1H@ItU@D3f~wQsM2IJq)=K66zV>G$)gm zIf4_;%;_@UtC*93#(6IWX1Gwl1CEK$b`@S_vchJ=k+Zk_top2JcgoBx zWLD;X%zvcU{8^8^UrR$_ObMR1{0#NT@}K8*u+Uk{(WcS07x`lP%axP_|9MS>xe-3U z6+hSU*VQ9L;ObGmO_Td~A_yx6zpiK@2nFDsLyr(IFE=4?_4_jaYuJC+&p=`q^qm5p zbGR@w*u6n`%Nq*z?*w>dAa)J-Nt{Fa0XUWaBLnP21{^2gVx_=q8g)BG?8EDH&rx?F zBt~XmpXMPU{WCMbXojoPp;>IG_Aw>yFoX+rC1>vpD1uQqo-K^?z>okr$v2r zDuC3wkE&L@znb-xrMcr1;c!wXzEvIi;F_0DTAq`bg-?e)WJ9;v$Fh{pblh3uIk3+a z=~0Le5%c9dd!p&AF{1HdWJ{>=Jh=VagZIA^?7c3D z9JvqLRQj>gMeN1XIxy7IySI2$G)kS+=bGgvG;f(UTFRHSC}^#-#hl7d-#5RT9OG3X zCXk>STNSLx9EGkj6rbp#`nS3_swJJ{M3N}lewxSS*M`g~dWZ;#qBE0#$Z)PQu>Pz`wnjc{(&R`M4~P z6ST7qhb8!RY_;hdQpa1#*0J)7tZja(iJsOP@SZtA$G?dJ)@6{VT9e!F@lcN+p2L;y z?zx}CmSE!l0`32G!NKFNcJnL5ZhQYzs3k^UU4%YmjZ#bw8K@lL3rFlVXj&pljZ}*jG5Fy$ooqF1NSIEHnMV8NJcLvy&DtEPrmWnT)UcFmmk$E01^ierTtte*Ho>I9J~1^m$Ue zo6uX>*CPj;zFWE)F9Jj<5W9s4wuFHVvs7}_pGbd2sP!E&jq>?)?E{~C{ex$_(uruO zvT_4J;3AvBYO+5_WWG8bwQ7L0H}WfZ3MOY47)0(a0>+1tP+jli5rngUUlU~TCV}R% zj87<(0Ht(QLfk(z{Nl)=^|gV?Jc<93u4Y?+!CYYl#QH#B;vS6E0F%S;L7vvMK5 zEj069B>&Nf1c0evLg?%U0>GdNZ4#vAdE(6}axezsgT@(kD1`cSVJ&$2dnr&vLw6sfK9V%YvI9IiV zd=}~*3Mi$cZ(Yf>b$lepZ->lT8FB0m$y+$1<9p+qXDvT*OTYA^y@b zPQ~avo7DV_p_-&a|w z-J!}F%I(O%W4mDU;@#FwM|F2sKl?OQo$&{J(Tej`y>7*X3zB-@s^P@6d?PJIkyqxU zhNiV~Uj5-kE@Rg7c^c%1!;>2Juxc*rCk7`Nqm}c<>>Tw6CSk+-&K-YPN+@L+j)OG6 z+ZZL4aG+f`+65Ce@|B7V5R~aPCtNxtat-FaM%Hk~S$x!lVR8VJTLDcM7-0E?d`ZUS$ydBCJQf4vJW58(e){&p9j z9y0msXssyyeIAB5)skK3`p$j*344wTDJ=>RBOrqIA#xUFEb@SiMc8}xD>OLwotPVV zxN)U*AJ}unF`6b{8mL{AFtE+|r$?swi3x1^$U13ij%E{=XAk*xFG7T@!g9QYt|Z@- zuZ#m3MMIgvlGL<7u#&UFTZ09C`#Xeshn_5SXIze6yBP{MP^?%JFel4%rGXwoen?tN zG|@01w(Jl7QG_8Fk$VqH9+!Yt&~RoXYzXb^DOkkc1{j390IJL*!Mvmd#vH%=9B2f} zbAa#TIU&k90Udbu2}0Q+)89X?I8^BqIsv9NGyc%M)o1dJD*G!7OJ_$b98#T6O_Qm{!&O391Uu`mQ#j+IJyMD@YWy;b2iwLN z2eiASNBeWf*Tg%AJZ-GY#=$MJ9Y0QU>8_%TH;6}C+GL*)0s2Xlxu&|YajkEL!c~(y zipujdvcv6#$r#gUg`_Hz>=T&XZOF)$-;9Q{v5x7w^Vt)fWp#O`zC8`O$AD6wt__wD zNo2N~f#CMJUCEUCDRq>)WlU6ey-^lgV+$eKJ2Yxe^UK?ZRvi#v7R*h z#zVn!#s;Zjp~!G3*`m$+^dcwd0@8w#b2m?aAzQ9#Q674tMUF3ztj@d->et!6M#__o+TjhR~O#} zgV7={(5E`ajnS{z@%mYdK4Uyqw+@d=zCXn+I%+g^>8Tg}$2v}1)?f<$;}o&wCw7+K zP4ENYTqB+$aVGH#p#RSA43>3cPXrl2NsC0yT2S2{!Yi7t;oJExs3|CJ9(=pi0NH%Q z7U7pD#F; z?!(LQwGv4dAS%`FY|YHHIkfDB#gTQgWxs0 zYXnYUwFsKtFz=7*ahUz4pa5%Lok5Hap7?QOMn&M{s6(Bh;B!}pw`~I~1$ZM0F&2MW ziDX{hEJLJZMuPV|Ls@kqCIJ&x^7+T zz0C#@i6NzVZWdzirp0+IxxBnSPB1)YjP)eDv@4IJfMU>UQH9mg`&y0r&Giq8Xr_U< zNG8@ZYkx>I*)3!THd;P}myizzk^rTJ9w>Lgy@>N0!Lxq^*uVaCtuFYM&s|EAgV{Id zyO9L_d62gXY6khC9nK+3|5y1VxC5QJecBTkoC0abxDV5oK)?A{{QHCc{uMAIY5=EJ z_l}@@1ce*Uw!mR~zMP-XA#?gIu$k&PZ}9ULk1z0g_H}j??5E+Qn2Vh~m?PvazLoG~ z%-FB?SgZdz{61my(nDdLfVo)s-E{``u>d#y93jEh7}B87)8qLEWkG`qUFn@1brhxP z*yb@KxD_vd2WhtcmerZusI=OlROXQ*IcH$s^n}{_Sikiu(ufzgsvO{3Mcy-u2^y{{ zN`B%;$|U%xwfJEStkUm`-b>|50-Yl9^4_n8?_+B($fIm)KW@#fs@}hd7Eq6EPGxXr zj!M(?`)Tp)g$3Ctt<1?a6_eSSbE!iXTiA<(oyUR+_&e&5)E9JN)$iQXTbeJDF)sg8 zfn>W@O|*0cFMjaT;H{U=Cgx+t(T`_h>pFW?Yr9gZV|&e@9lo;K7ejfjKRRf!cTrOy z!uyI=N*oj7%Rtr=h-4W%JU~#}k%SoS0f5UPX>)G$Zh-veA5bf` zzZ)iuYeZF$lq4rKRe;mqfSS5>th@pALD|wwQC^Rn*1REaXgd@PeF)?qc$Xyy`L~ z6AISq`9u~uKR+ekW}|PSGliuq#k1STh&{q@AfJOgLtx<&e&42?4if@H-#|5?8(UD^ zTv~s`Uwj_LIss_^l_!EC9}GhQp@cUyv+w(#fK3vJv$E(0uy5w?kf^=hEE?b!9)s?B z$Z*UqIG7FkJ7O3`8@d;aEGBB=hcs69D-ZJw5+D~=j5GdL*aQMTVheJTA^dQpJ;A zYAn$@0UHb5zh%|VCVpIg5Z~L>qeab1^jEX_P3A=Z+2-76A3W=uhZ+4fiULKH=?w5d z=G=Ki#lgF42np~7gv4ko=KzYncsPr~Zo1ETp57q5B>Ow8y+o~@B95`o zz~8G3;(cnt>>m8shVo*by$Q-4K==Zub#B-%KsyJ&<2Qg0uJPvqi{w?|=p#BOhtLr| zTR}u)oGx{7Z3!{*SH()8u2-Sph1+-PN6BQ(xAjjxx2o0#<*i+f`E$&I6nG2dzl#2P z79aK~X?oFz^ew+H3ri+CkEi}Rl0#S3YM9RSh6D*!A<}Ktbp>lC6EE5Fp1uK(Gg+4> zSKKetm?T3d%}C5|75H$E5={RRnXR|EUcW6EXWo#BDSzvn>Cc30*h4%M?_)^)1p7w` zwFcE~)tT%}<@j*JARlt8VKwrD>!U)!+i=#T?2o4Y@RXS%h7FHZCJH@*!vdL$h(U?d z09r14Lp7o8Flxk&mYDWK`Q3<^zEHg3q-$vcc+v3`(nTgX82gNPlK17<{u-?s5O{no zcI}>MU#M=<7V<<^zJs{Om(AC3A|rkS8C(wYg2n8=dbC^mxNF{yD9ijq@6@fzmPf49dfAW_1TZ*cAf?<5(=4zIgN8f?SjIi*OEq21^ zv(MD(A4Fk7Fct!w&tGiorG2FrJC#50zfv20+eWwytM5{yrWN#WNXb755LT>eDgSoc z{5)d$7YEoMQ(S?Wmac)Pu3bp!64!_$*v7jxz^UuBP32U=iJ{>n_yQ`9(4xVY%zRRtT- zcb5rPTgUld&U?;$X}hf;Qy3qw$(bbN5gpxco~R^}eU{GVde4F=*TM^l9#xjv;6mF# z?Sr@E{rGol5O*P}>@Zv6szpK(gKnWjGf7y0gzc@N&-P~vHGJE5JYGQx8Nc>RWD2)IFZOgO%{h+xiW<@Igz49CS?Srqo;tLOwwEt-3rQvp; zy=m&h{2&qZk(2b|x6%iK`0jIKG718uwShWIMa7Jd;g90*79WyD8Pdy$pjY_fE0rs(CNUy;j$>rl5P9A(V_X9KwXFhvPMfX4o*EeMzAqLDyDAH2$+?I^m5}vrBf{J@y+M)W~EMBHY5HDj$O<4_)g5fCWn3s?o9Xi z?NHR(B-K1_KFv;h9B?h`IKCzmEShwWO_;J?XYY6*zxbo(;rHC^;-iVqwtVJj?S4*T zm&faGVi=rAZyIw^m~KxDQt#D?>`nIh*s`Dexvq2==@%Kd8}npv&@xIj@6F~q_qDwg zl)Wsc+u{!`UsQ0+SRsE$=|{mHqBq>9*ep3oqxrJ);j+dXWhsiYU|Urz-lPc*f)DnC zonaki^=5I6Hc)qxR*Z3Ho9<)(zK32qHItOW%`XlET{C@~f9EVPa2p;THwg%a>F*w= zuP~gQyyl>|XTMo%$}sPn?I`@k#bomN&Txo9aFYA^f!p9Nt^tL6$|b%tQ=#y1;;vf0 znXF9z(NO)mj70wRQxQXbqYY->wjDYN!*^}v9u%dc%SPnkpT@j37iYJ^#NK(-72o{5 zXnT4fnC4MxUf!4F{w>?_ruIJMV4AXI<`-C$(jXIt_scW~6V%uPPc%t_1o@NzsN93L^ulYtM=kh7TcNH)4d{*9f)G{!A z+Ha2MtyMB^DJp;_??0WX6=Q-&g1bJx$k0Fy&l?~+H)_dUEdFi;$MZkh?m6v@Z@3L81#Cq zB*ON4J3xIZU;oy$#^EFWa2nr0@qeVe=c4vr7QkyIMCKwtNkAY~Y zcbcFuXGd04Oib;;72$**>hD1t&(HoBw0Ml}dHBWYFO~TpZT$2va>aJR`P>RLFJqTj z3C8vEsZ}19Y5MZR%TM!prQO0y79<$>=mSDE1v%d8e$Y~F-H`nDEysiJ_0mM#?VboI zS}*@+TJ{^Y5~GUcz$a<3KPOlchSn3eN^pjCs{9>c4k|)4{g$llv_a{%Pp^x#oCnO9 z3PoO;zFEch?&+LHOfgXw{5cTxTZ%Yh5g4(KwVhn=t_sWd=`w9e$uNHZ@PfkS;YIm{ z#&ZLDDBuP@c+=9_try=m?Pq)I)>i|}uX(B$_ewe{DLIf$U+_yV zi4$!m`O>*M{OUD_?EH@n4*~{-bM0mbjtEf7Ae`yEk8m`RnhNbX(nAVavwL&T;=FGb z%E0??FUc$9zaA*4Z&Vp>?KCM9q!|W-7-As}v*%tDoB?Xb3Ybt-8e!`3 z9Wa^*?MX-=>2NA}34Q453iEL(9WTH#@(yGP7&0fmi!S2!=9r(`1e&FTEIlr3UDz{UeZ8- zfDJrA{;k(zAq%zWt`JboX&zW(rmUU=^RP2`p)5*34g|huFs&=XE4#bYEsfZa?gAM9wVt(Ou z%Ushb>i>?qvm`ZSGMH zvasYAnk_s+j4ol5UB0RKdeqB)Trr*@L(KGgV%xl)qGWN*zIrMQZ9V~)sHF#ux37SS zh&Ou#cfAd-kI4qrZ0>@@qq3hpDRekFf)Uh%(T*Qx$2!X~9tLZtGcT)TIDH3~tWecW z#wt}0BR>MK$I>94t<3m!R^m_2p@!1laV0)hbJFj&p~M|e#Y|eYt)^U9vh*0??Vqqq z7al?!W|nOCt!68cazvelMqKSqRNB~}X0F@MV7c5{tv;V#qwm*e&1n{yPnCuf%d`s4 z9%a_6OH3SUK8s__Pfosc>ENhC!sfB-APeKv#o&u=Hf;aFt3Wb@S?R9! zV&Z{H2^-_mL0DI^q-N!|p1NxS?NmY^?Y!aQL3`rR3x&J$CQ7G{iY?C_MZzfjdq~Hr5Ve~c%NN-FR}ba4YwVP zMJzSj42v*b^xcJLvGmIv4P7Q4)5Vg&3esUGi)Q`GT?Mw|Nh<06NZphep|VvUn<)D> zR?pPf6{P{251JR#_ZmiJEeO_3ZC^xE<+v{>hSwNDe7tp>GM>NCi{Y1u^V_czKU6$^ z{~SNx=Y@1>&};@9wd7PUg)l+f=2-mY_OGYHV(CiUKc^>lCz)A^l?CzSYO&o^PB+_c z>8@;}KP}NS7^MERuM%|{z_cj9RJtFb&m&mb6L;5^2d@G~UE0s}-D-nkK6##~~5*v=^*u^6DML9~Uti3yjx&fnS>N<1g zy%}W^-o&}f*7p3Kb(MXx-dX&s53WD0NtM&?7`b686xb%!8cHjFUf5Mt))iDfiVWtW zIqP51@4;cp%nNiMH+-Wj&%?Xr+DyH4sCZvXlT35Z%6H|qe^X3-?_#Au2(~&F&b)n_ zdg0ZR8!D^^zeL^!MD(3j?)Nqtq*T2O7?YF47%04bN+g^zJs2?pXXZJs$~K?DO7Gko4^U zk&?&GkBXLm1rz?HaT2>{O%eNxpY+C5z5Yo1+bOD1^@%(S`mc&q{<=w%roVDYo_GBe zj3FEWw``6!=U)UYHbe(cvf-n#l8FX=mecaM7j7;-LHMq1ZJ`aV=Q+g33DlRI2(f3tR zDzbH@IgZe^BBP+@s=Y(#j4T?F&JqmzNl)dG`Jo2kHr%nml$#I3?u`g!y1JkVEJCD_-_ z(wfyuZ>Z=szun%>@X)`k>|ub3NM=BmL#xCs)sM>K^bp=?{E0^JN{nadR%lAZPG9c7b`4%kc)MwD{W4Gpw@b{Q0wo z%lS4Qs}kFy+g=Rp%}2I$=>5oV)po~q!T5H4Cr;&LkHm0)?i?p5xr?62x`gq_@Vj|^ zo~sEA5gwa)gM}xQ;1gGu$eV2^MdExh$^PmT;e=tu{%qSIpqPhAPAIr?tX|B1=!HkK zSINtaZSu|8tZ=jS@G3+jGU4sel(|jM55L42+Bt(4Xqrevis8n z+g+{6NR(D|-Syo2+FvIg!=|m_vaK!tQTQcgREc)`>R43OW4E^ck33PvR_e{!aoc4_ zCp=AsKDH*WBC@3}Hc7S&@ATD( z+{8}RM?PKC-O;oFk%FHkjO)n(Y_7YsSG2dEx=Y~&2V_L9O_!h>-dv-#8^ycK$~7p$ zwq3n#$2k&PwAf7fGu~ZAt28knu0*=WoXO`zJ1WMdek;aPy>TwcS4-{?&B0S*tXlX8sy=VqS>L8`E+hA>CfQi(Jq|PrtqMpyvZ7WhKjb|wa=>WabQP{=v3WcB zF_}?gab$lYy^->`UU#xjt%Ag-_1(O~JUq9XMw?XP-1@U=FLv8Dkjn39x!%uNRgyx$hvK z(J^ytv~AL1-YjF^;EH}NPd~9yOjIGFJ;kP+dFm5GqWzD)VKFQoqp*@&h*p}m$q#rU z_m@yv$_P05wc!ZR!AX1#?M|Q-V>aNnI=ys<9A}m#KK~CX%l{qE4B=?~;Jg-90~ZHo zP`vZV?k?AL@^I&2>JMZeV`vIE40eJ9);9>m3_&;?waS~tg?PV`W?O6|qz3CC5c2zo zRWLdaUup)BT=nmw5hMa|%nv(iGAEmRi-xl7Cv$1~FW_85eA8h2tEJm+*x*`2AP|t{ zjj*D!RCtO|`Iz*^DQ#7kvEr{rIRh>H6D?&T8J^~LEr-XNncTF!o4ea7In-()q=MAU zXwZH>wjtWTREN(Kn3wr6zw}3JeBQQRP-&R6diEdsTyl$ZYrSZ$VOa~^=@s3ryp3;^ z((r7Hh^s>cun51(f=~1jeEFcgo0GrQjbBtVT)Z!uW9T`*YZS>M5_Me;hde+S=7j{aE3D#^bCNM@+?1Cjk7ZfS zF@D5_rA0lLrG-LPqYj?gxv5&BU|Au?@1)e@q~k{6~&q#oi4WErxXF^RJPJqyr&V&EmPBSFDykR+2POH&Ld zJUppHY=6Em?)zo$@MUCiu}4DVy?vdVON~wM zn)8V%v-;80?2WX8uJ3YSgOl@0Faq&OJ?JH5iZ zZ%vn&yDzlOfRceUy$-{+B;gfNOVx3uhaN>YT6Lpy!OsMXN@X1zMDQ=&{08m6dtjy+ zcy0S6c4WXb#<|@O2)rZi9y~~Hngjx=hTX@F+LkwNz_UdfPIbJ*(NH18F~5so~?;>cKY4 z5N0e$qNM+lZq+G8#wL`E;8^srr&VSCq+jUUw2MAn(?Y<)gHq(7V4-87J=6{V;tXh? zFRGo<`WHa~6#t0qFf5S9`3czlvm?ad>jIY&R}mv(Tkuy=tyf?=2>TpR{u_VH&xwYO z^0AK#yzV;$k%-1?@K3xDB#G@Vz~>5^&HqByyYnz#c+Rl26jMt|gK`UaI7Zt7o?rEi zrVm^KU)k>u&}o);F2SsG4qBpG*RFG`(ncYPK(itdZK+Vp5L@54?+(_b4ZoD7mm@z$ z@>W>HsTb=>mE26S!*5%9bOG1Rc#GQKdiJ9)S4KQN>EP-%cW#XGId*qOl`sTUyz*lp zDgQow{sS(*xfP|AMDW>2&qJ5U3Dmoyjb}BW(b=q zV|2nYpZQ1XkS>j`sv5B;i;@P`w>@_ih-e=VGp**3|0$=3@qZ)ol@0los=?+aIz@UA zO>Zs8_ewzLu33Ota2Et$Y~7dRS8#c=MKG@z_sFS?>W=rw#F;O>%uV|BFAkUCw6xM~ z{tP(d!S7$TFmta6J#}@QK9QLG-eFyf`!~PnUc~8v5~lH(C;95CXOaasie)lBhnF0F ze1duyvJ8@g0B;l&9<^|dVw+(97j^;~2O#$M(^_aWGGqsE=c~e-D8eWDFP!_q(akQErA;PO=v3%Q`N^wl%lu&}-2@OX-U=8e}gVCjo) z-Fl|6f6QbxV+W^@X1~Ko8Q}cdaxpBn{0ZAdx4!0E5}c5tDJ7e9K8DHimmc{g=#A38rW}^ z-{rfB(}9sV5#(8HJ~%5k+!4uCL!P4Y1m(1Km0z97I?UU3RWIPr#@mlUFcFd&flZgVx43DnB2=*V`X~Fw#%cr`e9YZ75_4jkDtAz;H z+3KPfw3*dH2J;(NehZt8;1o<7w7!t4a+R#Q7oB@)RONyg;Lp?j^o6|vpE{kbgx7$Q zM0hhVLHDCSj;M{-&SA0B{XefQlQMXkdd&Jt57%!#wT~-HV!5I__RCCP+hQDDbV-3s zf{#5N)W(p%l2Tq7_-&9a+b%s!OLa1x^n6TCVSb+UrCxz24a~c^Y*Al)9oOQ>z`T+2Red@{VLIl_{1_?~3)x`_z1iI~LweIUHk^QurUKOkODw zyuUnNd8ZPvo-|Gwkb|t5ur0eySeCP2Yp7h}HGvTrcL)Dw5_K@P9|pQJ!TwWar9X{v zdrLDbi4_vJQw*WtsnSA}5C|rucL)3T5XrJXNi#c)(alh2 z==xF-O77_I!JQiXpCDK)$3G)A8d0pqT7{7b%$l1;R`8r9OvOf;x|!0S;}`>p?8cEF z3b~^Ni(_(bF(!p}6B_?yV`a&4HqiXVaHkBbk3iAlmP*3n=Py0#Z?@v}kHjb5Xl1TK z0p>(4FN-HR+o2c0MY9{*Lkx)K=U#E2@LAF!F6ii zKCv37dlTRS>Al&LEpIW?CNOyhi$C|ELAox&Ew3t|#?Do8beFVE@L(Xm4`V;uMNCeF zo7h+wKe(b@fZKoYxTJ;M#6E$Eje|T@sq^HMM~3rop$MmQ+T0%S0ZsmJP(?bSS_GDs>9GpLUObi}8F?OXJ z-Aee6D9CYV`F(`6A1bhgluFXbmOSU2cpHVh}|68oZ*KoM^LZp%9 zr-=8n6*Vs2HPP+>gfQ-3W9%6D(uH~gv1Ff_e<^xY&+=t z?NjI%#L)9A+I=|v*)G-+QW=$94IQQY3_6Oq7|>m1q55=lobA?4UeGbV{*mN^Vl9sG zHxehor-IogxYi`7BnGZATyyY?Xptsxn`Zq0_9_t=@%s8&DBolL&Z(%76P@#$t&NAq zE#EeZx`+mFBQ_2h?`zI#>6m^^TWBDT=!}N?A1a#CMYm(F-}KL=7SdQ|lnv{+Y?8hg zwWj>YR5g>A{vKvxpgeg@6iM@K3G&>7O4-+Hgyfn2oWw0#t3T`(pXA`;3@;6iXOR~= zVpIQl(;mj-%TtJ#L?LfDd{Su}6=428vjbh#l_PSU2r=+yG$b3|l1{=g@T=E5b^Vz; zm3$(Xl#mhk_pb`%QQkr&0gT^EiyW#ioQCfvba+rEbi6myIW%Xi20t#7eUM~hvD;A> z(igLzkf%~7Fvx{>Xk82#|MyysI6{;i!(8RpVbCT22YB7Pq#Xhun2uzDURvk`IAVI= ziEMj#nQUlD2Mw=?yH}^>VpwPoP>oZPem#6MUrOQL9-M4Q)eb?3xx~n;do8oQC@H+5^w7 z$w`4{n^M0YatNx+@L<@#o*1XBkHw)%Wp!3)Ud9t)qRD*@@Dtyk_l?%t6px1Jax&*@ z)tuyvR&i*TFAZeaS(Z_gKGqbf`A!(6_U+HX9fMe>x|jFvYDwEpydzd-3(>~bAYYjj zz&$@hw@cpY-qht`F7G7sdf~`YTg-h1lbTz9@C>5Dmtuw)_4d3uvtW44M=9}WH!`_c z(=f6T{N`2L6Qxw^ARWLZuV-;GLJ#1dkuWuoT!f)l0C38cuV_&(MkAFkVE=gl5-t#w zLUgEK`vw8i78=tw_*Q>y7|7U|4hmmlpTH{^6BfKZ9sIUH2NI46M3dLxO`z%wW`t8Y zh2*#ixub-j*KR^>?3GsmAF_GBYvv`|%Ox{TR-%oslf6>>MrZ5x|+?(D}Y#G(2?7T}dbrquwadHITD-q42~26mKa>?0tl;m6s3pA*OP#aSZRn z>p(^vfvO8&gV7*+2^-y*1miU8Aoq*PB_fwd(FY9|z;9i-`k&d|MHYSpjgOI+pOBxx z;XWuwpL4iG+~GrO0=&1z!CmCwd2%mEx|;Rbt#U##UD?gU7$u&ryM68uWb%nOxgih( zI`FP+k#?g8&^b=}GY>KutEADD#AZy;^ZD?yM<)y9N+e%AY|9fQ6K7L?*ufieFU0q= ziF&$woKvIL=zR9m8%-U1PlBo4)v&V4@`BgCtON--cl`MIxR^MI{KQ-Eqss%6hykKM z@=PhD9Gst|Ub$>+v{UpgZ>>g@w%~HJ{FX`1@e#9}s zH21#Bg%jn(_lV|lY16geTv#3qDv=J)m0$I%Zj9BjYl%HizON^BLAwsexaKHL3VVV3 z3>pVgz%(biULFt>zw`2n|DP!k8a51lkkb1wu>>Sp_&PjXdLAJI^wLp>CX@qvj|;;! zkKZ6)6`H!#h!h#0C9D7VI}854 zEkSmEvGhm0yKnal40;R(J;X(yf2|6Dl~i`Wdinl0uO9{?_vjvlk&G**-3lemXFCDZ zoOa!L1e-nZ^pKzxTZgM%%u24bjc&ld)2brL{yn3&P>1E`1HZ}7JJ2#CaR@MSfu28r zZSt4LMe^=B%{tr)y2z8~CDm4-T3_-V=*~Y)n}-VogT&8Ga3ZAgB9L4`xSzpF!M*|0 zqbtL-&)0pEerS1LUfp5OEZgci><~KDMQ*yI?iCVUd zVEZicv(=9x!BD-X`;4OGiebSIOL<4=p0<9bGVi`G)blyGG;-g#g*7}$Cd}xnAWkD~ zf?Dn9QjEsgV;&q88CXg2A7hE(M$Gl6)VMmVOFiU?AQ4S}+WCil)MFakzO%+cL19{c zxa)Gf{L^L;Adq3tPw7MJCVw zHur;;G^HAqbgJor=ueamDonGL^WwG$@~rZ6L3>LlAaM%Axb7?K0EtHktczKkWjN&q zTxm}CEs#LnI_V%1DSe9iER!DnHIuma-%b3pX|H?&+7y6RhcbSjXtzA7y8dGPes?kIQ2ok6t6 zJ#pzp=}|KF@x|Sk*LGR%GX6{b*$toKL<$DwzUAPaDJy!cS(j_rUoXtMmw3Q8SJ&hf z&!7cY1IRDIeT>ALhp+^MEk^NukaUL`y$SyB57b(Yw%jNf$e$r@g2G8Og+uTPT-oV3 z0fZd+9*8DV#Pt@-c#e9fkDx#vbuGR)gHL0>MhCOs07ml8|Hs;SM#J^JeIJSFM2MCk zN(d2Mh&ItXi4qcm=psmz=thkYUGz@$9uiT9sL@N55Qd1}`(S4FbNK!K|NDONtmoCU z&RW*YnZp|A?7gq{`Cc37bG3u>HGm3RyNh%~N7%<}>#G9vAQ3pgF$f15`PN$?z;6d0FMD)xK@hNq9K~#^chn&9JoHu0+lYH# zO^~ouJqp)=l8mGqpe-5=o^Z)ww|m&5-oPiAHg|j(rz%Xf--NzFFDQ{BGOKf!PMAow zs%iHKKM*aldUa*)%7o*#%lt#Ic1mZ$HD z!16rUJb+cqfxsbFkf}$!3*D>pMrd5c3F4$sTAwP9rHe@)8lI3tS`CSxP z`1xQ_Zz^45Ge@wVp($FE2A$a zvaBpi#p)z4OsXYes^`fY)!UiVvsTLe?TTlrKp$iOT$*I2JtT~6mAZ;3Spplq)V6qk z;q0ZN7W@*wRhRID@n+eB$h%S&#p>04;g_~6gp*)si?x$YA6cI9_}3bIM!flY-|nng z9X)f!k{`srEGxuDr!u2FHlm8OQ~V?mFQ4?jUf`;notzbV{(LmvD#Q=FQ`1t2OYmj{ z$)_wn*J*QeFI$0!Tg)j%LFDSlH|)B8nnWBPKeA5=bl@_+ z_WPuMn3d7-J^V9Is!f~!B2jZ;(Z>wL_6xj3tL_(F5vpHDA72gUl*0D7D$>~=1vH9p zi7C3R5c+@Jay1PckSLm98XazI*gNj{{GS%$m0V{2E@h@KPJ%?LoU z3>Sx7Z1~X$$j6`ivyY%cN$*0_0tb0h^&56n5f*AkPad1i?O}>CjBpwM^#!TuX@JA6ppEa9YCWj68^AFUL=V8Yjw8Z z4e@#_CXFe=4@BD^_p5qhl>o!VU{7P}H6zna%6rn2N1^8QB}^prIQOwOqtbgJ0-}lJPZp{C@(he zXE9S0v(ePJS!6)%o%4BsGG9WsqJ%v-lrPx3?&4>uhDb z6e7n~S3VXg1q)Pp#s$SX8|85bB>S@7Bl!L@@M=ceb`=L)LXsr}wqH1)_%4e4GTmr& zF;DR|9G2kSF861)_Qrv>XW!J{RISjG6}x>6q46kn3mbPMDMPel7+wU~F+Fki-r19~ ze#XO^KyMjcG;gP$_cW*Totedm$wUq|@)Fyl`{QgVR(390zQdT#Rzb1qSq{JC`tB|x z@8V;!HD=)jJF|Qu_K(gr@X3PCzkwokSO*uIE(%o5tm2C;0dd0sGNCJk$^`@K)6w@_ zXCv<&-Z7aec#CBN+fi?^H$DKS(-$i`Xj*Y_PYg6kgZ&-!a?n?eUF0fSX&ELChEJjf z;4awQedctq0-Zv{55WBy-9Li30XWG3+%X~~&a7{-ru=0U%a6Y7sxMjQL~;HXXO8@;25+TJm1AK<%|TvnazxwH>W4vd=# z=7ewf80LL4hEPBvz!F9u=8Y+E%-zNwBtrY!>^4*1?#1qy08C~k7)__v`w@r4R1AL2 z@PZXYl&?P!l|aL=FEM-*(pZEESWV^IE!#mVvGZWNOg6z{y%MSKwLB>QcuYqe z3QLR;&$IM)=e$1tt-ya1_VCh(SIgU({;aN@8>D$+abxpxEqt?%B89JnlnnH)WBy))-MnW{S-H*>!)%C?`MmQ8Kt!e|8SpagzLJ6 zNy#v;CBP#CH@?kcvQCd18%x3@%nO|KiP>&b-CqEWk-TbUUpfowM=z=9&ZUAF~Me`{}}_k73-ENVz73)VSgBP9$$Ay zU>F;_h)PqLldHdQx)Dz}6=YV`jt;udHm0}ME=$$!avZvV}pfftdlX0TPbsuLfi-ZHeInhQB@3oYxY+i2mk7oE^6`jEZaxh|HOA zd53uYfS0;6A%0_UYtP^q32z*fsKNTy+t52JTBmLq-kQurKJ2hzCE4|`@iDEc@>h;_ z{gg*1CMV8)B$EBu5YIUm?pl1*>m_cy5jhw04D^>W^#kTcnqZ_%ao)h-j z_3Qp@jxqJr8fKYM`ws%Y?v|#~Zu?N|vsj6erlsMh>)ZRVKAy}Q+0`8T`wb0p7{gO?URR}%7d|2-PC6~2;Qyt)uzoa z_J*pw`fjqVwb=H|}^zO}p88^`%K4a0B_+Yl9U{w7-iGo}Ym*7qx#&rU-s z5T|>oXAKoKF(CcV;tT~64z?P$!7G`-Q&DEOqWbE-k*cP=2}h0fol19ylm^@93%9-X zrB)V?_>f8fy?DI6OZp7nPjJ(PcOj=90ps?7JLXi}Wt5Q&K&-6O)y^tS{mGxwOCm%i zas*@NlFnS6vpRnG6PtJ+E+c;5F12ve;tCx9-m)5WO-y*pN~jPlzl|SX{nlh6bAuHv zWu_9)+wJ^r6E(qysB4RaR|V47c?Ep=rWG-$uu1cVBH~2W>61YQD%~%i;q&4aJNuqc zrd?}WiOwM7Nh&QlSduW02wVHGQGp1?KU@?w0q||$4xd;RE-ft{$_@6h!K+Elqb8L& zl@iqyIwTIy`yez}H}POF-8 z0lh=H@327cptRm`nU?z?zcHY7dvp8tgoo6D#%*sIWSEhg_p7S!Q(%731nf4fU__7N z#~iWx6<$qC%lEc99DLV%ooRUYo!k1jDc*f(`)pioHt57jyY+f>)%R)ECD6upRwcR#;~A;FI8?4bepc^%dg*qaPgXr+gcLiE)6qT1(!4@CMT!Q@Ujh6q6 z_^anL;mxO8O^S$>RG819VG2wAgc zwgIAmI?;kmaEJjOU@V+NoXuSS48b5w6Y!CWwSVwRWdY=_9%3QrXi&>#a9b!Ji)hcm=H3DqN zS;MIu!d#10vXEwHWr#O$lMe(_v$o_ zy};~>l{Za~Yr037Z=Sp3%Tg1UJ7Ldkv76fi+c9q9$8@CuoLAPl_zVTR2U7TQksvz00-!sWk4hW{>zkFR(h?>p?Z^ESpMGf-5E1F`qFv4TDZ366rA& zwOqUArr5engnpS5F~e2Ghu~-F+H&cxI%^PH-~pu%+Tdfm1oiIV_wB}?Kjr~0#dfC8 zQ5!Bf!575Uz_yfbfx@T#0G+#bavgJIX7?;EeJxYk?$uVrV~{M-B!TnIybRgYaF%~0 zTg)$V%=p!ig$?594rX9*OcxAVKxeEoeUdHzd}^YYBdg12`zhsu`XE87r!VkSv3no; z_BaYGGs6oAPChhj%P`yw-rXiWWd}sm#B3O&stmm6W1dGF$cQKM+P#uRcVAAsgqIO4 z7cgTN2Dbr}gs?=knKa|hn`Et{)ALK-j`>D?**$rp(I3)cyV8pkA<22JqoeswC7n<5e5O?I;k`&WZK=x%|G! ziv6v4Vd>5Iq$RpyFIB2Yq6xu1Wl*jW%p70Kdr#j^I+%qWT~ zzZwNWT}6VeW%MrLi*)@Ax>a(|gayi6H;|*aa@OYWU*M;xhmF&ChW-2^V^>>ceA7zY z6o$LWre8!v9nrr{oMe2na^>1{Mvi*p7sCom_iX!Z2~l z@^Z@Yb@wU#zmg!yZUiYR=4wAO8p|ajd!FNK*oA`#_llf;cfTRcfwHZ6C1y;Qw6t!e zg_>tJU^S~({Hl1GKEVb z{KJW71-8}in)Is4J}a3!Wr!(7A)syaz(?Ir`ulhtj`8j6^?9b&PtUBA3W<|kem{;M zS@@kq*h$CJSUa(h_};`cM*79o*ORc`-pD9J&y=|g4bcRdPtNE*^n|7A+87c4)NB|MS~ zTsWdKHuk?5RJ*F%KD0U;7kyC4e%W}zbul|t$qu1wr8IGOZi6OElycw18oyE^sswKQ63ZV@n{GtzPuZjO$8urS$nYoLaB;={_?; zJwv78G2eLUPs0g?C{Yf^8B)Qea3`N|hFVI@o7Qd5rpO+fm*XM_;<~i1Jr9!{vew2N zR~L!l4&*m0%~h$M*W}e^*2mwFYBqkboN63lmoIaug_A)b?^&Im6{4iCO`^Bk%Pbq( zX(08&icd&ll3$DX&n@!j>6Z9N7jwTsHVHwA>dV=(fwVM)-28oTIfHEu)T$l7XUn^Q z0T}&n#uM=+)#AMXTg&aRaI3_Z;_mHri^UDJ>k4CQr|+qURv*deX-H>rn2=YDer%^N zb}g>`MJHAWGneFJBFP3<%JA*0>v)ulC13FWDSSY#?^8Bq%)iiW#-$si^2}5<ls2A{M2XpcGcu#g2_>(LArr|2%mn-xsT$#8Nu1{T` zual^jft^tkI$036La5xkUE+`|{rCles~w-)TTGNv!Q@@Lu{7A6su+!Bob*<5HWzQ- zwYlKSV|XA~RnTEzX6)V1JKd0egC}LQbeyQKWd5vU^d67sm3?3Skk=w3tdrI$>tVei zX=~d`&1u_WHD-~^fz+X{4-H){y{D{cj5GE78G;?xNN*ilzYwkz*78)PmL5qftfyV6 z|Ijb{YT&8o(&5)gn_Q)hTb_oB)#7DUW1$QrH+cJ-8N!>|d&wu~^BlChf=|4iev??7 z^v4T^j9%qd*Ra4%+ULyZr;~7=)p4!3QT8Q+o7$F|W(dE28L{^Zc_k*Ar?Y~o_TJ>B zNFF7+f3VYb1;^h4YIw2jZ(+k~Oc;9gP_b z`2~Uud$XndHsDs1;N}Cxk2)1!K^4#RuGbOFfBO+SQ?JJaEcPXt@%nT^Rf`?w zh-L0W&odJqO=d7N#0u4U4G!Y}DVt58wu6r(+#3ALlF$&5GmYZ&Uq%)DT;P0CLhDp!>VSAHkpUl7|2ww zNIpmUDocc=*@~MJMuhL^^sv7D$`COmnPts4y7~GC6R9PFz~^)*2iFb@?WDe)@Zrlf zwRaqp4`2$LFCM1oKACbMrFV?xdcg1~gR{6zo?L|;*o(2Rr(046%by~>F@sDi@F&Wr zNbb{2*iRt&ffo+32l-%T56=X`6j;#l|3%A)XP|0q?GlE01@6C%e}Ef@6*UA6miWT9 zU_smm!$-J+b&MA@gKj}iL8%{)ARa546AkhfV6Qr${NN6xuRwmrdu9f777*K~LBQ^U zG~fp(%_cX-j250zu#)FAVl1qF$=pVmBl#lYu``7S9Dn7E^Vl8I$U-hy9=dYi;t z(T`4Jc0gyW^WRRNB%?c1Ot$fhi6&zH5d6keaDwG8|3+(vzfqS%NzJkM-F!{V&ikaB zYew?%jpX{b9(X#6+TRnre=WX{Xkrqs9Kt5cLMJAxB=v2xZnKGg)eI5fa^f+EkZ6ZP zFwb=~Mb{48-0*%YY#ykiGnH{Gp+ap-_P>d7D6<(A0Jajo!>?ioJ3#2wTcf+M?@*Z! z%?XW$MGgRM;>rqOb+X661wg5DW~kjMZ(CyeuCc)KkYsh>6r) znFAk-)rqI1O10BP>x?A0RqTk>6OloiKw=H|qh*KNMVHG#29HdQLOR+%?YY_iBfTH*#4jXV4BntMIS( zI%uHRLw1&VgG%Gw!;9i4KXw}ToL1rM1ki;FN3bOYkFjMuhvb84BzZ>14S_%s2 zq=Dy?A8SA1Ku@&=gw8Qne22O%%3q|a&(qZiX{pa4lc^{_#BqtMwHru zxCgaXHHBN9b=*V8uxzN{^;kYblzJiwm$ zCLszYGA?}>+jb+%c36k|^OTNo)N8eOUG)_uT`ubCLK{jnZN1O32jeFblcum$+&Q1b zX`JynBooBb>Nu?bTtXLKDsfvsE|3;)^|BN?;g22KY*ecG?Y=r`T6xWPNC)>`>v7+< zOs8R4;veDRqtvp_s?yt#2EDcAiPH6WSqi7lID(b8T&fAr3&Ko?5tRCWpE-73kHK*M zf|DO0BJAx|Fc48(hdoX~JF=Z-F2(}Re;JZfWQ7dKJws%UVUV3~eZqj^Dbfk!_>;~? z92+9_9#9TpkldCwkPb2D2i*!4*ZJUt;MltR(8Poq=P`?1dBz0VI`2VKGg$Trdh+Lo zJ({Aih2nh3AUna{16A##tE;^p9gzy1%U5udTi{(^HgLg$4*FP6H4)T3_~A3VeAM>5 znbT%ps^KL<$#M2z8|^e5>9*RBaigvd=&=3ex)#5ZWB8|c3QseqC)TDbTN8i%aO;DF zYYS}VI*-;uB+e^)Ug|v(SLaNFCvUC`811%6!255l3}h2HwI}!SYfHKCne08&F^n2f zdAZ=>ooOo*#o*79zW=-Kg~9xnepRu^`S=N2UiHONzqP!uVo4g0SXLJ27h?4q0)Jdw z(SspjKP-mth=`=tet&lD+OsbYuaFbm|6QZ7uV*wq+8cYBh+SPE+Sbet_0~PO`-Mce zno+_Ore(w-GchQ@G}n-oqQKtR+!Gis#w*bn1iOr9CjEn*nTd@Xz> zN9!+Z^>m)T8e?{AfXTOB$#Y%;K6Q%N{#L#|TA*+Wj4;6JYF5W7ROVzlH#+}|=Dff< z&*6#$W`~tgRt&rx3l}1s{DjH0qga5)fv)qX=;oaBV=HP0aJIm$-vb(`DIAJ9{13D} z-anMZ6KJ@KwT2>K2)$`096q*gh2jIM~v2f^m2CZ-afurb(URZN8==~p9AogR&bVB-s( zp4$bSuf4~Rac=kv)J~D>2Z&~YAs2Lo=~V#BLL*9`vhQF(D2Ms2@9=tX!oCd;i2e;> zttO$s$2@Cs7jaXV2qN9G|A%yI1rdv9AJ4Iq2vEdrK+l{b^`SS}16ch*kij>)z#h*z z@H(;xchGdo+^fU94p}6c=AqE0uOG-@9NoY_p**-ZpsfdW%tzNo<0vxbv(s8WFYz_n z3zy2RaN&xyy;)_ERFV6)t~_V%#TBv+#2BP#Tw;L-As@ypy|br`?Vw}z>t&DVZEcfa z=~+sa&+k@WHQpiEJdD_8ysxY~RpM!~D6rPY9hUr&?=df{ue#c%+su!@f~qvhH5^Ir zZoHG|I1nA~`)d+#HSMcwNin^BcNy9L!2$qmQ$F2Y&Tb^WnM0U_+TKg9zqaDcy8SJmFw~a~6n3G((t|BKySJ{BBT<%$VEr>SK@S z98Z2DiVx=HA6KrageB??cl#A&zl@U%wA_*2v`_!A=XcLRUs5nQ`D#invk*nmo#)K; zPAw%@$8C3_y?1?m9e$m!WKbtkI}#=S^HME7gppmg5Wq@gFFZ!W|AV7J4MV>&o?1YY z192Htq@MF=7?fjz{n@!aT1Nw@(o5y1RrC){fLL&>J-}Q$Z+5)Sfde5tZGI?-NSMJ zG@D%3%jM;!J0Ap z4$Gc;jF{+1qpE^fSdyhsNJ8G5nq_r(1Sxh~=0Nhvd=veLlbB`8yCZ0>_@M)Bd15cN zc^TaJT}2M@*Brf!?|)XbJ{=VE%q9={YC%6(r#-BxyR+iodRgimXswB|;|WW&N~=2N z4o+;09^_huyMTSJ-yq1>)c*OObH5wHgWuzPHUQ4D)43?e3;OXt7-a2N?DDVszd$Uu z_91AX#I=~h7C^gZJ|*t}26;xcpiXeu0xJi3C!h%Ouf-s=@`5On$MFcpXkCTy3~eY% zg8<3Qb18?zRfiuShur$`(9P^DHe4<8TUA`S}XU}q5lom0w3Ia6@}*qu`1s|YMqI32=IkSYQF!D zQ-2_1a~{84d<LHj09hzzdo*%t{H@w5#9$ht2KTj_<%5;?1yzsKCIS5k^10nrFnt^H;795J z;{K1OX;2dN9C0==|IIm}37x*M=@q+kb3adsN1N{f`u%LA;wukROZLd5ACd#_9?T?* zk5d?XGdVw2)Z&2*Kz?Ra2bH)N!?6b1HPfnb*GjlN<@wevFL6Z*$>rGWKu9~|7ox@s zRqdycLUM0bvTcq1xK?GfmIhIJ;qKvP@hj}ZGa`=965d=9G`-{I9krDr9^u73EOEW! zNzkjwYmZA?uf6K-jXgl<9m2e_z*Cl0c*zPJn}k*BWWHc(Im%$hx!@#2?g)AhVYjEu z@#k1N8mTl2?wg-7`&H2nF+Ds*)?h_#F+yEfs0zmS+I|l_&m-M{RxaVE7tlF)wu2;- z>w!ie>=NKCgBx1{^EfaF2`Hc#`p0>m0McbO?$4Ap-M;evd;ktg-nRuoK@ny#xI>q* z1m(;%J4nSd=ENOHC9nwnU8hW(`ctD2+`Rx%CorS$QR-vw#_I9ZSZcYlew35cD8sV! zVVGhEL542fXN)WxeZgD?)plO_-%jLl_upKOD(+y7A@j#zGbK9x;kz)%n5Z$X&B}Xr zIckcqY@eAkd?2>X=grMy)>hi>=Bt{OVWZ{eUt}4nXmvk+nL}b58PN_GX}a@Cx%k@* z!p`T#9-Vvs7ycVuU37jM{u8Zp<{31W?MFjSR98$Ma++$se%G`6 zfI#5sP%oaMHZ=*yp&+Y@o&{I^+x5ruMA%f5co&*Sx)M5M*fKE*2GyZxcd-e*46MO! z%#Zfq_pPWGdUJ*bE(69up~WU%$&5O8WuH77i2G7uN?OA`qU@onVAT#&Hf~guErI(TQ0(CM#kp8KXe*>t z@;5Og5imfT#}~U8M=@|EuAQDepphLwQS*Ia60Ax!*;Gh&D0r~6*F9jKy(^GVF7UwM z7U6ML;!>Q--?XMfBih}19=8#3QET5B^I~D?ey_#D^b#>ehy?zjN1r(U{kwHo>d$*P z9|X3Z_Ve8L>O8pryW49-gMU{++Jaib$tt49rk`T{d6SL^)B!uoq>1Tl8qXy3Nv;?! z$vusCjJj2KmP{WMKk9$<{6^mRdcHpjO~3w1ez(-ov<92gRL}!2HAvVRE&uMdzS*Qf zAq4*B=smrp*+9ty_m7MDOC@d=*{S6hecjaD+Q&6#lQbe_j&N7;iAJ;B6Aj2AJBB-N z0m;E>hZXbeGsJ^q_~@0n-fiHG64<=yh=6QL=WOB4Bh4GH|p zx8~M(fAKCTrfLl15Qyu1R?4`MUuyXz`V%p;hT@IZp!(vULOMuh4KN+P2A5fh#)DE}L0D0?qhnIc;O9-~P6VUDIM;;=HGdKr1SN9z z?dk!M)cJkmLT6H*d68qG$m6VB;{<+Aw4Iyai-3?Ut@%~v{VU%g#aJS_aR^M28zW(2 zbqVtMnx_ZB^(hyuNx=asb617w^+SE8^__)z?`rnzVF6`jj*Tgo~x1cT;h@&LKn^<#VAcd?xLq+l827$XD z=P_`%*sgM{mzIko2HAtDj+c?){CX$L!FEJ@hkZ)z%_}rJiMy#d-Dza9B7V)++w`QZRMpiFPLu0g7%e2%DLQ7Bpv1k< z$e($*;VGuV8Oo*X!W4UQ_>8KmG*2TMBb=E`kzG_sT=+S}ZPP%~{73`s5x0IvdIv>m z^gG9w9&JnE(A5~FEceEuaiy(A9HGo@RK}0(tVA`T&vCB3a>R_!>(#Y3V&APa z&gFBzcu73Tdvz{c-^1n43Y){t5@vq=paEyx%qe6Y_5NkE;w)hks3Txod_tJDm(WYs zQ}Q&&>ZXG|)mEl5XW@tNezCFm2y-_tj2o3{T5SZ0Qb{#^5vx!pajB5OtHqp&FHe>a zJ@*+3OI)5b6y;a7lJ@lNK5CK@6etI!4Hds_wh2g*gyiW+aK=4n>`?>i>tC#!!;Xpu zzJA=vU<1kbCnVM$ET~~{Te^lgdn0~Yy1o{18&_MG8{Q9*YtMWd&T`rFm&~(OIrW1p z>Y)}n{H9Y$o=3a7f}gKE+<08jIhxrgV=A6@iWp{{+Y7l9oR0TZw5cL=t(Be0_Uhp~ z%9d0Gp32fp#C4o=*%V9?oN3aA(UFZRR!*p@fBEjM`ne6$&xY4yuhp zpzu`o2s(FuK%36pZ{EBHw9W&3pR~lMx;F)y)PFepcubc$&oG*DgSh469psmEKlDX# z5BH4qTEY?Hb}7B|)qVj7lB%$@xyV1c-$5r8yG#Vm;tJI*ZY3xk<_Px5h7h{{5mZ^Y zww~Iqq*B}?9Hn7#OM~;4W5Vm}y)M?WI8Ar@MN`(Xku~)K?)ykHgc*lrammZi?wLe? z|0rNZ|0*~9B^O@qIA~IKwI-W+G)-Ysr|}`?WSA#JmZ4BZZ;Udro0`b(Z)}!`K!~yY z(sle0MBwFel_|S;Q{K6!H{T~M3JeNTdHqN-e%Pi>A4)Z#mt7wE9v@9YpFmoze-2-) z6KdZ1y7Z8LQ#bLqKy_WxsHeWR{)3irgPM&_6&o+H$ zV0_)xvrM-8vw|8~a@uAEU)m_2F33db_G8=3l0nx=rfJ`GgIg=G+rtHtDa*TC9d6i2w2}BZ}isy=x+Dr2c_@1?Y|jnIMut4AZiCrj@44a^;E!` zgaL&1MI!|$tb)wf^mN&RLpM&+4hR6J$LUusYpeyt%kuHNNCs=)1M|ApTi7TK^dNU$ z8&KDBiXu#ToZUuvVlUf`5^9@{S{W=UPUjx|EXdTUnn&?KoYu}P`1$21t0zN$Ka`?w zv#4vd*$mpNmt|pM=&YA&sjTFJ(kGKlbD$@l3%;c z_sh9GkNUH|ZEX~}SOpd0Gy}EwlzEtx~kJ&+n zMOUV4jV~u(2t%JwfSbJ(JW*%_q{#gQn#8e#52277djFqP+Iav31>Ce^85d=Y4+n_a zaIkP0_gpsm&xmD#M(jK&hyV^YI#{i9^&Lpqg+u)So)=u?&pM!a0%tr!no?c9Zx3me zCUybY0x-y4CjSFa)R1J~DGns7o%Ox&diP3YfUGW;O7N%g=-Ef>PzG_VnZ0{dp+(<% z&6P)GoX+elZRW&L*Gbtw)xEivz*eIh1{>sjn!Ecm2%+J&&wAqCePwKG>Cs zQa>e9x!Ie-`o@UWz$q`7fA?~=YSR!XnT8Jd5c5ChOwD07b|Qlob%xQdBcK008>Fza6&UR?<%yO zYMpx>$WA!l0U?G6grJzKWkHH^!qUD5PCgp8`PvjXdR!9LuqyFYwNDIe1-psQ+t74OJp|AaD=kn16n$usxtU!kiDGrv>5D zz$n>95ci^jsy7G5SLrZ$|%JsWt4_G5>xnxh2T7)*gmudz;FjX(_?U z{c8Zt>{2XsqLyu6uKGh}_D1>>_I`?1pf-fmSG!BGGu_t8jtF{^B^%f6Utj&J zM*XiW_56kYPatI{cit%C;!4xeBe;wSpt!ULI8K9UuwqB*+l{a;M2$>JX=_8t>5#FVblu_17n#9OZ=WM4rJu{elONM7l!(q$H z98SVVU_&bp8IaxQjP(;^F18_k7c>`l~(){38gO)EtGt3#u$|Ze!FwU4lkrX zok1V;Tw-fpn=NRu`q#&CE{(7p#ZaumNe&P5RI z_x z_q@Zy4s4&Jt_!cf^yhp)+WqT4sU9^*l_-DKxp%K3GU*1(<~1&&!4by9%GcG2Hk{cG zOdUDys}}vyW5G*wv-1)N&k&0qpmqWeSq3d{xzNn>zzNO#1@CDjNRZpT-~%pz1j+%R zS?PN7oEU(%Un{&0i8-U7?_lrs7c`u=1K8(CDaDbFxo8K_4u*bBxj;r4+9XV=49A!f z1a5#Q-2Z6?V6ubsshw#dSKo!5qX&F{x{AfRKKT|VsV^yjq$7xYuM7s{v%rft9U8_n zXCO81H{uw9c|CDF`qBio(BwU>@Ho3VySYqMHV7M~tN7=m5>%pU^x8EEaqTi)mJEGs zJMgzxfnGyE{()k^MAZPB`8Q(L+tyF-X^^!i)7lB*lyuQsdwl$mW;vws#4M=c(jf5= zeBqMX{@uetmXZC!A{%4U6lXl2*c?wWKU7dW54U_uViVnwv%;qFL)9N6>PjXERy-my z#wA9JPad(VSKkY(mLCm8)dbah@Ty)dmOpAQV7NARjko{l&jUu-L$;hf_AG(A_rr-l zNsH=#`J%S^rlP0F4i>*rC1)(8<530{S0+Vqy;6K6<#S(hPPdl8qkxH)FmEN8n+gT^nKNom|%7 zH!?TiDj>B2s_I|`II$r!qd=CA{S1;V4q=y<QsU|^EH_T_mTza~nxOQS&9`Hodvz91Ax30Zoq8@^Y6Mq#(oc-t@EX&HL|%cb zAA%+hCyP9I2ZHLOWw?7zoar}>dw5eRY4vnJrAR+!jrwP;7BqX)N21~I7cV`;dGrQq zvAZ`=xgOgY>raZkX&o=CC`YBSsMboAOOEtL?F|S?X@{9Jn7i!r`nT=TzETO5dQhe0 zOP)I*lH8W*VPvbA=ezQDao$U0oxLO{oZ3l6uhTMU3S#pPy_yfdTsr$2M#c)y%F2x#?X{hqo!^r zLi#+Ntqo{0907YnQxsYHxWrnCim2GhN=lP;O}w0$zG5a^$H)SQ{YpTv+x*oUhV zP*2ThaHLx?>0fg~CH;zlx9O<8i?!EaSnko}w!{uYXjA#5?B5eA$=NH+(v+yi+k8Pm z$q%}v!zO-s=#rO75SB^UHId#kaWCg~U0)r>w5&YXYb;n7akLn_VWq^rcBO&zo=4KYV;n;~z*lD5O>rhV$bRmrE zvbpan`Td(uMAAYQoQ85ehcCI@Vr?()X6{KV6j-lq>_wYRLyT5z?et+)8S_2ElSuo!BbzSFq9>?c6 zY1sIZ;Xk^`l4SvZzVi3wqf1fxVF&MGAxfMg=k2|ddDW;`lQL62S}q+{Ni&CU0z}@H z?c?_bE|P0IdqPqr*Jdz}uk=Ny6`B2%0@+vNAIS3laCh^9>At;CPWB$8d6=z7_P{*d zsDaAm)A&2}#$?8bp`)}nnh(skolN!cRtN>`lH4BYJu||wc`c^A7LsVH|5V&-N-B5l zSIQ=>E1&73PvO0@mOb>&DoyvlH8AyJ_r66t`fl{+u_m_0hrS4A9?VWd_VN&tA%Gv^=3u2&R26l z;i*|qfn)eKiByuVQoQC08qBEF; z_e!(xYk}DvdxOH6xL*FzA2TdJT4k#9YPMH!NT`)B!!m8{OKm3y*BrPubS^sehItR7 zP;xZU(<@orEDbo{!JfQSW0*_TctZ0gEMr*!Hhn%5#pkp7ixTVL%5$<&HYW1QfY^I?iVv^x?T&L2cR8EB6CGM?Q| z?KL`;&bDNEu6Vjp@1cIg#ER&;lH@HU`eZmQ;*GWR>jA=^`@140rZGCHsaKNOWDi{ zXIp16;7q4K`U*B+*C_YZ!EvaCzCe${l44`q+WJgZF9?D0N~fCO?`OkPCx?5QACxq( z+N*?N7Tovj!h6(w6kNE2BZPvK?n8P(3qkME|04dQP_?U zPi5Pr8xM?QYI&{Nxcam}i}c(c!&>`R^2&M}d2eq@dvd(5l)pyzqE`Rf9y8_GHe|-- z?#H_5$E33nlyB?X+9S4JLl1uUV7bK*Z^nfXJrrgNP8I6+bCae{0#2{zsaRQfC zhKwE6@u~Vm#VLuYU4%!)z-cJ+!E|NyPfxCD#`-n7Kdu7d=TzA0T6-UILPox}+FV{c zvaeDuafVow*Hv#eI$$2bbBmeD$V!FvuZ%hRw@nT|guF!|ZTJXrf zh3%s@->^6BP^tw*t6^h?)^lJ~f!1NC;|gsnl(yhnVQV04{ax3MBCs)^H0O{!UxJ zEA?d1{d4xMrLh<>;FJ6;0WfpTFD8UEC&7acfvNw|Cwp_V`1)L@8xVm*_>TIOZw@xV zbOBlur6Z^gdlC?Q2r>>`5zr;*$%xBMB@t!=-y=lM5iRur_dwHd2k@7P4#|=?d;lyT zI98pq0oNRbtALknf{$vh5bd64(3QQ^7{24mq;gcA>@3TP)lgj+M#U3PT>~4J5OmJa z<^{whA1#I^)-LF24-dRXIQ#@8Iw3R1Uy~4#hY)Ur+Py&CC{TMWED4r6 z|9k+7AcYLd43_dB5}il^W#R_%y9apWj)Xe?3;>`4zcdt3NGVWn#&M9%&PRYfC)0`4 zKWNN*HBrC}3>bTW>=E7-7l7Ig1PchR1VLkWV)odIPv_~6oFxxH5SzVF!!`T>)Q^3A zxwQbqDmw!UklpwXYnD6F+&4b^6)Kxny>3(=!LDB`DSV&sOEa)oT&6I~r(@uzK;#7V&X{NJP35ly$ z3NcCjztEf3=07-$#sD4f6O;dp;KqjF&uV)atlIqwfK37 z7MgAXm|g5ae8Cc6h8-+HA3?IN(-@*Z{{#>Pd+fNZE&Yfn@v&w9&tF&k zMs*D;09(EgCWpq^M*&eY|ZG2kJw zCepuENFYtwC*g6x?jpvNMP>1GlFCBYmd6l_R(w`(oPow7P(7()5tX;CQfY0H>O1+e zm;l2`YoTDlfaANXX@v-*UZ2Cum$8c31uSlkiOH^MBKt-6vub(zhA?luo~vzhJ-tcq zeSdB`F6O2lHKIqC##6CARGHd4nb9d~omIhW%iK0EMB&Jq$f?uv!Z%$`o!&&ZQ%xzM zl+rqx$Bp-lZ2Hxd*LO8*ug*wGi;wRHiM3%0A9=(DMQV9_|HhKA$OL2?*Lh{-n#A#$ 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

46$0?1LaE&_7%g;?KYOR?%teT!|+U- z;_t};LSux)b64<%Cj|!G46lA+hKmHg#;JK*Z7GJ&IYJ|&{$Y*9`7rtpfjclDUb_ej z*ZpfE4n%HUrwK5iT^f1EaN?g(>V7av=*~wF2L2~l41BJ314h~Q87&Za&<{1I0=PYo zV7=)3HJEAj#XbT!Yhp!jo1lo*8LiAfz{miYASwmS7h3~;$LRE+`>ZO79NOO$!qLB= RqD}$KW(R&+j2FTf{||W#yUhRq literal 0 HcmV?d00001 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-facts.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-facts.txt new file mode 100644 index 000000000..98d683051 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-facts.txt @@ -0,0 +1,3 @@ +[GATE_BOOT_FACTS:boot=1:host_ms=1788835539179-1788835545315:qemu_at_start=0:load_at_start=6.47:qemu_at_end=1:load_at_end=6.44:qemu_cpu_s=10.65:guest_uptime_ms=5314:ended_by=scored_pass] +[CAPTURE_DRAIN:capture=n/a:seq=n/a:edge=n/a:cpu=n/a:records=n/a:drain_ms=0] +[CAPTURE_DRAIN_EVENTS:last_events=n/a] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-revision.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-revision.txt new file mode 100644 index 000000000..132e37cc4 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-revision.txt @@ -0,0 +1,6 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +command=bash docker/qemu/run-aarch64-prod-profile-boot-test.sh +exit=0 +outstanding_samples=1 values=[0] +pin_guard_oracle_lines=0 +first_hold_lines=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-serial.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-serial.txt new file mode 100644 index 000000000..53b8e5f7e --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/production-serial.txt @@ -0,0 +1,416 @@ +EOS +======================================== + Breenix ARM64 Kernel Starting + BUILD_ID: 006a9f76ca03f0 +======================================== + +[boot] DIAG_MARKER_XHCI_A +[boot] DIAG_MARKER_XHCI_B +[boot] DIAG_MARKER_XHCI_C +[boot] loader xhci_hcrst_raw=0x0 ecam=0x0 +[boot] Current exception level: EL1 +[boot] MMU already enabled (high-half kernel) +[boot] Initializing memory management (0x44000000-0x50000000)... +[boot] Memory management ready +[boot] Initializing Generic Timer... +[boot] Timer frequency: 1000000000 Hz (1000 MHz) +[boot] Initializing PL031 RTC... +[boot] Current timestamp: 8048000 +[boot] Initializing GIC... +[gic] GICR probe 0x080a0000: WAKER=0x00000006 <<< VALID +[gic] GICR base mismatch: loader=0x00000000, using=0x080a0000 +[gic] GICD_CTLR wrote 0x53, readback=0x53 +[gic] GICR_IGROUPR0: wrote 0xFFFFFFFF, readback=0xffffffff +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[boot] GIC initialized (version 3) +[boot] Enabling UART interrupts... +[boot] Enabling GIC IRQ 33 (UART0)... +[uart] IMSC: 0x0 -> 0x50 (verify: 0x50) +[uart] FR=0x90 (RXFE=1), RIS=0x20 +[gic] IRQ 33 state (GICv3): + enabled=true, group1=true, pending=false + priority=0xa0, GICD_CTLR=0x53 + ICC_PMR=0xf0 +[boot] UART interrupts enabled +[boot] Enabling interrupts... +[boot] Interrupts enabled: true +[boot] QEMU PCI ECAM configured at 0x4010000000 +[boot] Initializing device drivers... +[drivers] Initializing driver subsystem... +[drivers] Hybrid mode: VirtIO MMIO + PCI AHCI +[drivers] Found VirtIO MMIO device: network (ID=1, version=1) +[drivers] Found VirtIO MMIO device: block (ID=2, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: GPU (ID=16, version=1) +[drivers] Found 5 VirtIO MMIO devices +[virtio-blk] Searching for block devices... +[virtio-blk] Found block device 0 at 0xa003800 +[virtio-blk] Device 0 version: 1 +[virtio-blk] Device 0 capacity: 190464 sectors (93 MB) +[virtio-blk] Device 0 queue max size: 1024 +[virtio-blk] Device 0 using v1 (legacy) queue setup at PFN 0x4088b +[virtio-blk] Block MMIO IRQ 76 enabled for device 0 +[virtio-blk] Block device 0 initialized successfully +[virtio-blk] Initialized 1 block device(s) +[drivers] VirtIO block driver initialized +[virtio-net] Searching for network device... +[virtio-net] Found network device at 0xa003600 (slot 27) +[virtio-net] Device version: 1 +[virtio-net] MAC address: 52:54:00:12:34:56 +[virtio-net] RX queue max size: 1024 +[virtio-net] TX queue max size: 1024 +[virtio-net] Network device initialized successfully +[virtio-net] Network device IRQ 75 (will enable after net init) +[drivers] VirtIO network driver initialized +[virtio-net] Device test - MAC: 52:54:00:12:34:56 +[virtio-net] Test passed! +[virtio-gpu] Searching for GPU device... +[virtio-gpu] Found GPU device at 0xa003e00 +[virtio-gpu] Device version: 1 +[virtio-gpu] Control queue max size: 1024 +[virtio-gpu] Display: 1280x800 +[virtio-gpu] GPU device initialized successfully +[drivers] VirtIO GPU driver initialized +[virtio-gpu] Device test - Display: 1280x800 +[virtio-gpu] Test passed! +[virtio-sound] Searching for sound device... +[drivers] VirtIO sound driver init failed: No VirtIO Sound device found +[drivers] Driver subsystem initialized (MMIO) +[drivers] PCI ECAM at 0x4010000000, enumerating PCI bus... +[drivers] Found 1 PCI devices +[pci] 00:00.0 [1b36:0008] class=06/00 +[drivers] AHCI PCI init failed: No AHCI controller found +[drivers] Driver subsystem initialized (hybrid MMIO+PCI) +[boot] Found 6 devices +[drivers] Running post-init self-tests... +[virtio-blk] Testing read of sector 0... +[virtio-blk] Sector 0 data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +[virtio-blk] Read test passed! +[boot] Initializing network stack... +[net] Initializing network stack... +[net] MAC address: 52:54:00:12:34:56 +NET: IP address: 10.0.2.15 +NET: Gateway: 10.0.2.2 +Network stack initialized +NET: Sending ARP request for gateway 10.0.2.2 +ARP request sent successfully +NET: Gateway ARP not resolved during init; will resolve via IRQ path +NET: Sending ICMP echo request to gateway 10.0.2.2 +NET: ARP cache miss for 10.0.2.2, sending ARP request +NET: Failed to send ping: ArpMiss: reply will populate cache via IRQ +NET: Network initialization complete +[virtio-net] Enabling IRQ 75 for network device +NET: pre-primed NetRx softirq for bootstrap callback re-enable +[boot] Initializing filesystem... +[ext2] Using VirtIO block device (190464 sectors) +[boot] ext2 root filesystem mounted +[boot] No home filesystem: No home block device available (expected at device index 3 or 1) (continuing) +[boot] devfs initialized at /dev +[boot] devptsfs initialized at /dev/pts +[boot] CPU detected: Unknown Unknown +[boot] procfs initialized at /proc +[boot] TTY subsystem initialized +[boot] Initializing graphics... +[virtio-gpu] GPU device already initialized +[arm64-fb] Shell framebuffer initialized: 1280x800 +[graphics] Framebuffer: 1280x800 +[graphics] Particle system initialized +[render_queue] Initialized (64KB buffer) +[graphics] Split-screen terminal UI initialized +[boot] Initializing VirtIO keyboard... +[virtio-input] Searching for input devices (ID=18)... +[virtio-input] Slot 27 at 0xa003600: device_id=1 +[virtio-input] Slot 28 at 0xa003800: device_id=2 +[virtio-input] Slot 29 at 0xa003a00: device_id=18 +[virtio-input] Found tablet at 0xa003a00 (slot 29, supports EV_ABS) +[virtio-input] Tablet device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 77 for tablet +[virtio-input] Tablet initialized (16 buffers) +[virtio-input] Slot 30 at 0xa003c00: device_id=18 +[virtio-input] Found keyboard at 0xa003c00 (slot 30, no EV_ABS) +[virtio-input] Keyboard device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 78 for keyboard +[virtio-input] Keyboard initialized (64 buffers) +[virtio-input] Slot 31 at 0xa003e00: device_id=16 +[boot] VirtIO keyboard initialized +[boot] Initializing per-CPU data... +[boot] Per-CPU data initialized +[boot] Initializing process manager... +[boot] Process manager initialized +[boot] Initializing scheduler... +[boot] Scheduler initialized +[boot] Workqueue subsystem initialized +[boot] Softirq subsystem initialized +[boot] Render thread spawned (tid=4) +[boot] Tracing subsystem initialized and enabled +[boot] Pre-loading /sbin/init from ext2 (before timer)... +[net] ICMP echo reply received from 10.0.2.2 seq=1 +[boot] Init binary pre-loaded: 298664 bytes +[xhci] post-activation: MSI_EVENT_COUNT=0 EVENT_COUNT=0 POLL_COUNT=0 SPI_ACTIVATED=false +[boot] Initializing timer interrupt... +[timer] Timer configured for ~1000 Hz (1000000 ticks per interrupt) +[timer] Using virtual timer (PPI 27) +[boot] Timer interrupt initialized +[smp] CPU 0 MPIDR=0x80000000, stack_base=0x43000000 +[smp] Probing secondary CPUs via PSCI... +[s1mp] C@PU 1: PSC1I CPU_ON Asuccess (raw_Bstatus=C0) +D[smp] CPEU 22e@1: PSFCI CPABU_ON succCDGess (EeFG1raw_status=20) +[smp]3@1ABC CPU 3: PSCI CPU_DEeFGON success (ra3w_status=0) +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[smp] CPU 4 attempt 1/4: HVC64 failed (ret=-2), trying HVC32... +[gic] EOImode=1 (split EOI/DIR) - nonT-VMware1 path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[smp] PSCI CPU_ON failed for CPU 4 after 1 attempts: ret=-2 (MPIDR=0x4 entry=0x400802b8) +[smp] CPU 4: PSCI CPU_ON failed (ret=-2), stopping probe +[smp] 4 CPUs online +[PT_ROOT_CUSTODY:no_proof=0:no_arch=0:terminated=0:undecided=0:mid_retire=0:retired=0] +[TOMBSTONE_CENSUS:resident=0:removed=0:reap_second=0:retire_second=0:abandoned_unqueued=0] +T2[TTBR0_ASID_CENSUS:untagged=0:tagged=0:kernel=0:cleared=0] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] + +======================================== + Breenix ARM64 Boot Complete! +======================================== + +Hello from ARM64! + +[boot] Launching init from pre-loaded ELF... +manager.create_process_with_argv [ARM64]: ENTRY - name='init', elf_size=298664, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f5d0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 1 +[INIT_DESIGNATION:aarch64:designated_pid=1:reserved_collisions=0] +[boot] Reset 4 idle thread contexts (CPUs online: 4) +T3T4T5EL0_SYSCALL: First syscall from userspace (SPSR confirms EL0) +[ OK ] syscall path verified +T6[init] Breenix init starting (PID 1) +[spawn] path='/bin/heartbeat' +T7T8T9T0manager.create_process_with_argv [ARM64]: ENTRY - name='heartbeat', elf_size=303616, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 2 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f85c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 2 +[spawn] Created child PID 2 for parent PID 1 +[spawn] Success: child PID 2 scheduled +[init] heartbeat started (PID 2) +[INIT_GROUP_REFUSAL:aarch64:phase=early:probe1=-22:probe2=-22:expected=-22] +[spawn] path='/bin/block_eintr_oracle' +[heartbeat] tid=9 uptime_ms=299 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='block_eintr_oracle', elf_size=304752, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 3 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f938 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 3 +[spawn] Created child PID 3 for parent PID 1 +[spawn] Success: child PID 3 scheduled +F123456789SC[syscall] exit(0) pid=4 name=block_eintr_oracle_child_4 +[TTBR0_ASID_CENSUS:untagged=0:tagged=2233:kernel=2447:cleared=4651] +[heartbeat] tid=9 uptime_ms=1305 kbd_nonzero=0 +F123456789SC[syscall] exit(0) pid=5 name=block_eintr_oracle_child_5 +[TTBR0_ASID_CENSUS:untagged=0:tagged=6478:kernel=7064:cleared=13464] +[heartbeat] tid=9 uptime_ms=2308 kbd_nonzero=0 +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[syscall] exit(0) pid=3 name=block_eintr_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=10212:kernel=11091:cleared=21183] +[init] block_eintr_oracle exited pid=3 code=0 +[spawn] path='/bin/futex_handoff_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='futex_handoff_oracle', elf_size=291984, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 6 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000ef08 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 6 +[spawn] Created child PID 6 for parent PID 1 +[spawn] Success: child PID 6 scheduled +[FUTEX_HANDOFF_ORACLE_DRIVER:seam_absent:probe=-110] +[syscall] exit(0) pid=6 name=futex_handoff_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=11086:kernel=12039:cleared=22997] +[init] futex_handoff_oracle exited pid=6 code=0 +[spawn] path='/bin/poll_tcp_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='poll_tcp_oracle', elf_size=307952, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 7 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001050c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 7 +[spawn] Created child PID 7 for parent PID 1 +[spawn] Success: child PID 7 scheduled +[POLL_TCP_TIMEOUT] fd=4 timeout_ms=120 publish=none_in_window rx_len=0 revents=0x0000 +F123456789SC[syscall] exit(0) pid=8 name=poll_tcp_oracle_child_8 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12179:kernel=13211:cleared=25240] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=123:late_ms=86:park_ms=84:attempts=1] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=123:late_ms=86:park_ms=84:attempts=1] +[syscall] exit(0) pid=7 name=poll_tcp_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=12200:kernel=13235:cleared=25280] +[init] poll_tcp_oracle exited pid=7 code=0 +[spawn] path='/bin/tty_oracle' +[heartbeat] tid=9 uptime_ms=3311 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='tty_oracle', elf_size=338264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 9 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40012b34 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 9 +[spawn] Created child PID 9 for parent PID 1 +[spawn] Success: child PID 9 scheduled +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=3 (pty 0) +[pty] Unlocked PTY 0 (fd 3) +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/0:locked_open_refused=1] +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/0:locked_open_refused=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=9:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=9:crossed_ends=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 1) +[pty] Unlocked PTY 1 (fd 4) +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 1) +[pty] Unlocked PTY 1 (fd 4) +F123456789SC[EXEC_LOCK_ORDER:FIRST_COMMIT] +[syscall] exit(0) pid=10 name=/bin/tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14680:kernel=15907:cleared=30389] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[syscall] exit(0) pid=9 name=tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14703:kernel=15920:cleared=30417] +[init] tty_oracle exited pid=9 code=0 +[spawn] path='/bin/exec_smoke' +manager.create_process_with_argv [ARM64]: ENTRY - name='exec_smoke', elf_size=290928, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 11 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000eb40 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 11 +[spawn] Created child PID 11 for parent PID 1 +[spawn] Success: child PID 11 scheduled +[EXEC_SMOKE:LAUNCH] +[EXEC_SMOKE:TARGET_ENTER argc=2] +[heartbeat] tid=9 uptime_ms=4312 kbd_nonzero=0 +[EXEC_SMOKE:TARGET_OK] +[syscall] exit(0) pid=11 name=/bin/exec_smoke_target +[TTBR0_ASID_CENSUS:untagged=0:tagged=16411:kernel=17810:cleared=33988] +[EXEC_SMOKE:LAUNCHER_EXIT code=0] +[spawn] path='/usr/local/test/bin/clonevm_exec_test' +manager.create_process_with_argv [ARM64]: ENTRY - name='clonevm_exec_test', elf_size=289672, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 12 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f63c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 12 +[spawn] Created child PID 12 for parent PID 1 +[spawn] Success: child PID 12 scheduled +CLONEVM_EXEC_TEST: start +CLONEVM_EXEC_TEST: child live +CLONEVM_EXEC_TEST: live sibling refused exec +[syscall] exit(0) pid=13 name=thread-13 +[TTBR0_ASID_CENSUS:untagged=0:tagged=19283:kernel=20281:cleared=38895] +CLONEVM_EXEC_TEST: child exited +CLONEVM_EXEC_TEST: second stage +[syscall] exit(0) pid=14 name=thread-14 +[TTBR0_ASID_CENSUS:untagged=0:tagged=20260:kernel=21327:cleared=40881] +CLONEVM_EXEC_TEST: post-exec rendezvous complete +CLONEVM_EXEC_TEST: post-exec futex keys derived +CLONEVM_EXEC_TEST: PASS +[syscall] exit(0) pid=12 name=/usr/local/test/bin/clonevm_exec_test +[TTBR0_ASID_CENSUS:untagged=0:tagged=20267:kernel=21331:cleared=40891] +[init] clonevm_exec_test exited pid=12 code=0 +[spawn] path='/bin/bsshd' +[heartbeat] tid=9 uptime_ms=5314 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='bsshd', elf_size=455240, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 15 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001d6c0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 15 +[spawn] Created child PID 15 for parent PID 1 +[spawn] Success: child PID 15 scheduled +[init] bsshd started (PID 15) +[spawn] path='/bin/xhci_counters' + +[CTX596_ELR_DIVERGENCE] tid=8 cpu=0 prev_elr=0xffff00004041bcc8 x30=0xffff000040463f40 ctx_elr=0xffff000040463f40 + +[INLINE_SAVE_OVERWRITE] tid=8 sp=0xffff000054241c60 old_sp=0xffff000054241c60 saved_sp=0xffff000054241c60 delta=0x0 saved_lr=0xffff000040472ed0 saved_slot20=0xffff000040472ed0 slot20=0xffff000040472ed0 elr=0xffff000040463f40 x30=0xffff000040463f40 +bsshd: starting on port 2222 +bsshd: listening on 0.0.0.0:2222 +manager.create_process_with_argv [ARM64]: ENTRY - name='xhci_counters', elf_size=292264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 16 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f140 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 16 +[spawn] Created child PID 16 for parent PID 1 +[spawn] Success: child PID 16 scheduled +[spawn] path='/bin/bwm' +[xhci-counters] XHCI_MSI_EVENT_TOTAL=0 +[xhci-counters] XHCI_IRQ_ENTRY_TOTAL=0 +[xhci-counters] XHCI_LOCK_CONTENDED_TOTAL=0 +[xhci-counters] KBD_NONZERO_TOTAL=0 +[syscall] exit(0) pid=16 name=xhci_counters +[TTBR0_ASID_CENSUS:untagged=0:tagged=23297:kernel=24631:cleared=47182] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service-revision.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service-revision.txt new file mode 100644 index 000000000..b80120c78 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service-revision.txt @@ -0,0 +1,5 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +command=bash docker/qemu/run-aarch64-service-sequence-gate.sh --boots 2 +profiles=max,cortex-a72 +exit=0 +source=/tmp/breenix_aarch64_service_sequence_gate_20260908T023623Z-83722 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/census.tsv b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/census.tsv new file mode 100644 index 000000000..64c08d386 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/census.tsv @@ -0,0 +1,3 @@ +boot bucket end seconds ctx596_divergence reason serial ret_dispatch_refusals resume_pc_refusals percpu_stack_aliens cpu_identity_splits ret_stage_refusals lr_nontext +1 GREEN early 25 0 all service-sequence and P5b markers observed (qemu_status=0) /tmp/breenix_aarch64_service_sequence_gate_20260908T023623Z-83722/cortex-a72/serial-1.txt 0 0 0 0 0 8 +2 GREEN early 24 2 all service-sequence and P5b markers observed (qemu_status=0) /tmp/breenix_aarch64_service_sequence_gate_20260908T023623Z-83722/cortex-a72/serial-2.txt 0 0 0 0 0 8 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-1.qmp.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-1.qmp.txt new file mode 100644 index 000000000..f1067d3d2 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-1.qmp.txt @@ -0,0 +1 @@ +[QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-1.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-1.txt new file mode 100644 index 000000000..6cf9c3c5b --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-1.txt @@ -0,0 +1,1079 @@ +EOS +======================================== + Breenix ARM64 Kernel Starting + BUILD_ID: 006a9f737534c7 +======================================== + +[CTX596_ORACLE:ARMED:force_eret=0] +[boot] DIAG_MARKER_XHCI_A +[boot] DIAG_MARKER_XHCI_B +[boot] DIAG_MARKER_XHCI_C +[boot] loader xhci_hcrst_raw=0x0 ecam=0x0 +[boot] Current exception level: EL1 +[boot] MMU already enabled (high-half kernel) +[boot] Initializing memory management (0x44000000-0x50000000)... +[boot] Memory management ready +[boot] Initializing Generic Timer... +[boot] Timer frequency: 62500000 Hz (62 MHz) +[boot] Initializing PL031 RTC... +[boot] Current timestamp: 470500 +[boot] Initializing GIC... +[gic] GICR probe 0x080a0000: WAKER=0x00000006 <<< VALID +[gic] GICR base mismatch: loader=0x00000000, using=0x080a0000 +[gic] GICD_CTLR wrote 0x53, readback=0x53 +[gic] GICR_IGROUPR0: wrote 0xFFFFFFFF, readback=0xffffffff +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[boot] GIC initialized (version 3) +[boot] Enabling UART interrupts... +[boot] Enabling GIC IRQ 33 (UART0)... +[uart] IMSC: 0x0 -> 0x50 (verify: 0x50) +[uart] FR=0x90 (RXFE=1), RIS=0x20 +[gic] IRQ 33 state (GICv3): + enabled=true, group1=true, pending=false + priority=0xa0, GICD_CTLR=0x53 + ICC_PMR=0xf0 +[boot] UART interrupts enabled +[boot] Enabling interrupts... +[boot] Interrupts enabled: true +[boot] QEMU PCI ECAM configured at 0x4010000000 +[boot] Initializing device drivers... +[drivers] Initializing driver subsystem... +[drivers] Hybrid mode: VirtIO MMIO + PCI AHCI +[drivers] Found VirtIO MMIO device: network (ID=1, version=1) +[drivers] Found VirtIO MMIO device: block (ID=2, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: GPU (ID=16, version=1) +[drivers] Found 5 VirtIO MMIO devices +[virtio-blk] Searching for block devices... +[virtio-blk] Found block device 0 at 0xa003800 +[virtio-blk] Device 0 version: 1 +[virtio-blk] Device 0 capacity: 190464 sectors (93 MB) +[virtio-blk] Device 0 queue max size: 1024 +[virtio-blk] Device 0 using v1 (legacy) queue setup at PFN 0x40a60 +[virtio-blk] Block MMIO IRQ 76 enabled for device 0 +[virtio-blk] Block device 0 initialized successfully +[virtio-blk] Initialized 1 block device(s) +[drivers] VirtIO block driver initialized +[virtio-net] Searching for network device... +[virtio-net] Found network device at 0xa003600 (slot 27) +[virtio-net] Device version: 1 +[virtio-net] MAC address: 52:54:00:12:34:56 +[virtio-net] RX queue max size: 1024 +[virtio-net] TX queue max size: 1024 +[virtio-net] Network device initialized successfully +[virtio-net] Network device IRQ 75 (will enable after net init) +[drivers] VirtIO network driver initialized +[virtio-net] Device test - MAC: 52:54:00:12:34:56 +[virtio-net] Test passed! +[virtio-gpu] Searching for GPU device... +[virtio-gpu] Found GPU device at 0xa003e00 +[virtio-gpu] Device version: 1 +[virtio-gpu] Control queue max size: 1024 +[virtio-gpu] Display: 1280x800 +[virtio-gpu] GPU device initialized successfully +[drivers] VirtIO GPU driver initialized +[virtio-gpu] Device test - Display: 1280x800 +[virtio-gpu] Test passed! +[virtio-sound] Searching for sound device... +[drivers] VirtIO sound driver init failed: No VirtIO Sound device found +[drivers] Driver subsystem initialized (MMIO) +[drivers] PCI ECAM at 0x4010000000, enumerating PCI bus... +[drivers] Found 1 PCI devices +[pci] 00:00.0 [1b36:0008] class=06/00 +[drivers] AHCI PCI init failed: No AHCI controller found +[drivers] Driver subsystem initialized (hybrid MMIO+PCI) +[boot] Found 6 devices +[drivers] Running post-init self-tests... +[virtio-blk] Testing read of sector 0... +[virtio-blk] Sector 0 data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +[virtio-blk] Read test passed! +[boot] Initializing network stack... +[net] Initializing network stack... +[net] MAC address: 52:54:00:12:34:56 +NET: IP address: 10.0.2.15 +NET: Gateway: 10.0.2.2 +Network stack initialized +NET: Sending ARP request for gateway 10.0.2.2 +ARP request sent successfully +NET: Gateway ARP not resolved during init; will resolve via IRQ path +NET: Sending ICMP echo request to gateway 10.0.2.2 +NET: ARP cache miss for 10.0.2.2, sending ARP request +NET: Failed to send ping: ArpMiss: reply will populate cache via IRQ +NET: Network initialization complete +[virtio-net] Enabling IRQ 75 for network device +NET: pre-primed NetRx softirq for bootstrap callback re-enable +[boot] Initializing filesystem... +[ext2] Using VirtIO block device (190464 sectors) +[boot] ext2 root filesystem mounted +[boot] No home filesystem: No home block device available (expected at device index 3 or 1) (continuing) +[boot] devfs initialized at /dev +[boot] devptsfs initialized at /dev/pts +[boot] CPU detected: ARM Cortex-A72 +[boot] procfs initialized at /proc +[boot] TTY subsystem initialized +[boot] Initializing graphics... +[virtio-gpu] GPU device already initialized +[arm64-fb] Shell framebuffer initialized: 1280x800 +[graphics] Framebuffer: 1280x800 +[graphics] Particle system initialized +[render_queue] Initialized (64KB buffer) +[graphics] Split-screen terminal UI initialized +[boot] Initializing VirtIO keyboard... +[virtio-input] Searching for input devices (ID=18)... +[virtio-input] Slot 27 at 0xa003600: device_id=1 +[virtio-input] Slot 28 at 0xa003800: device_id=2 +[virtio-input] Slot 29 at 0xa003a00: device_id=18 +[virtio-input] Found tablet at 0xa003a00 (slot 29, supports EV_ABS) +[virtio-input] Tablet device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 77 for tablet +[virtio-input] Tablet initialized (16 buffers) +[virtio-input] Slot 30 at 0xa003c00: device_id=18 +[virtio-input] Found keyboard at 0xa003c00 (slot 30, no EV_ABS) +[virtio-input] Keyboard device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 78 for keyboard +[virtio-input] Keyboard initialized (64 buffers) +[virtio-input] Slot 31 at 0xa003e00: device_id=16 +[boot] VirtIO keyboard initialized +[boot] Initializing per-CPU data... +[boot] Per-CPU data initialized +[boot] Initializing process manager... +[boot] Process manager initialized +[boot] Initializing scheduler... +[boot] Scheduler initialized +[boot] Workqueue subsystem initialized +[boot] Softirq subsystem initialized +[boot] Render thread spawned (tid=4) +[boot] Tracing subsystem initialized and enabled +[boot] Pre-loading /sbin/init from ext2 (before timer)... +[net] ICMP echo reply received from 10.0.2.2 seq=1 +[boot] Init binary pre-loaded: 298664 bytes +[xhci] post-activation: MSI_EVENT_COUNT=0 EVENT_COUNT=0 POLL_COUNT=0 SPI_ACTIVATED=false +[boot] Initializing timer interrupt... +[timer] Timer configured for ~1000 Hz (62500 ticks per interrupt) +[timer] Using virtual timer (PPI 27) +[boot] Timer interrupt initialized +[smp] CPU 0 MPIDR=0x80000000, stack_base=0x43000000 +[smp] Probing secondary CPUs via PSCI... +[smp] C1PU 1: PSCI CPU_ON su@c1cess (raw_status=A0) +B[C2@1ADsmpBC] CDEEPU e2eF: PSFGCGI CPU_O1N success (raw_sta2tus=0) +[smp] CPU 3: PSCI C3@1ABCPU_ON suDccess (raw_EeFstatus=G30) +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[smp] CPU 4 attempt 1/4: HVC64 failed (ret=-2), trying HVC32... +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +T[gic1] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[smp] PSCI CPU_ON failed for CPU 4 after 1 attempts: ret=-2 (MPIDR=0x4 entry=0x400802b8) +[smp] CPU 4: PSCI CPU_ON failed (ret=-2), stopping probe +[smp] initialization_watchdog gap_ms=299 local_ceiling_ms=15000 margin_ms=3000 effective_ceiling_ms=20000 +[smp] 4 CPUs online +[boot] Running parallel boot tests... +T2[BOOT_TESTS:START] +[STAGE:serial:ADVANCE] +[BOOT_TESTS:TOTAL:118] +[BOOT_TESTS:SERIAL_BOOT:3] +[BOOT_TESTS:EARLY_BOOT:91] +[BOOT_TESTS:STAGED:27 tests waiting for later stages] +T3T4T5T6[SUBSYSTEM:process:serial:START] +[TEST:process:frame_custody_refusal_gate:START] +T7T8T9[TEST:process:frame_custody_refusal_gate:PASS] +T0[TEST:process:page_table_custody_disposition_gate:START] +[EXEC_FAILED_RELEASE_ORACLE:aarch64:used_before=1:used_after=1:leaf_recorded=1:leaf_released=1:leaf_returned=1:tables_returned=4:roots_retired=1:live_refused=0] +[TEST:process:page_table_custody_disposition_gate:PASS] +[TEST:process:block_current_departure_gate:START] +[TEST:process:block_current_departure_gate:PASS] +[SUBSYSTEM:process:serial:COMPLETE:3/3] +[STAGE:serial:COMPLETE:3/118] +[STAGE:early:ADVANCE] +[SUBSYSTEM:memory:early:START] +[TEST:memory:framework_sanity:START] +[SUBSYSTEM:scheduler:early:START] +[TEST:scheduler:wakes_are_placed_on_online_cpus:START] +[TEST:memory:framework_sanity:PASS] +[TEST:scheduler:wakes_are_placed_on_online_cpus:PASS] +[SUBSYSTEM:filesystem:early:START] +[TEST:filesystem:vfs_init:START] +[TEST:filesystem:vfs_init:PASS] +[TEST:memory:heap_alloc_basic:START] +[TEST:memory:heap_alloc_basic:PASS] +[SUBSYSTEM:network:early:START] +[TEST:network:network_stack_init:START] +[TEST:network:network_stack_init:PASS] +[TEST:filesystem:devfs_mounted:START] +[TEST:filesystem:devfs_mounted:PASS] +[TEST:network:virtio_net_probe:START] +[SUBSYSTEM:interrupts:early:START] +[TEST:interrupts:interrupt_controller_init:START] +[TEST:network:virtio_net_probe:PASS] +[TEST:interrupts:interrupt_controller_init:PASS] +[SUBSYSTEM:process:early:START] +[TEST:process:deferred_fault_ring_overflow_injection:START] +[SUBSYSTEM:syscall:early:START] +[TEST:syscall:syscall_dispatch:START] +[SUBSYSTEM:ipc:early:START] +[TEST:ipc:pipe_buffer_basic:START] +[TEST:syscall:syscall_dispatch:PASS] +[TEST:process:deferred_fault_ring_overflow_injection:PASS] +[TEST:ipc:pipe_buffer_basic:PASS] +[SUBSYSTEM:logging:early:START] +[TEST:logging:logging_init:START] +[TEST:logging:logging_init:PASS] +[SUBSYSTEM:timer:early:START] +[SUBSYSTEM:system:early:START] +[TEST:system:boot_sequence:START] +[TEST:timer:timer_init:START] +[TEST:system:boot_sequence:PASS] +[TEST:timer:timer_init:PASS] +[TEST:network:socket_creation:START] +[TEST:network:socket_creation:PASS] +[TEST:filesystem:file_open_close:START] +[TEST:filesystem:file_open_close:PASS] +[TEST:interrupts:irq_enable_disable:START] +[TEST:interrupts:irq_enable_disable:PASS] +[TEST:syscall:arm64_pty_ioctl_path:START] +manager.create_process [ARM64]: ENTRY - name='pty_ioctl_test', elf_size=276816 +manager.create_process [ARM64]: Generated PID 2 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x4000e0b0 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x40017000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4401e000-0x4402e000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4401e000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 2 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 2 +[TEST:syscall:arm64_pty_ioctl_path:PASS] +[TEST:memory:frame_allocator:START] +[TEST:memory:frame_allocator:PASS] +[TEST:ipc:pipe_eof:START] +[TEST:ipc:pipe_eof:PASS] +[TEST:syscall:arm64_socket_reset_quantum:START] +[TEST:syscall:arm64_socket_reset_quantum:PASS] +[TEST:memory:heap_large_alloc:START] +[SUBSYSTEM:syscall:early:COMPLETE:3/3] +[TEST:timer:timer_ticks:START] +[TEST:timer:timer_ticks:PASS] +[TEST:memory:heap_large_alloc:PASS] +[TEST:interrupts:timer_interrupt_running:START] +[TEST:interrupts:timer_interrupt_running:PASS] +[TEST:system:system_stability:START] +[TEST:system:system_stability:PASS] +[TEST:interrupts:keyboard_irq_setup:START] +[TEST:interrupts:keyboard_irq_setup:PASS] +[TEST:filesystem:directory_list:START] +[TEST:filesystem:directory_list:PASS] +[TEST:network:tcp_socket_creation:START] +[TEST:network:tcp_socket_creation:PASS] +[TEST:memory:heap_many_small:START] +[TEST:memory:heap_many_small:PASS] +[TEST:filesystem:filesystem_syscalls_aarch64:START] +[TEST:scheduler:executor_exists:START] +[TEST:scheduler:executor_exists:PASS] +[TEST:logging:log_levels:START] +[TEST:logging:log_levels:PASS] +[TEST:ipc:pipe_broken:START] +[TEST:ipc:pipe_broken:PASS] +[TEST:system:kernel_heap:START] +[TEST:system:kernel_heap:PASS] +[SCHED_STRAND_ORACLE:aarch64:samples=10:checked=129:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=0:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=360:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=0:reap_second=0:retire_second=0:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=0:kernel=22:cleared=22] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TEST:filesystem:filesystem_syscalls_aarch64:PASS] +[TEST:memory:cow_flags_aarch64:START] +[TEST:memory:cow_flags_aarch64:PASS] +[TEST:filesystem:virtio_blk_multi_read:START] +[virtio-blk] Starting multi-read stress test (10 reads)... +[virtio-blk] Read 1 of 10 complete +[virtio-blk] Read 2 of 10 complete +[virtio-blk] Read 3 of 10 complete +[virtio-blk] Read 4 of 10 complete +[virtio-blk] Read 5 of 10 complete +[virtio-blk] Read 6 of 10 complete +[TEST:system:tty_foreground_pgrp:START] +[TEST:system:tty_foreground_pgrp:PASS] +[virtio-blk] Read 7 of 10 complete +[virtio-blk] Read 8 of 10 complete +[virtio-blk] Read 9 of 10 complete +[virtio-blk] Read 10 of 10 complete +[virtio-blk] Multi-read stress test passed! +[TEST:filesystem:virtio_blk_multi_read:PASS] +[TEST:ipc:pipe_wake_mechanism:START] +[TEST:ipc:pipe_wake_mechanism:PASS] +[TEST:logging:serial_output:START] +[LOGGING_TEST] Serial test ARM64 +[TEST:logging:serial_output:PASS] +[TEST:ipc:fd_table_creation:START] +[TEST:ipc:fd_table_creation:PASS] +[SUBSYSTEM:logging:early:COMPLETE:3/3] +[TEST:timer:timer_delay:START] +[TEST:timer:timer_delay:PASS] +[TEST:scheduler:async_waker:START] +[TEST:scheduler:async_waker:PASS] +[TEST:timer:timer_monotonic:START] +[TEST:timer:timer_monotonic:PASS] +[TEST:scheduler:future_basics:START] +[TEST:scheduler:future_basics:PASS] +[TEST:interrupts:exception_vectors:START] +[TEST:interrupts:exception_vectors:PASS] +[SUBSYSTEM:scheduler:early:COMPLETE:4/4] +[TEST:ipc:fd_alloc_close:START] +[TEST:ipc:fd_alloc_close:PASS] +[TEST:process:process_manager_init:START] +[TEST:process:process_manager_init:PASS] +[TEST:network:loopback:START] +[TEST:network:loopback:PASS] +[TEST:filesystem:virtio_blk_sequential_read:START] +[virtio-blk] Testing sequential read of sectors 0-31... +[virtio-blk] Read sectors 0-7 OK (avail_idx wrap count: 0) +[virtio-blk] Read sectors 0-15 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-23 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-31 OK (avail_idx wrap count: 2) +[virtio-blk] Sequential read test passed! (32 sectors, 2 queue wraps) +[TEST:filesystem:virtio_blk_sequential_read:PASS] +[TEST:process:scheduler_init:START] +[TEST:process:scheduler_init:PASS] +[TEST:filesystem:virtio_blk_write_read_verify:START] +[virtio-blk] Testing write-read-verify cycle... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Reading original data from sector 1000... +[virtio-blk] Original first 16 bytes: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00] +[virtio-blk] Test pattern first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Writing test pattern to sector 1000... +[virtio-blk] Write succeeded +[virtio-blk] Reading back sector 1000... +[virtio-blk] Readback first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Restoring original data to sector 1000... +[virtio-blk] Write-read-verify test passed! All 512 bytes match. +[TEST:filesystem:virtio_blk_write_read_verify:PASS] +[SUBSYSTEM:system:early:COMPLETE:4/4] +[TEST:filesystem:virtio_blk_invalid_sector:START] +[virtio-blk] Testing invalid sector read... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Invalid sector correctly rejected: Sector out of range +[virtio-blk] Invalid sector test passed! +[TEST:filesystem:virtio_blk_invalid_sector:PASS] +[TEST:interrupts:exception_handlers:START] +[TEST:interrupts:exception_handlers:PASS] +[TEST:network:loopback_wake_loss_counters_are_zero:START] +[TEST:network:loopback_wake_loss_counters_are_zero:PASS] +[TEST:ipc:create_pipe:START] +[TEST:ipc:create_pipe:PASS] +[TEST:network:loopback_recv_wake_when_idle:START] +[TEST:interrupts:breakpoint:START] +[exception] Breakpoint (BRK #0) at 0xffff0000405480f8 +[TEST:interrupts:breakpoint:PASS] +[TEST:filesystem:virtio_blk_uninitialized_read:START] +[virtio-blk] Testing uninitialized device handling... +[virtio-blk] Device is initialized (expected during normal boot) +[virtio-blk] Verified: read_sector checks BLOCK_DEVICE.is_none() and returns error +[virtio-blk] Uninitialized test passed (device was already initialized)! +[TEST:filesystem:virtio_blk_uninitialized_read:PASS] +[TEST:memory:guard_page_exists:START] +[TEST:memory:guard_page_exists:PASS] +[SUBSYSTEM:filesystem:early:COMPLETE:10/10] +[TEST:timer:timer_quantum_reset_aarch64:START] +[TEST:timer:timer_quantum_reset_aarch64:PASS] +[TEST:memory:stack_layout:START] +[TEST:memory:stack_layout:PASS] +[TEST:timer:ring_span_report:START] +[TEST:memory:stack_allocation:START] +[TEST:memory:stack_allocation:PASS] +[TEST:process:thread_creation:START] +[TEST:process:thread_creation:PASS] +[TEST:ipc:pty_support_aarch64:START] +[TEST:ipc:pty_support_aarch64:PASS] +[TEST:interrupts:softirq_aarch64:START] +[TEST:interrupts:softirq_aarch64:PASS] +[SUBSYSTEM:ipc:early:COMPLETE:8/8] +[TEST:memory:user_stack_base:START] +[TEST:memory:user_stack_base:PASS] +[TEST:process:signal_delivery_infrastructure:START] +[TEST:process:signal_delivery_infrastructure:PASS] +[TEST:memory:user_stack_size:START] +[TEST:memory:user_stack_size:PASS] +[SUBSYSTEM:interrupts:early:COMPLETE:8/8] +[TEST:memory:user_stack_top:START] +[TEST:memory:user_stack_top:PASS] +[TEST:process:arm64_signal_frame_conversion:START] +[TEST:process:arm64_signal_frame_conversion:PASS] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=when_idle:budget_ms=200:elapsed_tick_ms=133:elapsed_ctr_ms=205:ctx_delta=84:extensions=0:reader_state=terminated:queued_cpu=none:queued_idx=none:idle_cpus=0x4:cpu_silence_ms=929:silence_cpu=0:woke_ms=799:verdict=ok] +[TEST:network:loopback_recv_wake_when_idle:PASS] +[TEST:memory:user_stack_guard:START] +[TEST:memory:user_stack_guard:PASS] +[SUBSYSTEM:process:early:COMPLETE:6/6] +[TEST:network:loopback_recv_wake_under_load:START] +[TEST:memory:user_stack_alignment:START] +[TEST:memory:user_stack_alignment:PASS] +[TEST:memory:kernel_stack_base:START] +[TEST:memory:kernel_stack_base:PASS] +[TEST:memory:kernel_stack_size:START] +[TEST:memory:kernel_stack_size:PASS] +[TEST:memory:kernel_stack_top:START] +[TEST:memory:kernel_stack_top:PASS] +[TEST:memory:kernel_stack_guard:START] +[TEST:memory:kernel_stack_guard:PASS] +[TEST:memory:kernel_stack_alignment:START] +[TEST:memory:kernel_stack_alignment:PASS] +[TEST:memory:stack_in_range:START] +[TEST:memory:stack_in_range:PASS] +[TEST:memory:stack_grows_down:START] +[TEST:memory:stack_grows_down:PASS] +[TEST:memory:stack_depth:START] +[TEST:memory:stack_depth:PASS] +[TEST:memory:stack_frame_size:START] +[TEST:memory:stack_frame_size:PASS] +[RING_SPAN:cpu=0:span_ms=1495:writes=547:dropped=0:ticks_total=3996:tick_events=62] +[TEST:timer:ring_span_report:PASS] +[TEST:memory:stack_red_zone:START] +[TEST:memory:stack_red_zone:PASS] +[SUBSYSTEM:memory:early:COMPLETE:24/24] +[SUBSYSTEM:timer:early:COMPLETE:6/6] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=under_load:budget_ms=200:elapsed_tick_ms=127:elapsed_ctr_ms=200:ctx_delta=356:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x0:cpu_silence_ms=1087:silence_cpu=0:woke_ms=961:verdict=ok] +[TEST:network:loopback_recv_wake_under_load:PASS] +[TEST:network:loopback_pump_does_not_busy_spin:START] +[TEST:network:loopback_pump_does_not_busy_spin:PASS] +[TEST:network:tcp_final_ack_survives_accept_publish_race:START] +[TEST:network:tcp_final_ack_survives_accept_publish_race:PASS] +[TEST:network:arm64_net_softirq_registration:START] +[TEST:network:arm64_net_softirq_registration:PASS] +[TEST:network:net_lock_guard_masks_interrupt_source:START] +[TEST:network:net_lock_guard_masks_interrupt_source:PASS] +[SUBSYSTEM:network:early:COMPLETE:12/12] +[STAGE:early:COMPLETE:91/118] +[STAGE:sched:ADVANCE] +[SUBSYSTEM:scheduler:sched:START] +[SUBSYSTEM:filesystem:sched:START] +[TEST:scheduler:kthread_spawn_verify:START] +[TEST:filesystem:block_wedge_oracle:START] +[SUBSYSTEM:process:sched:START] +[TEST:process:fork_exit_defer_reclaim_pairing_test:START] +[TEST:scheduler:kthread_spawn_verify:PASS] +[BLOCK_WEDGE_ORACLE:locked=1:wedged=1:refused=1:parked=0:refuse_ms=0] +[TEST:filesystem:block_wedge_oracle:PASS] +[TEST:scheduler:workqueue_operational:START] +[TEST:scheduler:workqueue_operational:PASS] +[SUBSYSTEM:filesystem:sched:COMPLETE:1/1] +[SUBSYSTEM:scheduler:sched:COMPLETE:2/2] +[PT_RETIRE_ORACLE:aarch64:cycles=64:used_before=53:used_after=53:expected_tables=9:roots=64:returned=640:lost=0:kstack_returns=64] +[PT_LEAF_ORACLE:aarch64:cycles=64:expected=192:recorded=192:released=192:returned=192:live_refused=0:used_before=53:used_after=53] +[TEST:process:fork_exit_defer_reclaim_pairing_test:PASS] +[TEST:process:exec_detach_oracle:START] +manager.create_process [ARM64]: ENTRY - name='exec_detach_leader', elf_size=180 +manager.create_process [ARM64]: Generated PID 69 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4404c000-0x4405c000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4404c000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 69 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 69 +[EXEC_DETACH_ORACLE:aarch64:bodies=2:fail_preserved=2:sibling_refused=2:success_detached=2:fresh_root=2:tgid_self=2:custody_balance=0:leaf_residual=16:stack_residual=18:kstack_frames_released=0:old_group_reached_pre=2:old_group_missed_post=2:self_group_reached_post=2] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:clone_admission_oracle:START] +[CLONE_ADMISSION_ORACLE:aarch64:admitted=1:refused=2:creating_refused=1:published_admitted=2:balance=0] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:init_designation_oracle:START] +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a1', elf_size=8, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a2', elf_size=120, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +[INIT_DESIGNATION_ORACLE:aarch64:construct_failed=2:construct_undecided=0:construct_residual=0:construct_roots_retired=2:construct_leaf_balance=0:construct_commit_balance=0:refused=4:accepted=1:published=1:retired=1:held_error_removals=1:reparented=1:reparent_skipped=1:ordinary_allocated=5:reserved_collisions=0:designation_balance=0] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_group_refusal_oracle:START] +[INIT_GROUP_REFUSAL_ORACLE:aarch64:none_probes=3:none_refusals=0:init_refused=1:alias_refused=1:alias_pid_refused=0:nonit_probes=2:nonit_refusals=0:rows_delta=0:refusal_counter_delta=0:designation_residual=0:balance=0] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:kernel_stack_ownership_oracle:START] +[CREATION_LOCK_ORDER:INJECTED:PM_HELD] +[KSTACK_OWNER_ORACLE:aarch64:creation_rows=1000:creation_owned=1000:one_owner=1000:two_owner=0:zero_owner=0:fork_rows=1:fork_owned=1:slot_returns_exact_one=1:slot_alloc_delta=1000:slot_free_delta=1000:slot_balance=0:cohort_enrolled=1000:cohort_returned=1000:cohort_double_return=0:foreign_alloc_delta=0:foreign_returned=0:frames_mapped_delta=0:frames_released_delta=0:frame_balance=0:frame_used_delta=0:frame_used_bounded=1:live_checks=1106:live_refusals_production=0:live_refusals_injected=1:drop_refused_live=0:pte_overwrite_refusals=0:pub_pooled=1073:pub_sched_owned=1073:pub_row_residual=0:pub_unowned=0:classifier_sched_owned=1:classifier_row_residual=1:classifier_unowned=1:classifier_not_pooled=1:sched_publications=28:sched_pm_held_production=0:sched_pm_held_injected=1:reconciliation_diff=0:reconciliation_skew_bound=6:balance=0] +[TEST:process:kernel_stack_ownership_oracle:PASS] +[TEST:process:creating_dispatch_refusal:START] +manager.create_process [ARM64]: ENTRY - name='creating_dispatch_probe', elf_size=180 +manager.create_process [ARM64]: Generated PID 86 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x44059000-0x44069000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x44059000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 86 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 86 +[CREATING_DISPATCH_ORACLE_DIAG:aarch64:refusal_delta=10:leaf_residual=16:user_stack_residual=16:balance=0:settle_rounds=3:root=0x44042000:root_release_done=1:probe_hw_clear=1:probe_shadow_clear=1:probe_cached_clear=1:retire_hw_blocked=0:retire_shadow_blocked=0:retire_cached_blocked=0] +[CREATING_DISPATCH_ORACLE:aarch64:injected=1:refused_via_dispatch=1:requeue_retried=1:dispatched_after_publish=1:balance=0:leaf_residual=16:user_stack_residual=16] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:tombstone_join_oracle:START] +[TOMBSTONE_JOIN_ORACLE:aarch64:retire_second=1:reap_second=1:removed=2:resident_delta=0:tombstone_rows=0:PASS] +[TEST:process:tombstone_join_oracle:PASS] +[TEST:process:retirement_fence_gate:START] +[TEST:process:retirement_fence_gate:PASS] +[TEST:process:reclaim_progress_gate:START] +[TEST:process:reclaim_progress_gate:PASS] +[TEST:process:exit_kick_protocol_gate:START] +[exit_kick_gate] budget_anchor=test_phase anchor_age_at_gate_entry_ms=2200 budget_ms=60000 gate_ceiling_ms=45000 +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542cb9f0:cpu=1] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542cb9f0:cpu=1] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542cb9f0:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542cb9f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542cb9f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542cb9f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542cb9f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542cb9f0:cpu=3] +[TEST:process:exit_kick_protocol_gate:PASS] +[TEST:process:exit_kick_worker_window_isolation:START] +[exit_kick_worker_isolation] budget_anchor=test_phase anchor_age_at_entry_ms=2232 budget_ms=60000 scenario_ceiling_ms=1500 +[exit_kick_worker_isolation] scenario=before_union_worker_1 start=1 +[exit_kick_gate] wait=before_union_worker_1 breadcrumb=1 elapsed_ms=1000 progress_work=43 progress_exit=0 re_kick_sgis=57 +[exit_kick_gate] wait=before_union_worker_1 cause=absolute_ceiling elapsed_ms=1502 window_budget_ms=1500 re_kick_sgis=87 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=63 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=31 worker_3_progress_start=0 worker_3_progress_final=31 last_advance_ms_ago=25 late_true=0 +[exit_kick_worker_isolation] scenario=before_union_worker_1 elapsed_ms=1503 cause=absolute_ceiling target=none progress=[1, 31, 31] completed=6 joined=3 +[exit_kick_worker_isolation] scenario=after_worker_1 start=1 +[STRAND_INJECT_ORACLE:aarch64:legA_exercised=1:legA_recovered=1:legB_exercised=1:legB_recovered=1:stranded=0] +[exit_kick_gate] wait=after_worker_1 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=0 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=2 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_1 elapsed_ms=801 cause=no_progress target=worker_1 progress=[1, 17, 17] completed=6 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 1 made no progress +[exit_kick_worker_isolation] scenario=after_worker_2 start=1 +[exit_kick_gate] wait=after_worker_2 cause=no_progress elapsed_ms=802 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=0 worker_2_progress_final=1 worker_3_progress_start=2 worker_3_progress_final=17 last_advance_ms_ago=802 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_2 elapsed_ms=803 cause=no_progress target=worker_2 progress=[17, 1, 17] completed=5 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 2 made no progress +[exit_kick_worker_isolation] scenario=after_worker_3 start=1 +[SCHED_STRAND_ORACLE:aarch64:samples=107:checked=624:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=3628:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=2886:cleared=2889] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[exit_kick_gate] wait=after_worker_3 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=0 worker_3_progress_final=1 last_advance_ms_ago=798 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_3 elapsed_ms=802 cause=no_progress target=worker_3 progress=[17, 17, 1] completed=3 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 3 made no progress +[exit_kick_worker_isolation] scenario=after_healthy start=1 +[exit_kick_worker_isolation] scenario=after_healthy elapsed_ms=2 cause=success target=none progress=[2, 2, 2] completed=7 joined=3 +[exit_kick_worker_isolation] healthy_baseline=PASS +[exit_kick_worker_isolation] fixture_elapsed_ms=4031 +[TEST:process:exit_kick_worker_window_isolation:PASS] +[TEST:process:exit_kick_budget_anchor_isolation:START] +[exit_kick_budget_anchor] pre_test_delay_ms=1211 fixture_budget_ms=1000 fixture_gate_ceiling_ms=600 +[exit_kick_budget_anchor] scenario=inherited_kernel_entry_anchor anchor=inherited cause=phase_one_ceiling target=none elapsed_ms=0 budget_age_at_entry_ms=1212 +[exit_kick_budget_anchor] scenario=test_phase_entry_anchor anchor=test_phase cause=no_progress target=worker_1 elapsed_ms=408 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] scenario=gate_window_exhaustion anchor=test_phase cause=gate_ceiling target=none elapsed_ms=605 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] fixture_elapsed_ms=2232 +[TEST:process:exit_kick_budget_anchor_isolation:PASS] +[TEST:process:census_widen_oracle:START] +[CENSUS_WIDEN_ORACLE:aarch64:arm_target=0:baseline_reported=0:armed_reported=1:tid=1215:shape=ready_queued_nondispatching:queued_nondispatching=1:queued_nondispatch_ms=5612:cpu_silence_ms=5612:joined=1:retired=1:PASS] +[TEST:process:census_widen_oracle:PASS] +[SUBSYSTEM:process:sched:COMPLETE:14/14] +[STAGE:sched:COMPLETE:108/118] +[boot] All boot tests passed! +[PT_ROOT_CUSTODY:no_proof=2:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=79] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=4371:cleared=4374] +[PIN_GUARD_ORACLE:aarch64:home=1:here=0:reclaim=1:requeue=1:previous=1:on_home=3:refused=3:census_clean=1:verdict=PASS] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TIMER_WAKE_LATENCY_ORACLE:aarch64:sleep_ms=10:peers=8:overrun_ms=11:bound_ms=100:quantum_ms=10:round_ms=80:wake_enqueues=1:peers_started=8:peers_spinning=8:backstops=0:setup_ms=5:window_ms=50:measured=1:PASS] + +======================================== + Breenix ARM64 Boot Complete! +======================================== + +Hello from ARM64! + +[boot] Launching init from pre-loaded ELF... +manager.create_process_with_argv [ARM64]: ENTRY - name='init', elf_size=298664, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f5d0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 1 +[INIT_DESIGNATION:aarch64:designated_pid=1:reserved_collisions=0] +[STAGE:proc:ADVANCE] +[SUBSYSTEM:ipc:proc:START] +[TEST:ipc:telnetd_dependencies_aarch64:START] +[SUBSYSTEM:process:proc:START] +[TEST:process:current_thread_exists:START] +[TEST:ipc:telnetd_dependencies_aarch64:PASS] +[TEST:process:current_thread_exists:PASS] +[SUBSYSTEM:syscall:proc:START] +[TEST:syscall:fcntl_pm_contention_oracle:START] +[SUBSYSTEM:ipc:proc:COMPLETE:1/1] +[TEST:process:process_list_populated:START] +[TEST:process:process_list_populated:PASS] +[TEST:process:frame_custody_healthy_counters:START] +[TEST:process:frame_custody_healthy_counters:PASS] +[SUBSYSTEM:process:proc:COMPLETE:3/3] +[FCNTL_PM_CONTENTION_ORACLE:aarch64:arm_wait_us=90:armed=1:acquired=1:holder_cpu=1:pm_busy_probe=1:calls=64:eagain=0:first_errno=9:first_wait_us=8091:hold_safety=0:hold_done=1:joined=1:PASS] +[TEST:syscall:fcntl_pm_contention_oracle:PASS] +[TEST:syscall:irq_hold_oracle:START] +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +[IRQ_HOLD_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12014:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:irq_hold_oracle:PASS] +[TEST:syscall:tty_irq_pm_oracle:START] +[TTY_IRQ_PM_ORACLE:aarch64:fg_unset_before=1:pm_blocking_acquires=0:deferred=2:pgrp_set_by_entry=0:processed=2:buffered=2:irqs_enabled_before=1:holder_cpu=1:pm_busy_probe=1:hold_us=20000:entry_us=0:joined=1:adopted=1:adopted_pgrp=821:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_pm_oracle:PASS] +[TEST:syscall:tty_irq_fg_oracle:START] + +[TTY_IRQ_FG_ORACLE:aarch64:fg_known=822:target_absent=1:fg_lock_touches=0:fg_blocking_acquires=0:snapshot_reads=3:processed=2:buffered=1:irqs_enabled_before=1:holder_cpu=2:fg_busy_probe=1:hold_us=20000:entry_us=120:joined=1:sig_calls=1:sig_pid=822:sig_num=2:snapshot_agrees=1:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_fg_oracle:PASS] +[TEST:syscall:udp_socket_lock_oracle:START] +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +[UDP_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12012:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_socket_lock_oracle:PASS] +[TEST:syscall:udp_ports_lock_oracle:START] +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +[UDP_PORTS_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:driver_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=20:hold_us=12012:refused=8:delivered=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_ports_lock_oracle:PASS] +[SUBSYSTEM:syscall:proc:COMPLETE:6/6] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[boot] Reset 4 idle thread contexts (CPUs online: 4) +EL0_SYSCALL: First syscall from userspace (SPSR confirms EL0) +[ OK ] syscall path verified +[STAGE:user:ADVANCE] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[USER_RSP_SCRATCH_EL_CENSUS:el0_installs=1:el1_skipped=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[init] Breenix init starting (PID 1) +[spawn] path='/bin/heartbeat' +manager.create_process_with_argv [ARM64]: ENTRY - name='heartbeat', elf_size=303616, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 90 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f85c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 90 +[spawn] Created child PID 90 for parent PID 1 +[spawn] Success: child PID 90 scheduled +[init] heartbeat started (PID 90) +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=1:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=2:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=early:probe1=-22:probe2=-22:expected=-22] +[spawn] path='/bin/block_eintr_oracle' +[heartbeat] tid=1236 uptime_ms=9554 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='block_eintr_oracle', elf_size=304752, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 91 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f938 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 91 +[spawn] Created child PID 91 for parent PID 1 +[spawn] Success: child PID 91 scheduled +F123456789SC[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=403:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=35:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=1155:kstack=0:uva=34:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=1155:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=400:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=403:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=7:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el0:text=0:kstack=0:uva=34:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el1-restore-frame-elr:text=2009:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-restore-frame-elr:text=0:kstack=0:uva=26:smallint=0:other=0] +[syscall] exit(0) pid=92 name=block_eintr_oracle_child_92 +[TTBR0_ASID_CENSUS:untagged=0:tagged=2215:kernel=7091:cleared=9279] +[heartbeat] tid=1236 uptime_ms=10560 kbd_nonzero=0 +[SCHED_STRAND_ORACLE:aarch64:samples=206:checked=950:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5606:worst_cpu_scheduler_silence_ms=5674:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=4494:kernel=9649:cleared=14088] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +F123456789SC[heartbeat] tid=1236 uptime_ms=11563 kbd_nonzero=0 +[syscall] exit(0) pid=93 name=block_eintr_oracle_child_93 +[TTBR0_ASID_CENSUS:untagged=0:tagged=6468:kernel=11860:cleared=18250] +[heartbeat] tid=1236 uptime_ms=12564 kbd_nonzero=0 +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[syscall] exit(0) pid=91 name=block_eintr_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=10376:kernel=16270:cleared=26529] +[init] block_eintr_oracle exited pid=91 code=0 +[spawn] path='/bin/futex_handoff_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='futex_handoff_oracle', elf_size=291984, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 94 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000ef08 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 94 +[spawn] Created child PID 94 for parent PID 1 +[spawn] Success: child PID 94 scheduled +[FUTEX_HANDOFF_ORACLE:aarch64:driven=2:stage1_ret=EAGAIN:stage1_wake=0:stage1_parked=0:stage2_ret=0:stage2_wake=1:stage2_parked=0:stage3_ret=ETIMEDOUT:stage3_elapsed_ok=1:stage3_elapsed_ms=50:arm_delay_us=5:rescues=0:queue_residual=0:balance=0] +[FUTEX_HANDOFF_ORACLE_DRIVER:s1=-11:s2=0:s3=-110] +[syscall] exit(0) pid=94 name=futex_handoff_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=11279:kernel=17309:cleared=28461] +[init] futex_handoff_oracle exited pid=94 code=0 +[spawn] path='/bin/poll_tcp_oracle' +[heartbeat] tid=1236 uptime_ms=13569 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='poll_tcp_oracle', elf_size=307952, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 95 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001050c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 95 +[spawn] Created child PID 95 for parent PID 1 +[spawn] Success: child PID 95 scheduled +[POLL_TCP_TIMEOUT] fd=4 timeout_ms=120 publish=none_in_window rx_len=0 revents=0x0000 +F123456789SC[syscall] exit(0) pid=96 name=poll_tcp_oracle_child_96 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12468:kernel=18620:cleared=30926] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=125:late_ms=83:park_ms=80:attempts=1] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=125:late_ms=83:park_ms=80:attempts=1] +[syscall] exit(0) pid=95 name=poll_tcp_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=12487:kernel=18641:cleared=30960] +[init] poll_tcp_oracle exited pid=95 code=0 +[spawn] path='/bin/tty_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='tty_oracle', elf_size=338264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 97 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40012b34 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 97 +[spawn] Created child PID 97 for parent PID 1 +[spawn] Success: child PID 97 scheduled +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=3 (pty 2) +[pty] Unlocked PTY 2 (fd 3) +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +F123456789SC[heartbeat] tid=1236 uptime_ms=14573 kbd_nonzero=0 +[EXEC_LOCK_ORDER:FIRST_COMMIT] +[EXEC_LOCK_ORDER:commits=1:pm_held=0:unpinned=0:missing=0] +[syscall] exit(0) pid=98 name=/bin/tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=15073:kernel=21557:cleared=36423] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[syscall] exit(0) pid=97 name=tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=15080:kernel=21562:cleared=36435] +[init] tty_oracle exited pid=97 code=0 +[spawn] path='/bin/exec_smoke' +manager.create_process_with_argv [ARM64]: ENTRY - name='exec_smoke', elf_size=290928, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 99 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000eb40 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 99 +[spawn] Created child PID 99 for parent PID 1 +[spawn] Success: child PID 99 scheduled +[EXEC_SMOKE:LAUNCH] +[heartbeat] tid=1236 uptime_ms=15577 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=2:pm_held=0:unpinned=0:missing=0] +[EXEC_SMOKE:TARGET_ENTER argc=2] +[EXEC_SMOKE:TARGET_OK] +[syscall] exit(0) pid=99 name=/bin/exec_smoke_target +[TTBR0_ASID_CENSUS:untagged=0:tagged=16848:kernel=23578:cleared=40191] +[EXEC_SMOKE:LAUNCHER_EXIT code=0] +[spawn] path='/usr/local/test/bin/clonevm_exec_test' +manager.create_process_with_argv [ARM64]: ENTRY - name='clonevm_exec_test', elf_size=289672, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 100 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f63c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 100 +[spawn] Created child PID 100 for parent PID 1 +[spawn] Success: child PID 100 scheduled +[SCHED_STRAND_ORACLE:aarch64:samples=306:checked=1233:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5606:worst_cpu_scheduler_silence_ms=5674:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=9:reap_second=8:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=17696:kernel=24493:cleared=41946] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +CLONEVM_EXEC_TEST: start +CLONEVM_EXEC_TEST: child live +CLONEVM_EXEC_TEST: live sibling refused exec +[syscall] exit(0) pid=101 name=thread-101 +[TTBR0_ASID_CENSUS:untagged=0:tagged=19921:kernel=26177:cleared=45365] +CLONEVM_EXEC_TEST: child exited +[heartbeat] tid=1236 uptime_ms=16578 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=3:pm_held=0:unpinned=0:missing=0] +CLONEVM_EXEC_TEST: second stage +[syscall] exit(0) pid=102 name=thread-102 +[TTBR0_ASID_CENSUS:untagged=0:tagged=20933:kernel=27278:cleared=47430] +CLONEVM_EXEC_TEST: post-exec rendezvous complete +CLONEVM_EXEC_TEST: post-exec futex keys derived +CLONEVM_EXEC_TEST: PASS +[syscall] exit(0) pid=100 name=/usr/local/test/bin/clonevm_exec_test +[TTBR0_ASID_CENSUS:untagged=0:tagged=20936:kernel=27280:cleared=47436] +[init] clonevm_exec_test exited pid=100 code=0 +[spawn] path='/bin/bsshd' +manager.create_process_with_argv [ARM64]: ENTRY - name='bsshd', elf_size=455240, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 103 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001d6c0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 103 +[spawn] Created child PID 103 for parent PID 1 +[spawn] Success: child PID 103 scheduled +[init] bsshd started (PID 103) +[spawn] path='/bin/xhci_counters' +bsshd: starting on port 2222 +bsshd: listening on 0.0.0.0:2222 +[heartbeat] tid=1236 uptime_ms=17580 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='xhci_counters', elf_size=292264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 104 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f140 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 104 +[spawn] Created child PID 104 for parent PID 1 +[spawn] Success: child PID 104 scheduled +[spawn] path='/bin/bwm' +[xhci-counters] XHCI_MSI_EVENT_TOTAL=0 +[xhci-counters] XHCI_IRQ_ENTRY_TOTAL=0 +[xhci-counters] XHCI_LOCK_CONTENDED_TOTAL=0 +[xhci-counters] KBD_NONZERO_TOTAL=0 +[syscall] exit(0) pid=104 name=xhci_counters +[TTBR0_ASID_CENSUS:untagged=0:tagged=23964:kernel=30699:cleared=53828] +manager.create_process_with_argv [ARM64]: ENTRY - name='bwm', elf_size=428144, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 105 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40018bf8 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffee0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 105 +[spawn] Created child PID 105 for parent PID 1 +[spawn] Success: child PID 105 scheduled +[spawn] path='/sbin/telnetd' +[bwm] Breenix Window Manager starting... (v2-chromeless-skip) +[heartbeat] tid=1236 uptime_ms=18585 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='telnetd', elf_size=298232, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 106 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f930 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 106 +[spawn] Created child PID 106 for parent PID 1 +[spawn] Success: child PID 106 scheduled +[init] Boot script completed +[spawn] path='/bin/bounce' +TELNETD_STARTING +TELNETD_LISTENING +manager.create_process_with_argv [ARM64]: ENTRY - name='bounce', elf_size=388200, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 107 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x400188f4 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 107 +[spawn] Created child PID 107 for parent PID 1 +[spawn] Success: child PID 107 scheduled +Bounce spheres demo starting (for Gus!) [boot_id=0000000488971970] +[init] bounce started (PID 107) +[INIT_GROUP_WALK:aarch64:rows=12:init_tgid_rows=1:foreign_tgid_rows=0:refused=3:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=12:init_tgid_rows=1:foreign_tgid_rows=0:refused=4:verdict=PASS] +[window] create_window_buffer: 400x300 (480000 bytes, 118 pages) +[INIT_GROUP_REFUSAL:aarch64:phase=quiesce:probe1=-22:probe2=-22:expected=-22] +[init] Process 92 exited (code 0) +[init] Process 93 exited (code 0) +[init] Process 101 exited (code 0) +[window] Created buffer id=1 for pid=107: 400x300 at virt=0x7ffffdf86000 phys=0x442cb000 +[init] Process 102 exited (code 0) +[init] Process 104 exited (code 0) +[bounce] Window mode: id=1 400x300 [boot_id=0000000488971970] +[heartbeat] tid=1236 uptime_ms=19586 kbd_nonzero=0 +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=5379:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=273:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=3:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=15428:kstack=0:uva=140:smallint=136:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=15431:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=5516:kstack=0:uva=2:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=5376:kstack=0:uva=2:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=127:smallint=134:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el0:text=0:kstack=0:uva=138:smallint=135:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el1-restore-frame-elr:text=4624:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-restore-frame-elr:text=0:kstack=0:uva=301:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=ctx-x30:text=7082:kstack=1:uva=128:smallint=341:other=8] +[RESUME_PC_CENSUS:cpu=1:source=ctx-elr-el1:text=7259:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el1:text=4359:kstack=1:uva=0:smallint=168:other=8] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el1:text=4447:kstack=1:uva=0:smallint=168:other=8] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el0:text=0:kstack=0:uva=94:smallint=173:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el0:text=0:kstack=0:uva=128:smallint=173:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el1-restore-frame-elr:text=5219:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-restore-frame-elr:text=0:kstack=0:uva=304:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=7:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=ctx-x30:text=7853:kstack=0:uva=87:smallint=423:other=15] +[RESUME_PC_CENSUS:cpu=2:source=ctx-elr-el1:text=8074:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el1:text=4968:kstack=1:uva=0:smallint=206:other=15] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el1:text=4998:kstack=0:uva=0:smallint=206:other=15] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el0:text=0:kstack=0:uva=82:smallint=217:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el0:text=0:kstack=0:uva=87:smallint=217:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el1-restore-frame-elr:text=5390:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el0-restore-frame-elr:text=0:kstack=0:uva=383:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=ctx-x30:text=8146:kstack=4:uva=113:smallint=527:other=20] +[RESUME_PC_CENSUS:cpu=3:source=ctx-elr-el1:text=8427:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=lr-save-el1:text=5090:kstack=3:uva=0:smallint=257:other=20] +[RESUME_PC_CENSUS:cpu=3:source=lr-restore-el1:text=5110:kstack=4:uva=0:smallint=257:other=20] +[RESUME_PC_CENSUS:cpu=3:source=lr-save-el0:text=0:kstack=0:uva=94:smallint=269:other=0] +[RESUME_PC_CENSUS:cpu=3:source=lr-restore-el0:text=0:kstack=0:uva=113:smallint=270:other=0] +[bwm] ERROR: GPU compositing required +[syscall] exit(1) pid=105 name=bwm +[TTBR0_ASID_CENSUS:untagged=0:tagged=28441:kernel=35788:cleared=63344] +[init] Process 105 exited (code 1) +[heartbeat] tid=1236 uptime_ms=20588 kbd_nonzero=0 +[PT_ROOT_CUSTODY:no_proof=14:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=82] +[TOMBSTONE_CENSUS:resident=0:removed=16:reap_second=15:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=28454:kernel=35837:cleared=63402] +[net-rx-counters] sample=1 begin +[net-rx-counters] sample=1 NET_RX_MSI_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_RING_DRAIN_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_FRAME_TOTAL: 3 (cpu0=3) +[net-rx-counters] sample=1 NET_RX_ARP_TOTAL: 2 (cpu0=2) +[net-rx-counters] sample=1 NET_RX_ETHERTYPE_OTHER_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_SOFTIRQ_ENTRY_TOTAL: 36 (cpu0=2, cpu1=10, cpu2=12, cpu3=12) +[net-rx-counters] sample=1 NET_RX_SOFTIRQ_EXIT_TOTAL: 36 (cpu0=2, cpu1=10, cpu2=12, cpu3=12) +[net-rx-counters] sample=1 NET_RX_REENTRANT_SKIP_TOTAL: 1 (cpu1=1) +[net-rx-counters] sample=1 NET_RX_GUARD_RELEASE_TOTAL: 35 (cpu0=2, cpu1=9, cpu2=12, cpu3=12) +[net-rx-counters] sample=1 NET_RX_REARM_CHECK_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_REARM_RACE_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_REARM_ARMED_TOTAL: 0 +[net-rx-counters] sample=1 NET_PCI_IRQ_RAISED_NETRX: 0 +[net-rx-counters] sample=1 GIC_SPI55_ACK_TOTAL: 0 +[net-rx-counters] sample=1 end +[SCHED_STRAND_ORACLE:aarch64:samples=405:checked=1490:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5606:worst_cpu_scheduler_silence_ms=5674:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=16:reap_second=15:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=28454:kernel=35928:cleared=63493] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[heartbeat] tid=1236 uptime_ms=21604 kbd_nonzero=0 +[heartbeat] tid=1236 uptime_ms=22607 kbd_nonzero=0 +[heartbeat] tid=1236 uptime_ms=23609 kbd_nonzero=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-2.qmp.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-2.qmp.txt new file mode 100644 index 000000000..f1067d3d2 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-2.qmp.txt @@ -0,0 +1 @@ +[QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-2.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-2.txt new file mode 100644 index 000000000..36017d780 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/cortex-a72/serial-2.txt @@ -0,0 +1,1078 @@ +EOS +======================================== + Breenix ARM64 Kernel Starting + BUILD_ID: 006a9f737534c7 +======================================== + +[CTX596_ORACLE:ARMED:force_eret=0] +[boot] DIAG_MARKER_XHCI_A +[boot] DIAG_MARKER_XHCI_B +[boot] DIAG_MARKER_XHCI_C +[boot] loader xhci_hcrst_raw=0x0 ecam=0x0 +[boot] Current exception level: EL1 +[boot] MMU already enabled (high-half kernel) +[boot] Initializing memory management (0x44000000-0x50000000)... +[boot] Memory management ready +[boot] Initializing Generic Timer... +[boot] Timer frequency: 62500000 Hz (62 MHz) +[boot] Initializing PL031 RTC... +[boot] Current timestamp: 467625 +[boot] Initializing GIC... +[gic] GICR probe 0x080a0000: WAKER=0x00000006 <<< VALID +[gic] GICR base mismatch: loader=0x00000000, using=0x080a0000 +[gic] GICD_CTLR wrote 0x53, readback=0x53 +[gic] GICR_IGROUPR0: wrote 0xFFFFFFFF, readback=0xffffffff +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[boot] GIC initialized (version 3) +[boot] Enabling UART interrupts... +[boot] Enabling GIC IRQ 33 (UART0)... +[uart] IMSC: 0x0 -> 0x50 (verify: 0x50) +[uart] FR=0x90 (RXFE=1), RIS=0x20 +[gic] IRQ 33 state (GICv3): + enabled=true, group1=true, pending=false + priority=0xa0, GICD_CTLR=0x53 + ICC_PMR=0xf0 +[boot] UART interrupts enabled +[boot] Enabling interrupts... +[boot] Interrupts enabled: true +[boot] QEMU PCI ECAM configured at 0x4010000000 +[boot] Initializing device drivers... +[drivers] Initializing driver subsystem... +[drivers] Hybrid mode: VirtIO MMIO + PCI AHCI +[drivers] Found VirtIO MMIO device: network (ID=1, version=1) +[drivers] Found VirtIO MMIO device: block (ID=2, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: GPU (ID=16, version=1) +[drivers] Found 5 VirtIO MMIO devices +[virtio-blk] Searching for block devices... +[virtio-blk] Found block device 0 at 0xa003800 +[virtio-blk] Device 0 version: 1 +[virtio-blk] Device 0 capacity: 190464 sectors (93 MB) +[virtio-blk] Device 0 queue max size: 1024 +[virtio-blk] Device 0 using v1 (legacy) queue setup at PFN 0x40a60 +[virtio-blk] Block MMIO IRQ 76 enabled for device 0 +[virtio-blk] Block device 0 initialized successfully +[virtio-blk] Initialized 1 block device(s) +[drivers] VirtIO block driver initialized +[virtio-net] Searching for network device... +[virtio-net] Found network device at 0xa003600 (slot 27) +[virtio-net] Device version: 1 +[virtio-net] MAC address: 52:54:00:12:34:56 +[virtio-net] RX queue max size: 1024 +[virtio-net] TX queue max size: 1024 +[virtio-net] Network device initialized successfully +[virtio-net] Network device IRQ 75 (will enable after net init) +[drivers] VirtIO network driver initialized +[virtio-net] Device test - MAC: 52:54:00:12:34:56 +[virtio-net] Test passed! +[virtio-gpu] Searching for GPU device... +[virtio-gpu] Found GPU device at 0xa003e00 +[virtio-gpu] Device version: 1 +[virtio-gpu] Control queue max size: 1024 +[virtio-gpu] Display: 1280x800 +[virtio-gpu] GPU device initialized successfully +[drivers] VirtIO GPU driver initialized +[virtio-gpu] Device test - Display: 1280x800 +[virtio-gpu] Test passed! +[virtio-sound] Searching for sound device... +[drivers] VirtIO sound driver init failed: No VirtIO Sound device found +[drivers] Driver subsystem initialized (MMIO) +[drivers] PCI ECAM at 0x4010000000, enumerating PCI bus... +[drivers] Found 1 PCI devices +[pci] 00:00.0 [1b36:0008] class=06/00 +[drivers] AHCI PCI init failed: No AHCI controller found +[drivers] Driver subsystem initialized (hybrid MMIO+PCI) +[boot] Found 6 devices +[drivers] Running post-init self-tests... +[virtio-blk] Testing read of sector 0... +[virtio-blk] Sector 0 data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +[virtio-blk] Read test passed! +[boot] Initializing network stack... +[net] Initializing network stack... +[net] MAC address: 52:54:00:12:34:56 +NET: IP address: 10.0.2.15 +NET: Gateway: 10.0.2.2 +Network stack initialized +NET: Sending ARP request for gateway 10.0.2.2 +ARP request sent successfully +NET: Gateway ARP not resolved during init; will resolve via IRQ path +NET: Sending ICMP echo request to gateway 10.0.2.2 +NET: ARP cache miss for 10.0.2.2, sending ARP request +NET: Failed to send ping: ArpMiss: reply will populate cache via IRQ +NET: Network initialization complete +[virtio-net] Enabling IRQ 75 for network device +NET: pre-primed NetRx softirq for bootstrap callback re-enable +[boot] Initializing filesystem... +[ext2] Using VirtIO block device (190464 sectors) +[boot] ext2 root filesystem mounted +[boot] No home filesystem: No home block device available (expected at device index 3 or 1) (continuing) +[boot] devfs initialized at /dev +[boot] devptsfs initialized at /dev/pts +[boot] CPU detected: ARM Cortex-A72 +[boot] procfs initialized at /proc +[boot] TTY subsystem initialized +[boot] Initializing graphics... +[virtio-gpu] GPU device already initialized +[arm64-fb] Shell framebuffer initialized: 1280x800 +[graphics] Framebuffer: 1280x800 +[graphics] Particle system initialized +[render_queue] Initialized (64KB buffer) +[graphics] Split-screen terminal UI initialized +[boot] Initializing VirtIO keyboard... +[virtio-input] Searching for input devices (ID=18)... +[virtio-input] Slot 27 at 0xa003600: device_id=1 +[virtio-input] Slot 28 at 0xa003800: device_id=2 +[virtio-input] Slot 29 at 0xa003a00: device_id=18 +[virtio-input] Found tablet at 0xa003a00 (slot 29, supports EV_ABS) +[virtio-input] Tablet device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 77 for tablet +[virtio-input] Tablet initialized (16 buffers) +[virtio-input] Slot 30 at 0xa003c00: device_id=18 +[virtio-input] Found keyboard at 0xa003c00 (slot 30, no EV_ABS) +[virtio-input] Keyboard device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 78 for keyboard +[virtio-input] Keyboard initialized (64 buffers) +[virtio-input] Slot 31 at 0xa003e00: device_id=16 +[boot] VirtIO keyboard initialized +[boot] Initializing per-CPU data... +[boot] Per-CPU data initialized +[boot] Initializing process manager... +[boot] Process manager initialized +[boot] Initializing scheduler... +[boot] Scheduler initialized +[boot] Workqueue subsystem initialized +[boot] Softirq subsystem initialized +[boot] Render thread spawned (tid=4) +[boot] Tracing subsystem initialized and enabled +[boot] Pre-loading /sbin/init from ext2 (before timer)... +[net] ICMP echo reply received from 10.0.2.2 seq=1 +[boot] Init binary pre-loaded: 298664 bytes +[xhci] post-activation: MSI_EVENT_COUNT=0 EVENT_COUNT=0 POLL_COUNT=0 SPI_ACTIVATED=false +[boot] Initializing timer interrupt... +[timer] Timer configured for ~1000 Hz (62500 ticks per interrupt) +[timer] Using virtual timer (PPI 27) +[boot] Timer interrupt initialized +[smp] CPU 0 MPIDR=0x80000000, stack_base=0x43000000 +[smp] Probing secondary CPUs via PSCI... +1[sm@p] CPU 11:A PSCI CPU_ONB success (raw_status=C0) +D[smpEe]2 CPFU 2:G PS1CI CPU_ON success (raw_st@1Aatus=0) +3@1A[smBCp] CPBCDEeFGDU 33: PSCI CPU_ON EeFGsu2ccess (raw_status=0) +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[smp] CPU 4 attempt 1/4: HVC64 failed (ret=-2), trying HVC32... +T1[smp] PSCI CPU_ON failed for CPU 4 after 1 attempts: ret=-2 (MPIDR=0x4 entry=0x400802b8) +[smp] CPU 4: PSCI CPU_ON failed (ret=-2), stopping probe +[smp] initialization_watchdog gap_ms=299 local_ceiling_ms=15000 margin_ms=3000 effective_ceiling_ms=20000 +[smp] 4 CPUs online +[boot] Running parallel boot tests... +T2T3[BOOT_TESTS:START] +[STAGE:serial:ADVANCE] +[BOOT_TESTS:TOTAL:118] +[BOOT_TESTS:SERIAL_BOOT:3] +[BOOT_TESTS:EARLY_BOOT:91] +[BOOT_TESTS:STAGED:27 tests waiting for later stages] +T4T5T6T7T8T9[SUBSYSTEM:process:serial:START] +[TEST:process:frame_custody_refusal_gate:START] +T0[TEST:process:frame_custody_refusal_gate:PASS] +[TEST:process:page_table_custody_disposition_gate:START] +[EXEC_FAILED_RELEASE_ORACLE:aarch64:used_before=1:used_after=1:leaf_recorded=1:leaf_released=1:leaf_returned=1:tables_returned=4:roots_retired=1:live_refused=0] +[TEST:process:page_table_custody_disposition_gate:PASS] +[TEST:process:block_current_departure_gate:START] +[TEST:process:block_current_departure_gate:PASS] +[SUBSYSTEM:process:serial:COMPLETE:3/3] +[STAGE:serial:COMPLETE:3/118] +[STAGE:early:ADVANCE] +[SUBSYSTEM:memory:early:START] +[TEST:memory:framework_sanity:START] +[SUBSYSTEM:scheduler:early:START] +[TEST:scheduler:wakes_are_placed_on_online_cpus:START] +[TEST:memory:framework_sanity:PASS] +[TEST:scheduler:wakes_are_placed_on_online_cpus:PASS] +[SUBSYSTEM:interrupts:early:START] +[TEST:interrupts:interrupt_controller_init:START] +[TEST:interrupts:interrupt_controller_init:PASS] +[TEST:memory:heap_alloc_basic:START] +[TEST:memory:heap_alloc_basic:PASS] +[TEST:interrupts:irq_enable_disable:START] +[TEST:interrupts:irq_enable_disable:PASS] +[SUBSYSTEM:network:early:START] +[TEST:network:network_stack_init:START] +[TEST:network:network_stack_init:PASS] +[SUBSYSTEM:filesystem:early:START] +[SUBSYSTEM:syscall:early:START] +[TEST:syscall:syscall_dispatch:START] +[SUBSYSTEM:ipc:early:START] +[TEST:filesystem:vfs_init:START] +[TEST:ipc:pipe_buffer_basic:START] +[TEST:syscall:syscall_dispatch:PASS] +[TEST:filesystem:vfs_init:PASS] +[TEST:ipc:pipe_buffer_basic:PASS] +[SUBSYSTEM:process:early:START] +[SUBSYSTEM:timer:early:START] +[TEST:process:deferred_fault_ring_overflow_injection:START] +[SUBSYSTEM:system:early:START] +[TEST:timer:timer_init:START] +[TEST:system:boot_sequence:START] +[TEST:timer:timer_init:PASS] +[TEST:system:boot_sequence:PASS] +[TEST:process:deferred_fault_ring_overflow_injection:PASS] +[SUBSYSTEM:logging:early:START] +[TEST:logging:logging_init:START] +[TEST:logging:logging_init:PASS] +[TEST:scheduler:executor_exists:START] +[TEST:scheduler:executor_exists:PASS] +[TEST:logging:log_levels:START] +[TEST:logging:log_levels:PASS] +[TEST:ipc:pipe_eof:START] +[TEST:ipc:pipe_eof:PASS] +[TEST:system:system_stability:START] +[TEST:system:system_stability:PASS] +[TEST:process:process_manager_init:START] +[TEST:process:process_manager_init:PASS] +[TEST:ipc:pipe_broken:START] +[TEST:ipc:pipe_broken:PASS] +[TEST:system:kernel_heap:START] +[TEST:system:kernel_heap:PASS] +[TEST:process:scheduler_init:START] +[TEST:process:scheduler_init:PASS] +[TEST:ipc:pipe_wake_mechanism:START] +[TEST:ipc:pipe_wake_mechanism:PASS] +[TEST:syscall:arm64_pty_ioctl_path:START] +manager.create_process [ARM64]: ENTRY - name='pty_ioctl_test', elf_size=276816 +manager.create_process [ARM64]: Generated PID 2 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x4000e0b0 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x40017000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4401e000-0x4402e000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4401e000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 2 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 2 +[TEST:syscall:arm64_pty_ioctl_path:PASS] +[TEST:filesystem:devfs_mounted:START] +[TEST:filesystem:devfs_mounted:PASS] +[TEST:system:tty_foreground_pgrp:START] +[TEST:system:tty_foreground_pgrp:PASS] +[TEST:timer:timer_ticks:START] +[TEST:timer:timer_ticks:PASS] +[TEST:filesystem:file_open_close:START] +[TEST:filesystem:file_open_close:PASS] +[TEST:scheduler:async_waker:START] +[TEST:scheduler:async_waker:PASS] +[TEST:interrupts:timer_interrupt_running:START] +[TEST:interrupts:timer_interrupt_running:PASS] +[TEST:scheduler:future_basics:START] +[TEST:scheduler:future_basics:PASS] +[TEST:interrupts:keyboard_irq_setup:START] +[TEST:interrupts:keyboard_irq_setup:PASS] +[TEST:process:thread_creation:START] +[TEST:interrupts:exception_vectors:START] +[TEST:interrupts:exception_vectors:PASS] +[TEST:syscall:arm64_socket_reset_quantum:START] +[TEST:syscall:arm64_socket_reset_quantum:PASS] +[TEST:ipc:fd_table_creation:START] +[TEST:ipc:fd_table_creation:PASS] +[SCHED_STRAND_ORACLE:aarch64:samples=10:checked=137:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=0:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=360:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=0:reap_second=0:retire_second=0:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=0:kernel=21:cleared=21] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[SUBSYSTEM:syscall:early:COMPLETE:3/3] +[TEST:ipc:fd_alloc_close:START] +[TEST:ipc:fd_alloc_close:PASS] +[TEST:process:thread_creation:PASS] +[SUBSYSTEM:system:early:COMPLETE:4/4] +[TEST:filesystem:directory_list:START] +[TEST:filesystem:directory_list:PASS] +[SUBSYSTEM:scheduler:early:COMPLETE:4/4] +[TEST:interrupts:exception_handlers:START] +[TEST:interrupts:exception_handlers:PASS] +[TEST:timer:timer_delay:START] +[TEST:timer:timer_delay:PASS] +[TEST:memory:frame_allocator:START] +[TEST:memory:frame_allocator:PASS] +[TEST:timer:timer_monotonic:START] +[TEST:timer:timer_monotonic:PASS] +[TEST:interrupts:breakpoint:START] +[exception] Breakpoint (BRK #0) at 0xffff0000405480f8 +[TEST:interrupts:breakpoint:PASS] +[TEST:filesystem:filesystem_syscalls_aarch64:START] +[TEST:timer:timer_quantum_reset_aarch64:START] +[TEST:timer:timer_quantum_reset_aarch64:PASS] +[TEST:process:signal_delivery_infrastructure:START] +[TEST:process:signal_delivery_infrastructure:PASS] +[TEST:ipc:create_pipe:START] +[TEST:ipc:create_pipe:PASS] +[TEST:process:arm64_signal_frame_conversion:START] +[TEST:process:arm64_signal_frame_conversion:PASS] +[TEST:interrupts:softirq_aarch64:START] +[TEST:interrupts:softirq_aarch64:PASS] +[TEST:filesystem:filesystem_syscalls_aarch64:PASS] +[SUBSYSTEM:process:early:COMPLETE:6/6] +[TEST:ipc:pty_support_aarch64:START] +[TEST:ipc:pty_support_aarch64:PASS] +[TEST:network:virtio_net_probe:START] +[TEST:network:virtio_net_probe:PASS] +[SUBSYSTEM:interrupts:early:COMPLETE:8/8] +[TEST:filesystem:virtio_blk_multi_read:START] +[virtio-blk] Starting multi-read stress test (10 reads)... +[virtio-blk] Read 1 of 10 complete +[virtio-blk] Read 2 of 10 complete +[virtio-blk] Read 3 of 10 complete +[virtio-blk] Read 4 of 10 complete +[virtio-blk] Read 5 of 10 complete +[virtio-blk] Read 6 of 10 complete +[virtio-blk] Read 7 of 10 complete +[virtio-blk] Read 8 of 10 complete +[virtio-blk] Read 9 of 10 complete +[virtio-blk] Read 10 of 10 complete +[virtio-blk] Multi-read stress test passed! +[TEST:filesystem:virtio_blk_multi_read:PASS] +[TEST:network:socket_creation:START] +[TEST:network:socket_creation:PASS] +[SUBSYSTEM:ipc:early:COMPLETE:8/8] +[TEST:memory:heap_large_alloc:START] +[TEST:memory:heap_large_alloc:PASS] +[TEST:network:tcp_socket_creation:START] +[TEST:network:tcp_socket_creation:PASS] +[TEST:logging:serial_output:START] +[LOGGING_TEST] Serial test ARM64 +[TEST:logging:serial_output:PASS] +[TEST:filesystem:virtio_blk_sequential_read:START] +[virtio-blk] Testing sequential read of sectors 0-31... +[virtio-blk] Read sectors 0-7 OK (avail_idx wrap count: 0) +[SUBSYSTEM:logging:early:COMPLETE:3/3] +[virtio-blk] Read sectors 0-15 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-23 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-31 OK (avail_idx wrap count: 2) +[virtio-blk] Sequential read test passed! (32 sectors, 2 queue wraps) +[TEST:filesystem:virtio_blk_sequential_read:PASS] +[TEST:network:loopback:START] +[TEST:network:loopback:PASS] +[TEST:timer:ring_span_report:START] +[TEST:memory:heap_many_small:START] +[TEST:memory:heap_many_small:PASS] +[TEST:filesystem:virtio_blk_write_read_verify:START] +[virtio-blk] Testing write-read-verify cycle... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Reading original data from sector 1000... +[virtio-blk] Original first 16 bytes: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00] +[virtio-blk] Test pattern first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Writing test pattern to sector 1000... +[virtio-blk] Write succeeded +[virtio-blk] Reading back sector 1000... +[virtio-blk] Readback first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Restoring original data to sector 1000... +[virtio-blk] Write-read-verify test passed! All 512 bytes match. +[TEST:filesystem:virtio_blk_write_read_verify:PASS] +[TEST:memory:cow_flags_aarch64:START] +[TEST:memory:cow_flags_aarch64:PASS] +[TEST:network:loopback_wake_loss_counters_are_zero:START] +[TEST:network:loopback_wake_loss_counters_are_zero:PASS] +[TEST:filesystem:virtio_blk_invalid_sector:START] +[virtio-blk] Testing invalid sector read... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Invalid sector correctly rejected: Sector out of range +[virtio-blk] Invalid sector test passed! +[TEST:filesystem:virtio_blk_invalid_sector:PASS] +[TEST:memory:guard_page_exists:START] +[TEST:memory:guard_page_exists:PASS] +[TEST:network:loopback_recv_wake_when_idle:START] +[TEST:memory:stack_layout:START] +[TEST:memory:stack_layout:PASS] +[TEST:filesystem:virtio_blk_uninitialized_read:START] +[virtio-blk] Testing uninitialized device handling... +[virtio-blk] Device is initialized (expected during normal boot) +[virtio-blk] Verified: read_sector checks BLOCK_DEVICE.is_none() and returns error +[virtio-blk] Uninitialized test passed (device was already initialized)! +[TEST:filesystem:virtio_blk_uninitialized_read:PASS] +[SUBSYSTEM:filesystem:early:COMPLETE:10/10] +[TEST:memory:stack_allocation:START] +[TEST:memory:stack_allocation:PASS] +[TEST:memory:user_stack_base:START] +[TEST:memory:user_stack_base:PASS] +[TEST:memory:user_stack_size:START] +[TEST:memory:user_stack_size:PASS] +[TEST:memory:user_stack_top:START] +[TEST:memory:user_stack_top:PASS] +[TEST:memory:user_stack_guard:START] +[TEST:memory:user_stack_guard:PASS] +[TEST:memory:user_stack_alignment:START] +[TEST:memory:user_stack_alignment:PASS] +[TEST:memory:kernel_stack_base:START] +[TEST:memory:kernel_stack_base:PASS] +[TEST:memory:kernel_stack_size:START] +[TEST:memory:kernel_stack_size:PASS] +[TEST:memory:kernel_stack_top:START] +[TEST:memory:kernel_stack_top:PASS] +[TEST:memory:kernel_stack_guard:START] +[TEST:memory:kernel_stack_guard:PASS] +[TEST:memory:kernel_stack_alignment:START] +[TEST:memory:kernel_stack_alignment:PASS] +[TEST:memory:stack_in_range:START] +[TEST:memory:stack_in_range:PASS] +[TEST:memory:stack_grows_down:START] +[TEST:memory:stack_grows_down:PASS] +[TEST:memory:stack_depth:START] +[TEST:memory:stack_depth:PASS] +[TEST:memory:stack_frame_size:START] +[TEST:memory:stack_frame_size:PASS] +[TEST:memory:stack_red_zone:START] +[TEST:memory:stack_red_zone:PASS] +[SUBSYSTEM:memory:early:COMPLETE:24/24] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=when_idle:budget_ms=200:elapsed_tick_ms=132:elapsed_ctr_ms=200:ctx_delta=281:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x2:cpu_silence_ms=912:silence_cpu=0:woke_ms=781:verdict=ok] +[TEST:network:loopback_recv_wake_when_idle:PASS] +[TEST:network:loopback_recv_wake_under_load:START] +[RING_SPAN:cpu=0:span_ms=1483:writes=657:dropped=0:ticks_total=3906:tick_events=62] +[TEST:timer:ring_span_report:PASS] +[SUBSYSTEM:timer:early:COMPLETE:6/6] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=under_load:budget_ms=200:elapsed_tick_ms=129:elapsed_ctr_ms=200:ctx_delta=307:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x0:cpu_silence_ms=1054:silence_cpu=0:woke_ms=927:verdict=ok] +[TEST:network:loopback_recv_wake_under_load:PASS] +[TEST:network:loopback_pump_does_not_busy_spin:START] +[TEST:network:loopback_pump_does_not_busy_spin:PASS] +[TEST:network:tcp_final_ack_survives_accept_publish_race:START] +[TEST:network:tcp_final_ack_survives_accept_publish_race:PASS] +[TEST:network:arm64_net_softirq_registration:START] +[TEST:network:arm64_net_softirq_registration:PASS] +[TEST:network:net_lock_guard_masks_interrupt_source:START] +[TEST:network:net_lock_guard_masks_interrupt_source:PASS] +[SUBSYSTEM:network:early:COMPLETE:12/12] +[STAGE:early:COMPLETE:91/118] +[STAGE:sched:ADVANCE] +[SUBSYSTEM:scheduler:sched:START] +[TEST:scheduler:kthread_spawn_verify:START] +[SUBSYSTEM:filesystem:sched:START] +[TEST:filesystem:block_wedge_oracle:START] +[SUBSYSTEM:process:sched:START] +[TEST:process:fork_exit_defer_reclaim_pairing_test:START] +[TEST:scheduler:kthread_spawn_verify:PASS] +[BLOCK_WEDGE_ORACLE:locked=1:wedged=1:refused=1:parked=0:refuse_ms=0] +[TEST:filesystem:block_wedge_oracle:PASS] +[TEST:scheduler:workqueue_operational:START] +[TEST:scheduler:workqueue_operational:PASS] +[SUBSYSTEM:filesystem:sched:COMPLETE:1/1] +[PT_RETIRE_ORACLE:aarch64:cycles=64:used_before=53:used_after=53:expected_tables=9:roots=64:returned=640:lost=0:kstack_returns=64] +[PT_LEAF_ORACLE:aarch64:cycles=64:expected=192:recorded=192:released=192:returned=192:live_refused=0:used_before=53:used_after=53] +[TEST:process:fork_exit_defer_reclaim_pairing_test:PASS] +[SUBSYSTEM:scheduler:sched:COMPLETE:2/2] +[TEST:process:exec_detach_oracle:START] +manager.create_process [ARM64]: ENTRY - name='exec_detach_leader', elf_size=180 +manager.create_process [ARM64]: Generated PID 69 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4404c000-0x4405c000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4404c000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 69 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 69 +[EXEC_DETACH_ORACLE:aarch64:bodies=2:fail_preserved=2:sibling_refused=2:success_detached=2:fresh_root=2:tgid_self=2:custody_balance=0:leaf_residual=16:stack_residual=18:kstack_frames_released=0:old_group_reached_pre=2:old_group_missed_post=2:self_group_reached_post=2] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:clone_admission_oracle:START] +[CLONE_ADMISSION_ORACLE:aarch64:admitted=1:refused=2:creating_refused=1:published_admitted=2:balance=0] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:init_designation_oracle:START] +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a1', elf_size=8, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a2', elf_size=120, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +[INIT_DESIGNATION_ORACLE:aarch64:construct_failed=2:construct_undecided=0:construct_residual=0:construct_roots_retired=2:construct_leaf_balance=0:construct_commit_balance=0:refused=4:accepted=1:published=1:retired=1:held_error_removals=1:reparented=1:reparent_skipped=1:ordinary_allocated=5:reserved_collisions=0:designation_balance=0] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_group_refusal_oracle:START] +[INIT_GROUP_REFUSAL_ORACLE:aarch64:none_probes=3:none_refusals=0:init_refused=1:alias_refused=1:alias_pid_refused=0:nonit_probes=2:nonit_refusals=0:rows_delta=0:refusal_counter_delta=0:designation_residual=0:balance=0] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:kernel_stack_ownership_oracle:START] +[CREATION_LOCK_ORDER:INJECTED:PM_HELD] +[KSTACK_OWNER_ORACLE:aarch64:creation_rows=1000:creation_owned=1000:one_owner=1000:two_owner=0:zero_owner=0:fork_rows=1:fork_owned=1:slot_returns_exact_one=1:slot_alloc_delta=1000:slot_free_delta=1000:slot_balance=0:cohort_enrolled=1000:cohort_returned=1000:cohort_double_return=0:foreign_alloc_delta=0:foreign_returned=0:frames_mapped_delta=0:frames_released_delta=0:frame_balance=0:frame_used_delta=0:frame_used_bounded=1:live_checks=1106:live_refusals_production=0:live_refusals_injected=1:drop_refused_live=0:pte_overwrite_refusals=0:pub_pooled=1073:pub_sched_owned=1073:pub_row_residual=0:pub_unowned=0:classifier_sched_owned=1:classifier_row_residual=1:classifier_unowned=1:classifier_not_pooled=1:sched_publications=28:sched_pm_held_production=0:sched_pm_held_injected=1:reconciliation_diff=0:reconciliation_skew_bound=6:balance=0] +[TEST:process:kernel_stack_ownership_oracle:PASS] +[TEST:process:creating_dispatch_refusal:START] +manager.create_process [ARM64]: ENTRY - name='creating_dispatch_probe', elf_size=180 +manager.create_process [ARM64]: Generated PID 86 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x44059000-0x44069000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x44059000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 86 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 86 +[CREATING_DISPATCH_ORACLE_DIAG:aarch64:refusal_delta=2:leaf_residual=16:user_stack_residual=16:balance=0:settle_rounds=3:root=0x44042000:root_release_done=1:probe_hw_clear=1:probe_shadow_clear=1:probe_cached_clear=1:retire_hw_blocked=0:retire_shadow_blocked=0:retire_cached_blocked=0] +[CREATING_DISPATCH_ORACLE:aarch64:injected=1:refused_via_dispatch=1:requeue_retried=1:dispatched_after_publish=1:balance=0:leaf_residual=16:user_stack_residual=16] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:tombstone_join_oracle:START] +[TOMBSTONE_JOIN_ORACLE:aarch64:retire_second=1:reap_second=1:removed=2:resident_delta=0:tombstone_rows=0:PASS] +[TEST:process:tombstone_join_oracle:PASS] +[TEST:process:retirement_fence_gate:START] +[TEST:process:retirement_fence_gate:PASS] +[TEST:process:reclaim_progress_gate:START] +[TEST:process:reclaim_progress_gate:PASS] +[TEST:process:exit_kick_protocol_gate:START] +[exit_kick_gate] budget_anchor=test_phase anchor_age_at_gate_entry_ms=2156 budget_ms=60000 gate_ceiling_ms=45000 +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=1] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[TEST:process:exit_kick_protocol_gate:PASS] +[TEST:process:exit_kick_worker_window_isolation:START] +[exit_kick_worker_isolation] budget_anchor=test_phase anchor_age_at_entry_ms=2187 budget_ms=60000 scenario_ceiling_ms=1500 +[exit_kick_worker_isolation] scenario=before_union_worker_1 start=1 +[exit_kick_gate] wait=before_union_worker_1 breadcrumb=1 elapsed_ms=1002 progress_work=43 progress_exit=0 re_kick_sgis=57 +[STRAND_INJECT_ORACLE:aarch64:legA_exercised=1:legA_recovered=1:legB_exercised=1:legB_recovered=1:stranded=0] +[exit_kick_gate] wait=before_union_worker_1 cause=absolute_ceiling elapsed_ms=1503 window_budget_ms=1500 re_kick_sgis=87 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=63 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=31 worker_3_progress_start=0 worker_3_progress_final=31 last_advance_ms_ago=25 late_true=0 +[exit_kick_worker_isolation] scenario=before_union_worker_1 elapsed_ms=1505 cause=absolute_ceiling target=none progress=[1, 31, 31] completed=6 joined=3 +[exit_kick_worker_isolation] scenario=after_worker_1 start=1 +[exit_kick_gate] wait=after_worker_1 cause=no_progress elapsed_ms=801 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=0 worker_3_progress_final=17 last_advance_ms_ago=801 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_1 elapsed_ms=802 cause=no_progress target=worker_1 progress=[1, 17, 17] completed=6 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 1 made no progress +[exit_kick_worker_isolation] scenario=after_worker_2 start=1 +[exit_kick_gate] wait=after_worker_2 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=0 worker_2_progress_final=1 worker_3_progress_start=2 worker_3_progress_final=17 last_advance_ms_ago=799 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_2 elapsed_ms=801 cause=no_progress target=worker_2 progress=[17, 1, 17] completed=5 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 2 made no progress +[exit_kick_worker_isolation] scenario=after_worker_3 start=1 +[SCHED_STRAND_ORACLE:aarch64:samples=108:checked=610:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=3627:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=3073:cleared=3076] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[exit_kick_gate] wait=after_worker_3 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=0 worker_3_progress_final=1 last_advance_ms_ago=799 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_3 elapsed_ms=801 cause=no_progress target=worker_3 progress=[17, 17, 1] completed=3 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 3 made no progress +[exit_kick_worker_isolation] scenario=after_healthy start=1 +[exit_kick_worker_isolation] scenario=after_healthy elapsed_ms=2 cause=success target=none progress=[2, 2, 2] completed=7 joined=3 +[exit_kick_worker_isolation] healthy_baseline=PASS +[exit_kick_worker_isolation] fixture_elapsed_ms=4033 +[TEST:process:exit_kick_worker_window_isolation:PASS] +[TEST:process:exit_kick_budget_anchor_isolation:START] +[exit_kick_budget_anchor] pre_test_delay_ms=1214 fixture_budget_ms=1000 fixture_gate_ceiling_ms=600 +[exit_kick_budget_anchor] scenario=inherited_kernel_entry_anchor anchor=inherited cause=phase_one_ceiling target=none elapsed_ms=0 budget_age_at_entry_ms=1215 +[exit_kick_budget_anchor] scenario=test_phase_entry_anchor anchor=test_phase cause=no_progress target=worker_1 elapsed_ms=407 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] scenario=gate_window_exhaustion anchor=test_phase cause=gate_ceiling target=none elapsed_ms=604 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] fixture_elapsed_ms=2228 +[TEST:process:exit_kick_budget_anchor_isolation:PASS] +[TEST:process:census_widen_oracle:START] +[CENSUS_WIDEN_ORACLE:aarch64:arm_target=0:baseline_reported=0:armed_reported=1:tid=1215:shape=ready_queued_nondispatching:queued_nondispatching=1:queued_nondispatch_ms=5547:cpu_silence_ms=5547:joined=1:retired=1:PASS] +[TEST:process:census_widen_oracle:PASS] +[SUBSYSTEM:process:sched:COMPLETE:14/14] +[STAGE:sched:COMPLETE:108/118] +[boot] All boot tests passed! +[PT_ROOT_CUSTODY:no_proof=2:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=79] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=4537:cleared=4540] +[PIN_GUARD_ORACLE:aarch64:home=1:here=0:reclaim=1:requeue=1:previous=1:on_home=3:refused=3:census_clean=1:verdict=PASS] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TIMER_WAKE_LATENCY_ORACLE:aarch64:sleep_ms=10:peers=8:overrun_ms=3:bound_ms=100:quantum_ms=10:round_ms=80:wake_enqueues=2:peers_started=8:peers_spinning=8:backstops=0:setup_ms=5:window_ms=26:measured=1:PASS] + +======================================== + Breenix ARM64 Boot Complete! +======================================== + +Hello from ARM64! + +[boot] Launching init from pre-loaded ELF... +manager.create_process_with_argv [ARM64]: ENTRY - name='init', elf_size=298664, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f5d0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 1 +[INIT_DESIGNATION:aarch64:designated_pid=1:reserved_collisions=0] +[STAGE:proc:ADVANCE] +[SUBSYSTEM:ipc:proc:START] +[TEST:ipc:telnetd_dependencies_aarch64:START] +[SUBSYSTEM:syscall:proc:START] +[TEST:ipc:telnetd_dependencies_aarch64:PASS] +[TEST:syscall:fcntl_pm_contention_oracle:START] +[SUBSYSTEM:process:proc:START] +[TEST:process:current_thread_exists:START] +[TEST:process:current_thread_exists:PASS] +[SUBSYSTEM:ipc:proc:COMPLETE:1/1] +[TEST:process:process_list_populated:START] +[TEST:process:process_list_populated:PASS] +[FCNTL_PM_CONTENTION_ORACLE:aarch64:arm_wait_us=94:armed=1:acquired=1:holder_cpu=1:pm_busy_probe=1:calls=64:eagain=0:first_errno=9:first_wait_us=8183:hold_safety=0:hold_done=1:joined=1:PASS] +[TEST:process:frame_custody_healthy_counters:START] +[TEST:syscall:fcntl_pm_contention_oracle:PASS] +[TEST:process:frame_custody_healthy_counters:PASS] +[TEST:syscall:irq_hold_oracle:START] +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +[SUBSYSTEM:process:proc:COMPLETE:3/3] +[IRQ_HOLD_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12020:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:irq_hold_oracle:PASS] +[TEST:syscall:tty_irq_pm_oracle:START] +[TTY_IRQ_PM_ORACLE:aarch64:fg_unset_before=1:pm_blocking_acquires=0:deferred=2:pgrp_set_by_entry=0:processed=2:buffered=2:irqs_enabled_before=1:holder_cpu=2:pm_busy_probe=1:hold_us=20000:entry_us=0:joined=1:adopted=1:adopted_pgrp=821:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_pm_oracle:PASS] +[TEST:syscall:tty_irq_fg_oracle:START] + +[TTY_IRQ_FG_ORACLE:aarch64:fg_known=822:target_absent=1:fg_lock_touches=0:fg_blocking_acquires=0:snapshot_reads=3:processed=2:buffered=1:irqs_enabled_before=1:holder_cpu=2:fg_busy_probe=1:hold_us=20000:entry_us=120:joined=1:sig_calls=1:sig_pid=822:sig_num=2:snapshot_agrees=1:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_fg_oracle:PASS] +[TEST:syscall:udp_socket_lock_oracle:START] +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +[UDP_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12015:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_socket_lock_oracle:PASS] +[TEST:syscall:udp_ports_lock_oracle:START] +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +[UDP_PORTS_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:driver_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=21:hold_us=12008:refused=8:delivered=13:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_ports_lock_oracle:PASS] +[SUBSYSTEM:syscall:proc:COMPLETE:6/6] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[boot] Reset 4 idle thread contexts (CPUs online: 4) +EL0_SYSCALL: First syscall from userspace (SPSR confirms EL0) +[ OK ] syscall path verified +[STAGE:user:ADVANCE] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[USER_RSP_SCRATCH_EL_CENSUS:el0_installs=2:el1_skipped=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[init] Breenix init starting (PID 1) +[spawn] path='/bin/heartbeat' +manager.create_process_with_argv [ARM64]: ENTRY - name='heartbeat', elf_size=303616, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 90 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f85c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 90 +[spawn] Created child PID 90 for parent PID 1 +[spawn] Success: child PID 90 scheduled +[init] heartbeat started (PID 90) +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=1:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=2:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=early:probe1=-22:probe2=-22:expected=-22] +[spawn] path='/bin/block_eintr_oracle' + +[CTX596_ELR_DIVERGENCE] tid=1226 cpu=3 prev_elr=0xffff0000405c9800 x30=0xffff0000405bba2c ctx_elr=0xffff0000405bba2c + +[INLINE_SAVE_OVERWRITE] tid=1226 sp=0xffff00005430de70 old_sp=0xffff00005430de70 saved_sp=0xffff00005430de70 delta=0x0 saved_lr=0xffff0000405c98f0 saved_slot20=0xffff0000405c98f0 slot20=0xffff0000405c98f0 elr=0xffff0000405bba2c x30=0xffff0000405bba2c +[heartbeat] tid=1236 uptime_ms=9453 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='block_eintr_oracle', elf_size=304752, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 91 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f938 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 91 +[spawn] Created child PID 91 for parent PID 1 +[spawn] Success: child PID 91 scheduled +F123456789SC +[CTX596_ELR_DIVERGENCE] tid=1237 cpu=1 prev_elr=0x40001468 x30=0xffff0000405bba2c ctx_elr=0xffff0000405bba2c +[syscall] exit(0) pid=92 name=block_eintr_oracle_child_92 +[TTBR0_ASID_CENSUS:untagged=0:tagged=2188:kernel=7170:cleared=9333] +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=440:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=15:smallint=0:other=0] +[heartbeat] tid=1236 uptime_ms=10466 kbd_nonzero=0 +[SCHED_STRAND_ORACLE:aarch64:samples=207:checked=929:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5543:worst_cpu_scheduler_silence_ms=5587:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=4699:kernel=9994:cleared=14635] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +F123456789SC[heartbeat] tid=1236 uptime_ms=11469 kbd_nonzero=0 +[syscall] exit(0) pid=93 name=block_eintr_oracle_child_93 +[TTBR0_ASID_CENSUS:untagged=0:tagged=6414:kernel=11909:cleared=18238] +[heartbeat] tid=1236 uptime_ms=12470 kbd_nonzero=0 +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[syscall] exit(0) pid=91 name=block_eintr_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=10286:kernel=16304:cleared=26463] +[init] block_eintr_oracle exited pid=91 code=0 +[spawn] path='/bin/futex_handoff_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='futex_handoff_oracle', elf_size=291984, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 94 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000ef08 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 94 +[spawn] Created child PID 94 for parent PID 1 +[spawn] Success: child PID 94 scheduled +[FUTEX_HANDOFF_ORACLE:aarch64:driven=2:stage1_ret=EAGAIN:stage1_wake=0:stage1_parked=0:stage2_ret=0:stage2_wake=1:stage2_parked=0:stage3_ret=ETIMEDOUT:stage3_elapsed_ok=1:stage3_elapsed_ms=50:arm_delay_us=49:rescues=0:queue_residual=0:balance=0] +[FUTEX_HANDOFF_ORACLE_DRIVER:s1=-11:s2=0:s3=-110] +[syscall] exit(0) pid=94 name=futex_handoff_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=11172:kernel=17343:cleared=28379] +[init] futex_handoff_oracle exited pid=94 code=0 +[spawn] path='/bin/poll_tcp_oracle' +[heartbeat] tid=1236 uptime_ms=13472 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='poll_tcp_oracle', elf_size=307952, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 95 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001050c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 95 +[spawn] Created child PID 95 for parent PID 1 +[spawn] Success: child PID 95 scheduled +[POLL_TCP_TIMEOUT] fd=4 timeout_ms=120 publish=none_in_window rx_len=0 revents=0x0000 +F123456789SC[syscall] exit(0) pid=96 name=poll_tcp_oracle_child_96 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12348:kernel=18621:cleared=30808] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=125:late_ms=83:park_ms=82:attempts=1] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=125:late_ms=83:park_ms=82:attempts=1] +[syscall] exit(0) pid=95 name=poll_tcp_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=12362:kernel=18638:cleared=30837] +[init] poll_tcp_oracle exited pid=95 code=0 +[spawn] path='/bin/tty_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='tty_oracle', elf_size=338264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 97 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40012b34 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 97 +[spawn] Created child PID 97 for parent PID 1 +[spawn] Success: child PID 97 scheduled +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=3 (pty 2) +[pty] Unlocked PTY 2 (fd 3) +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +F123456789SC[heartbeat] tid=1236 uptime_ms=14473 kbd_nonzero=0 +[EXEC_LOCK_ORDER:FIRST_COMMIT] +[EXEC_LOCK_ORDER:commits=1:pm_held=0:unpinned=0:missing=0] +[syscall] exit(0) pid=98 name=/bin/tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14944:kernel=21496:cleared=36224] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[syscall] exit(0) pid=97 name=tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14957:kernel=21503:cleared=36241] +[init] tty_oracle exited pid=97 code=0 +[spawn] path='/bin/exec_smoke' +manager.create_process_with_argv [ARM64]: ENTRY - name='exec_smoke', elf_size=290928, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 99 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000eb40 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 99 +[spawn] Created child PID 99 for parent PID 1 +[spawn] Success: child PID 99 scheduled +[EXEC_SMOKE:LAUNCH] +[heartbeat] tid=1236 uptime_ms=15473 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=2:pm_held=0:unpinned=0:missing=0] +[EXEC_SMOKE:TARGET_ENTER argc=2] +[EXEC_SMOKE:TARGET_OK] +[syscall] exit(0) pid=99 name=/bin/exec_smoke_target +[TTBR0_ASID_CENSUS:untagged=0:tagged=16688:kernel=23505:cleared=39943] +[EXEC_SMOKE:LAUNCHER_EXIT code=0] +[spawn] path='/usr/local/test/bin/clonevm_exec_test' +manager.create_process_with_argv [ARM64]: ENTRY - name='clonevm_exec_test', elf_size=289672, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 100 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f63c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 100 +[spawn] Created child PID 100 for parent PID 1 +[spawn] Success: child PID 100 scheduled +CLONEVM_EXEC_TEST: start +CLONEVM_EXEC_TEST: child live +[SCHED_STRAND_ORACLE:aarch64:samples=307:checked=1211:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5543:worst_cpu_scheduler_silence_ms=5587:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=9:reap_second=8:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=17969:kernel=24773:cleared=42404] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +CLONEVM_EXEC_TEST: live sibling refused exec +[syscall] exit(0) pid=101 name=thread-101 +[TTBR0_ASID_CENSUS:untagged=0:tagged=19804:kernel=26175:cleared=45229] +CLONEVM_EXEC_TEST: child exited +[heartbeat] tid=1236 uptime_ms=16478 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=3:pm_held=0:unpinned=0:missing=0] +CLONEVM_EXEC_TEST: second stage +[syscall] exit(0) pid=102 name=thread-102 +[TTBR0_ASID_CENSUS:untagged=0:tagged=20745:kernel=27202:cleared=47152] +CLONEVM_EXEC_TEST: post-exec rendezvous complete +CLONEVM_EXEC_TEST: post-exec futex keys derived +CLONEVM_EXEC_TEST: PASS +[syscall] exit(0) pid=100 name=/usr/local/test/bin/clonevm_exec_test +[TTBR0_ASID_CENSUS:untagged=0:tagged=20748:kernel=27205:cleared=47159] +[init] clonevm_exec_test exited pid=100 code=0 +[spawn] path='/bin/bsshd' +manager.create_process_with_argv [ARM64]: ENTRY - name='bsshd', elf_size=455240, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 103 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001d6c0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 103 +[spawn] Created child PID 103 for parent PID 1 +[spawn] Success: child PID 103 scheduled +[init] bsshd started (PID 103) +[spawn] path='/bin/xhci_counters' +bsshd: starting on port 2222 +bsshd: listening on 0.0.0.0:2222 +[heartbeat] tid=1236 uptime_ms=17482 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='xhci_counters', elf_size=292264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 104 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f140 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 104 +[spawn] Created child PID 104 for parent PID 1 +[spawn] Success: child PID 104 scheduled +[spawn] path='/bin/bwm' +[xhci-counters] XHCI_MSI_EVENT_TOTAL=0 +[xhci-counters] XHCI_IRQ_ENTRY_TOTAL=0 +[xhci-counters] XHCI_LOCK_CONTENDED_TOTAL=0 +[xhci-counters] KBD_NONZERO_TOTAL=0 +[syscall] exit(0) pid=104 name=xhci_counters +[TTBR0_ASID_CENSUS:untagged=0:tagged=23779:kernel=30601:cleared=53550] +manager.create_process_with_argv [ARM64]: ENTRY - name='bwm', elf_size=428144, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 105 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40018bf8 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffee0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 105 +[spawn] Created child PID 105 for parent PID 1 +[spawn] Success: child PID 105 scheduled +[spawn] path='/sbin/telnetd' +[bwm] Breenix Window Manager starting... (v2-chromeless-skip) +[heartbeat] tid=1236 uptime_ms=18484 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='telnetd', elf_size=298232, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 106 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f930 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 106 +[spawn] Created child PID 106 for parent PID 1 +[spawn] Success: child PID 106 scheduled +[init] Boot script completed +[spawn] path='/bin/bounce' +TELNETD_STARTING +TELNETD_LISTENING +manager.create_process_with_argv [ARM64]: ENTRY - name='bounce', elf_size=388200, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 107 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x400188f4 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 107 +[spawn] Created child PID 107 for parent PID 1 +[spawn] Success: child PID 107 scheduled +[init] bounce started (PID 107) +[INIT_GROUP_WALK:aarch64:rows=12:init_tgid_rows=1:foreign_tgid_rows=0:refused=3:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=12:init_tgid_rows=1:foreign_tgid_rows=0:refused=4:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=quiesce:probe1=-22:probe2=-22:expected=-22] +[init] Process 92 exited (code 0) +Bounce spheres demo starting (for Gus!) [boot_id=0000000488b4c710] +[init] Process 93 exited (code 0) +[init] Process 101 exited (code 0) +[init] Process 102 exited (code 0) +[init] Process 104 exited (code 0) +[window] create_window_buffer: 400x300 (480000 bytes, 118 pages) +[heartbeat] tid=1236 uptime_ms=19487 kbd_nonzero=0 +[window] Created buffer id=1 for pid=107: 400x300 at virt=0x7ffffdf86000 phys=0x442cb000 +[bounce] Window mode: id=1 400x300 [boot_id=0000000488b4c710] +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=5292:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=289:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=4:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=15233:kstack=0:uva=118:smallint=175:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=15237:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=5342:kstack=0:uva=1:smallint=3:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=5290:kstack=0:uva=1:smallint=3:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=118:smallint=173:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el0:text=0:kstack=0:uva=117:smallint=172:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el1-restore-frame-elr:text=4760:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-restore-frame-elr:text=0:kstack=0:uva=294:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=3:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=ctx-x30:text=7349:kstack=0:uva=100:smallint=356:other=12] +[RESUME_PC_CENSUS:cpu=1:source=ctx-elr-el1:text=7523:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el1:text=4513:kstack=1:uva=1:smallint=160:other=13] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el1:text=4586:kstack=0:uva=1:smallint=161:other=12] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el0:text=0:kstack=0:uva=94:smallint=195:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el0:text=0:kstack=0:uva=99:smallint=195:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el1-restore-frame-elr:text=5092:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-restore-frame-elr:text=0:kstack=0:uva=358:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=3:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=ctx-x30:text=7733:kstack=0:uva=109:smallint=464:other=18] +[RESUME_PC_CENSUS:cpu=2:source=ctx-elr-el1:text=7966:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el1:text=4789:kstack=0:uva=0:smallint=215:other=17] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el1:text=4859:kstack=0:uva=0:smallint=215:other=18] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el0:text=0:kstack=0:uva=89:smallint=246:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el0:text=0:kstack=0:uva=109:smallint=249:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el1-restore-frame-elr:text=5291:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el0-restore-frame-elr:text=0:kstack=0:uva=305:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=ctx-x30:text=8138:kstack=5:uva=103:smallint=450:other=21] +[RESUME_PC_CENSUS:cpu=3:source=ctx-elr-el1:text=8412:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=lr-save-el1:text=5110:kstack=4:uva=0:smallint=249:other=21] +[RESUME_PC_CENSUS:cpu=3:source=lr-restore-el1:text=5017:kstack=5:uva=0:smallint=248:other=21] +[RESUME_PC_CENSUS:cpu=3:source=lr-save-el0:text=0:kstack=0:uva=82:smallint=202:other=0] +[RESUME_PC_CENSUS:cpu=3:source=lr-restore-el0:text=0:kstack=0:uva=103:smallint=202:other=0] +[bwm] ERROR: GPU compositing required +[syscall] exit(1) pid=105 name=bwm +[TTBR0_ASID_CENSUS:untagged=0:tagged=28328:kernel=35763:cleared=63211] +[init] Process 105 exited (code 1) +[heartbeat] tid=1236 uptime_ms=20490 kbd_nonzero=0 +[PT_ROOT_CUSTODY:no_proof=14:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=82] +[TOMBSTONE_CENSUS:resident=0:removed=16:reap_second=15:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=28337:kernel=35797:cleared=63251] +[net-rx-counters] sample=1 begin +[net-rx-counters] sample=1 NET_RX_MSI_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_RING_DRAIN_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_FRAME_TOTAL: 3 (cpu0=3) +[net-rx-counters] sample=1 NET_RX_ARP_TOTAL: 2 (cpu0=2) +[net-rx-counters] sample=1 NET_RX_ETHERTYPE_OTHER_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_SOFTIRQ_ENTRY_TOTAL: 37 (cpu0=1, cpu1=19, cpu2=7, cpu3=10) +[net-rx-counters] sample=1 NET_RX_SOFTIRQ_EXIT_TOTAL: 37 (cpu0=1, cpu1=19, cpu2=7, cpu3=10) +[net-rx-counters] sample=1 NET_RX_REENTRANT_SKIP_TOTAL: 1 (cpu1=1) +[net-rx-counters] sample=1 NET_RX_GUARD_RELEASE_TOTAL: 36 (cpu0=1, cpu1=18, cpu2=7, cpu3=10) +[net-rx-counters] sample=1 NET_RX_REARM_CHECK_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_REARM_RACE_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_REARM_ARMED_TOTAL: 0 +[net-rx-counters] sample=1 NET_PCI_IRQ_RAISED_NETRX: 0 +[net-rx-counters] sample=1 GIC_SPI55_ACK_TOTAL: 0 +[net-rx-counters] sample=1 end +[SCHED_STRAND_ORACLE:aarch64:samples=406:checked=1479:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5543:worst_cpu_scheduler_silence_ms=5587:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=16:reap_second=15:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=28346:kernel=35910:cleared=63371] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[heartbeat] tid=1236 uptime_ms=21518 kbd_nonzero=0 +[heartbeat] tid=1236 uptime_ms=22523 kbd_nonzero=0 +[heartbeat] tid=1236 uptime_ms=23524 kbd_nonzero=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/census.tsv b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/census.tsv new file mode 100644 index 000000000..fe2d6554b --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/census.tsv @@ -0,0 +1,3 @@ +boot bucket end seconds ctx596_divergence reason serial ret_dispatch_refusals resume_pc_refusals percpu_stack_aliens cpu_identity_splits ret_stage_refusals lr_nontext +1 GREEN early 24 0 all service-sequence and P5b markers observed (qemu_status=0) /tmp/breenix_aarch64_service_sequence_gate_20260908T023623Z-83722/max/serial-1.txt 0 0 0 0 0 8 +2 GREEN early 24 1 all service-sequence and P5b markers observed (qemu_status=0) /tmp/breenix_aarch64_service_sequence_gate_20260908T023623Z-83722/max/serial-2.txt 0 0 0 0 0 8 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-1.qmp.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-1.qmp.txt new file mode 100644 index 000000000..f1067d3d2 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-1.qmp.txt @@ -0,0 +1 @@ +[QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-1.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-1.txt new file mode 100644 index 000000000..a21366528 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-1.txt @@ -0,0 +1,1063 @@ +EOS +======================================== + Breenix ARM64 Kernel Starting + BUILD_ID: 006a9f737534c7 +======================================== + +[CTX596_ORACLE:ARMED:force_eret=0] +[boot] DIAG_MARKER_XHCI_A +[boot] DIAG_MARKER_XHCI_B +[boot] DIAG_MARKER_XHCI_C +[boot] loader xhci_hcrst_raw=0x0 ecam=0x0 +[boot] Current exception level: EL1 +[boot] MMU already enabled (high-half kernel) +[boot] Initializing memory management (0x44000000-0x50000000)... +[boot] Memory management ready +[boot] Initializing Generic Timer... +[boot] Timer frequency: 1000000000 Hz (1000 MHz) +[boot] Initializing PL031 RTC... +[boot] Current timestamp: 7854000 +[boot] Initializing GIC... +[gic] GICR probe 0x080a0000: WAKER=0x00000006 <<< VALID +[gic] GICR base mismatch: loader=0x00000000, using=0x080a0000 +[gic] GICD_CTLR wrote 0x53, readback=0x53 +[gic] GICR_IGROUPR0: wrote 0xFFFFFFFF, readback=0xffffffff +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[boot] GIC initialized (version 3) +[boot] Enabling UART interrupts... +[boot] Enabling GIC IRQ 33 (UART0)... +[uart] IMSC: 0x0 -> 0x50 (verify: 0x50) +[uart] FR=0x90 (RXFE=1), RIS=0x20 +[gic] IRQ 33 state (GICv3): + enabled=true, group1=true, pending=false + priority=0xa0, GICD_CTLR=0x53 + ICC_PMR=0xf0 +[boot] UART interrupts enabled +[boot] Enabling interrupts... +[boot] Interrupts enabled: true +[boot] QEMU PCI ECAM configured at 0x4010000000 +[boot] Initializing device drivers... +[drivers] Initializing driver subsystem... +[drivers] Hybrid mode: VirtIO MMIO + PCI AHCI +[drivers] Found VirtIO MMIO device: network (ID=1, version=1) +[drivers] Found VirtIO MMIO device: block (ID=2, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: GPU (ID=16, version=1) +[drivers] Found 5 VirtIO MMIO devices +[virtio-blk] Searching for block devices... +[virtio-blk] Found block device 0 at 0xa003800 +[virtio-blk] Device 0 version: 1 +[virtio-blk] Device 0 capacity: 190464 sectors (93 MB) +[virtio-blk] Device 0 queue max size: 1024 +[virtio-blk] Device 0 using v1 (legacy) queue setup at PFN 0x40a60 +[virtio-blk] Block MMIO IRQ 76 enabled for device 0 +[virtio-blk] Block device 0 initialized successfully +[virtio-blk] Initialized 1 block device(s) +[drivers] VirtIO block driver initialized +[virtio-net] Searching for network device... +[virtio-net] Found network device at 0xa003600 (slot 27) +[virtio-net] Device version: 1 +[virtio-net] MAC address: 52:54:00:12:34:56 +[virtio-net] RX queue max size: 1024 +[virtio-net] TX queue max size: 1024 +[virtio-net] Network device initialized successfully +[virtio-net] Network device IRQ 75 (will enable after net init) +[drivers] VirtIO network driver initialized +[virtio-net] Device test - MAC: 52:54:00:12:34:56 +[virtio-net] Test passed! +[virtio-gpu] Searching for GPU device... +[virtio-gpu] Found GPU device at 0xa003e00 +[virtio-gpu] Device version: 1 +[virtio-gpu] Control queue max size: 1024 +[virtio-gpu] Display: 1280x800 +[virtio-gpu] GPU device initialized successfully +[drivers] VirtIO GPU driver initialized +[virtio-gpu] Device test - Display: 1280x800 +[virtio-gpu] Test passed! +[virtio-sound] Searching for sound device... +[drivers] VirtIO sound driver init failed: No VirtIO Sound device found +[drivers] Driver subsystem initialized (MMIO) +[drivers] PCI ECAM at 0x4010000000, enumerating PCI bus... +[drivers] Found 1 PCI devices +[pci] 00:00.0 [1b36:0008] class=06/00 +[drivers] AHCI PCI init failed: No AHCI controller found +[drivers] Driver subsystem initialized (hybrid MMIO+PCI) +[boot] Found 6 devices +[drivers] Running post-init self-tests... +[virtio-blk] Testing read of sector 0... +[virtio-blk] Sector 0 data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +[virtio-blk] Read test passed! +[boot] Initializing network stack... +[net] Initializing network stack... +[net] MAC address: 52:54:00:12:34:56 +NET: IP address: 10.0.2.15 +NET: Gateway: 10.0.2.2 +Network stack initialized +NET: Sending ARP request for gateway 10.0.2.2 +ARP request sent successfully +NET: Gateway ARP not resolved during init; will resolve via IRQ path +NET: Sending ICMP echo request to gateway 10.0.2.2 +NET: ARP cache miss for 10.0.2.2, sending ARP request +NET: Failed to send ping: ArpMiss: reply will populate cache via IRQ +NET: Network initialization complete +[virtio-net] Enabling IRQ 75 for network device +NET: pre-primed NetRx softirq for bootstrap callback re-enable +[boot] Initializing filesystem... +[ext2] Using VirtIO block device (190464 sectors) +[boot] ext2 root filesystem mounted +[boot] No home filesystem: No home block device available (expected at device index 3 or 1) (continuing) +[boot] devfs initialized at /dev +[boot] devptsfs initialized at /dev/pts +[boot] CPU detected: Unknown Unknown +[boot] procfs initialized at /proc +[boot] TTY subsystem initialized +[boot] Initializing graphics... +[virtio-gpu] GPU device already initialized +[arm64-fb] Shell framebuffer initialized: 1280x800 +[graphics] Framebuffer: 1280x800 +[graphics] Particle system initialized +[render_queue] Initialized (64KB buffer) +[graphics] Split-screen terminal UI initialized +[boot] Initializing VirtIO keyboard... +[virtio-input] Searching for input devices (ID=18)... +[virtio-input] Slot 27 at 0xa003600: device_id=1 +[virtio-input] Slot 28 at 0xa003800: device_id=2 +[virtio-input] Slot 29 at 0xa003a00: device_id=18 +[virtio-input] Found tablet at 0xa003a00 (slot 29, supports EV_ABS) +[virtio-input] Tablet device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 77 for tablet +[virtio-input] Tablet initialized (16 buffers) +[virtio-input] Slot 30 at 0xa003c00: device_id=18 +[virtio-input] Found keyboard at 0xa003c00 (slot 30, no EV_ABS) +[virtio-input] Keyboard device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 78 for keyboard +[virtio-input] Keyboard initialized (64 buffers) +[virtio-input] Slot 31 at 0xa003e00: device_id=16 +[boot] VirtIO keyboard initialized +[boot] Initializing per-CPU data... +[boot] Per-CPU data initialized +[boot] Initializing process manager... +[boot] Process manager initialized +[boot] Initializing scheduler... +[boot] Scheduler initialized +[boot] Workqueue subsystem initialized +[boot] Softirq subsystem initialized +[boot] Render thread spawned (tid=4) +[boot] Tracing subsystem initialized and enabled +[boot] Pre-loading /sbin/init from ext2 (before timer)... +[net] ICMP echo reply received from 10.0.2.2 seq=1 +[boot] Init binary pre-loaded: 298664 bytes +[xhci] post-activation: MSI_EVENT_COUNT=0 EVENT_COUNT=0 POLL_COUNT=0 SPI_ACTIVATED=false +[boot] Initializing timer interrupt... +[timer] Timer configured for ~1000 Hz (1000000 ticks per interrupt) +[timer] Using virtual timer (PPI 27) +[boot] Timer interrupt initialized +[smp] CPU 0 MPIDR=0x80000000, stack_base=0x43000000 +[smp] Probing secondary CPUs via PSCI... +[smp] CPU 1: PSCI C1@PU_ON s1uccess (raw_statuAs=B0) +C[smp] 2D@1ACPU BCDEE2: PeSeFCI CGPU_ON 1succeFGss2 (raw_status=0) +3@1[smpA] CPU 3: PSCI BCCPUD_ON sEeFuccesG3s (raw_status=0) +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[smp] CPU 4 attempt 1/4: HVC64 failed (ret=-2), trying HVC32... +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=T1) +1[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[smp] PSCI CPU_ON failed for CPU 4 after 1 attempts: ret=-2 (MPIDR=0x4 entry=0x400802b8) +[smp] CPU 4: PSCI CPU_ON failed (ret=-2), stopping probe +[smp] initialization_watchdog gap_ms=301 local_ceiling_ms=15000 margin_ms=3000 effective_ceiling_ms=20000 +[smp] 4 CPUs online +[boot] Running parallel boot tests... +T2T3[BOOT_TESTS:START] +[STAGE:serial:ADVANCE] +[BOOT_TESTS:TOTAL:118] +[BOOT_TESTS:SERIAL_BOOT:3] +[BOOT_TESTS:EARLY_BOOT:91] +[BOOT_TESTS:STAGED:27 tests waiting for later stages] +T4T5T6T7T8T9[SUBSYSTEM:process:serial:START] +[TEST:process:frame_custody_refusal_gate:START] +T0[TEST:process:frame_custody_refusal_gate:PASS] +[TEST:process:page_table_custody_disposition_gate:START] +[EXEC_FAILED_RELEASE_ORACLE:aarch64:used_before=1:used_after=1:leaf_recorded=1:leaf_released=1:leaf_returned=1:tables_returned=4:roots_retired=1:live_refused=0] +[TEST:process:page_table_custody_disposition_gate:PASS] +[TEST:process:block_current_departure_gate:START] +[TEST:process:block_current_departure_gate:PASS] +[SUBSYSTEM:process:serial:COMPLETE:3/3] +[STAGE:serial:COMPLETE:3/118] +[STAGE:early:ADVANCE] +[SUBSYSTEM:memory:early:START] +[TEST:memory:framework_sanity:START] +[SUBSYSTEM:scheduler:early:START] +[TEST:scheduler:wakes_are_placed_on_online_cpus:START] +[TEST:memory:framework_sanity:PASS] +[TEST:scheduler:wakes_are_placed_on_online_cpus:PASS] +[SUBSYSTEM:filesystem:early:START] +[TEST:filesystem:vfs_init:START] +[TEST:filesystem:vfs_init:PASS] +[TEST:memory:heap_alloc_basic:START] +[TEST:memory:heap_alloc_basic:PASS] +[TEST:scheduler:executor_exists:START] +[TEST:scheduler:executor_exists:PASS] +[SUBSYSTEM:network:early:START] +[TEST:network:network_stack_init:START] +[TEST:network:network_stack_init:PASS] +[SUBSYSTEM:syscall:early:START] +[TEST:syscall:syscall_dispatch:START] +[SUBSYSTEM:interrupts:early:START] +[TEST:syscall:syscall_dispatch:PASS] +[TEST:interrupts:interrupt_controller_init:START] +[TEST:interrupts:interrupt_controller_init:PASS] +[SUBSYSTEM:process:early:START] +[TEST:process:deferred_fault_ring_overflow_injection:START] +[TEST:process:deferred_fault_ring_overflow_injection:PASS] +[SUBSYSTEM:logging:early:START] +[TEST:logging:logging_init:START] +[TEST:logging:logging_init:PASS] +[SUBSYSTEM:system:early:START] +[TEST:system:boot_sequence:START] +[SUBSYSTEM:ipc:early:START] +[TEST:system:boot_sequence:PASS] +[TEST:ipc:pipe_buffer_basic:START] +[TEST:ipc:pipe_buffer_basic:PASS] +[SUBSYSTEM:timer:early:START] +[TEST:timer:timer_init:START] +[TEST:timer:timer_init:PASS] +[TEST:memory:frame_allocator:START] +[TEST:memory:frame_allocator:PASS] +[TEST:scheduler:async_waker:START] +[TEST:scheduler:async_waker:PASS] +[TEST:memory:heap_large_alloc:START] +[TEST:process:process_manager_init:START] +[TEST:process:process_manager_init:PASS] +[TEST:memory:heap_large_alloc:PASS] +[TEST:network:virtio_net_probe:START] +[TEST:network:virtio_net_probe:PASS] +[TEST:process:scheduler_init:START] +[TEST:process:scheduler_init:PASS] +[TEST:network:socket_creation:START] +[TEST:network:socket_creation:PASS] +[TEST:logging:log_levels:START] +[TEST:logging:log_levels:PASS] +[TEST:memory:heap_many_small:START] +[TEST:memory:heap_many_small:PASS] +[TEST:syscall:arm64_pty_ioctl_path:START] +manager.create_process [ARM64]: ENTRY - name='pty_ioctl_test', elf_size=276816 +manager.create_process [ARM64]: Generated PID 2 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x4000e0b0 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x40017000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4401e000-0x4402e000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4401e000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 2 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 2 +[TEST:syscall:arm64_pty_ioctl_path:PASS] +[TEST:process:thread_creation:START] +[TEST:scheduler:future_basics:START] +[TEST:scheduler:future_basics:PASS] +[TEST:logging:serial_output:START] +[LOGGING_TEST] Serial test ARM64 +[TEST:logging:serial_output:PASS] +[TEST:interrupts:irq_enable_disable:START] +[TEST:interrupts:irq_enable_disable:PASS] +[SUBSYSTEM:logging:early:COMPLETE:3/3] +[TEST:process:thread_creation:PASS] +[TEST:interrupts:timer_interrupt_running:START] +[TEST:interrupts:timer_interrupt_running:PASS] +[TEST:syscall:arm64_socket_reset_quantum:START] +[TEST:syscall:arm64_socket_reset_quantum:PASS] +[TEST:interrupts:keyboard_irq_setup:START] +[TEST:interrupts:keyboard_irq_setup:PASS] +[TEST:filesystem:devfs_mounted:START] +[TEST:filesystem:devfs_mounted:PASS] +[SCHED_STRAND_ORACLE:aarch64:samples=10:checked=129:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=0:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=360:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=0:reap_second=0:retire_second=0:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=0:kernel=24:cleared=24] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TEST:network:tcp_socket_creation:START] +[TEST:network:tcp_socket_creation:PASS] +[TEST:filesystem:file_open_close:START] +[TEST:filesystem:file_open_close:PASS] +[TEST:memory:cow_flags_aarch64:START] +[TEST:memory:cow_flags_aarch64:PASS] +[SUBSYSTEM:syscall:early:COMPLETE:3/3] +[TEST:timer:timer_ticks:START] +[TEST:timer:timer_ticks:PASS] +[TEST:system:system_stability:START] +[TEST:system:system_stability:PASS] +[TEST:process:signal_delivery_infrastructure:START] +[TEST:process:signal_delivery_infrastructure:PASS] +[SUBSYSTEM:scheduler:early:COMPLETE:4/4] +[TEST:filesystem:directory_list:START] +[TEST:filesystem:directory_list:PASS] +[TEST:ipc:pipe_eof:START] +[TEST:ipc:pipe_eof:PASS] +[TEST:filesystem:filesystem_syscalls_aarch64:START] +[TEST:network:loopback:START] +[TEST:network:loopback:PASS] +[TEST:ipc:pipe_broken:START] +[TEST:ipc:pipe_broken:PASS] +[TEST:filesystem:filesystem_syscalls_aarch64:PASS] +[TEST:network:loopback_wake_loss_counters_are_zero:START] +[TEST:network:loopback_wake_loss_counters_are_zero:PASS] +[TEST:interrupts:exception_vectors:START] +[TEST:interrupts:exception_vectors:PASS] +[TEST:filesystem:virtio_blk_multi_read:START] +[virtio-blk] Starting multi-read stress test (10 reads)... +[virtio-blk] Read 1 of 10 complete +[virtio-blk] Read 2 of 10 complete +[virtio-blk] Read 3 of 10 complete +[virtio-blk] Read 4 of 10 complete +[virtio-blk] Read 5 of 10 complete +[virtio-blk] Read 6 of 10 complete +[virtio-blk] Read 7 of 10 complete +[virtio-blk] Read 8 of 10 complete +[virtio-blk] Read 9 of 10 complete +[virtio-blk] Read 10 of 10 complete +[virtio-blk] Multi-read stress test passed! +[TEST:filesystem:virtio_blk_multi_read:PASS] +[TEST:interrupts:exception_handlers:START] +[TEST:interrupts:exception_handlers:PASS] +[TEST:system:kernel_heap:START] +[TEST:system:kernel_heap:PASS] +[TEST:filesystem:virtio_blk_sequential_read:START] +[virtio-blk] Testing sequential read of sectors 0-31... +[virtio-blk] Read sectors 0-7 OK (avail_idx wrap count: 0) +[TEST:memory:guard_page_exists:START] +[TEST:memory:guard_page_exists:PASS] +[TEST:process:arm64_signal_frame_conversion:START] +[TEST:process:arm64_signal_frame_conversion:PASS] +[virtio-blk] Read sectors 0-15 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-23 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-31 OK (avail_idx wrap count: 2) +[virtio-blk] Sequential read test passed! (32 sectors, 2 queue wraps) +[TEST:filesystem:virtio_blk_sequential_read:PASS] +[TEST:interrupts:breakpoint:START] +[exception] Breakpoint (BRK #0) at 0xffff0000405480f8 +[TEST:interrupts:breakpoint:PASS] +[TEST:system:tty_foreground_pgrp:START] +[TEST:system:tty_foreground_pgrp:PASS] +[TEST:filesystem:virtio_blk_write_read_verify:START] +[virtio-blk] Testing write-read-verify cycle... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Reading original data from sector 1000... +[virtio-blk] Original first 16 bytes: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00] +[virtio-blk] Test pattern first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Writing test pattern to sector 1000... +[virtio-blk] Write succeeded +[virtio-blk] Reading back sector 1000... +[virtio-blk] Readback first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Restoring original data to sector 1000... +[virtio-blk] Write-read-verify test passed! All 512 bytes match. +[TEST:filesystem:virtio_blk_write_read_verify:PASS] +[TEST:interrupts:softirq_aarch64:START] +[TEST:interrupts:softirq_aarch64:PASS] +[SUBSYSTEM:process:early:COMPLETE:6/6] +[SUBSYSTEM:interrupts:early:COMPLETE:8/8] +[TEST:filesystem:virtio_blk_invalid_sector:START] +[virtio-blk] Testing invalid sector read... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Invalid sector correctly rejected: Sector out of range +[virtio-blk] Invalid sector test passed! +[TEST:filesystem:virtio_blk_invalid_sector:PASS] +[TEST:network:loopback_recv_wake_when_idle:START] +[TEST:timer:timer_delay:START] +[SUBSYSTEM:system:early:COMPLETE:4/4] +[TEST:timer:timer_delay:PASS] +[TEST:filesystem:virtio_blk_uninitialized_read:START] +[virtio-blk] Testing uninitialized device handling... +[virtio-blk] Device is initialized (expected during normal boot) +[virtio-blk] Verified: read_sector checks BLOCK_DEVICE.is_none() and returns error +[virtio-blk] Uninitialized test passed (device was already initialized)! +[TEST:filesystem:virtio_blk_uninitialized_read:PASS] +[TEST:memory:stack_layout:START] +[TEST:memory:stack_layout:PASS] +[SUBSYSTEM:filesystem:early:COMPLETE:10/10] +[TEST:timer:timer_monotonic:START] +[TEST:timer:timer_monotonic:PASS] +[TEST:memory:stack_allocation:START] +[TEST:memory:stack_allocation:PASS] +[TEST:ipc:pipe_wake_mechanism:START] +[TEST:ipc:pipe_wake_mechanism:PASS] +[TEST:memory:user_stack_base:START] +[TEST:memory:user_stack_base:PASS] +[TEST:ipc:fd_table_creation:START] +[TEST:ipc:fd_table_creation:PASS] +[TEST:memory:user_stack_size:START] +[TEST:memory:user_stack_size:PASS] +[TEST:ipc:fd_alloc_close:START] +[TEST:ipc:fd_alloc_close:PASS] +[TEST:timer:timer_quantum_reset_aarch64:START] +[TEST:timer:timer_quantum_reset_aarch64:PASS] +[TEST:memory:user_stack_top:START] +[TEST:memory:user_stack_top:PASS] +[TEST:ipc:create_pipe:START] +[TEST:ipc:create_pipe:PASS] +[TEST:memory:user_stack_guard:START] +[TEST:memory:user_stack_guard:PASS] +[TEST:timer:ring_span_report:START] +[TEST:ipc:pty_support_aarch64:START] +[TEST:ipc:pty_support_aarch64:PASS] +[TEST:memory:user_stack_alignment:START] +[TEST:memory:user_stack_alignment:PASS] +[SUBSYSTEM:ipc:early:COMPLETE:8/8] +[TEST:memory:kernel_stack_base:START] +[TEST:memory:kernel_stack_base:PASS] +[TEST:memory:kernel_stack_size:START] +[TEST:memory:kernel_stack_size:PASS] +[TEST:memory:kernel_stack_top:START] +[TEST:memory:kernel_stack_top:PASS] +[TEST:memory:kernel_stack_guard:START] +[TEST:memory:kernel_stack_guard:PASS] +[TEST:memory:kernel_stack_alignment:START] +[TEST:memory:kernel_stack_alignment:PASS] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=when_idle:budget_ms=200:elapsed_tick_ms=131:elapsed_ctr_ms=201:ctx_delta=131:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x0:cpu_silence_ms=960:silence_cpu=0:woke_ms=830:verdict=ok] +[TEST:network:loopback_recv_wake_when_idle:PASS] +[TEST:memory:stack_in_range:START] +[TEST:memory:stack_in_range:PASS] +[TEST:memory:stack_grows_down:START] +[TEST:memory:stack_grows_down:PASS] +[TEST:network:loopback_recv_wake_under_load:START] +[TEST:memory:stack_depth:START] +[TEST:memory:stack_depth:PASS] +[TEST:memory:stack_frame_size:START] +[TEST:memory:stack_frame_size:PASS] +[TEST:memory:stack_red_zone:START] +[TEST:memory:stack_red_zone:PASS] +[SUBSYSTEM:memory:early:COMPLETE:24/24] +[RING_SPAN:cpu=0:span_ms=1497:writes=532:dropped=0:ticks_total=3983:tick_events=62] +[TEST:timer:ring_span_report:PASS] +[SUBSYSTEM:timer:early:COMPLETE:6/6] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=under_load:budget_ms=200:elapsed_tick_ms=128:elapsed_ctr_ms=200:ctx_delta=273:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x8:cpu_silence_ms=1105:silence_cpu=0:woke_ms=980:verdict=ok] +[TEST:network:loopback_recv_wake_under_load:PASS] +[TEST:network:loopback_pump_does_not_busy_spin:START] +[TEST:network:loopback_pump_does_not_busy_spin:PASS] +[TEST:network:tcp_final_ack_survives_accept_publish_race:START] +[TEST:network:tcp_final_ack_survives_accept_publish_race:PASS] +[TEST:network:arm64_net_softirq_registration:START] +[TEST:network:arm64_net_softirq_registration:PASS] +[TEST:network:net_lock_guard_masks_interrupt_source:START] +[TEST:network:net_lock_guard_masks_interrupt_source:PASS] +[SUBSYSTEM:network:early:COMPLETE:12/12] +[STAGE:early:COMPLETE:91/118] +[STAGE:sched:ADVANCE] +[SUBSYSTEM:scheduler:sched:START] +[TEST:scheduler:kthread_spawn_verify:START] +[SUBSYSTEM:filesystem:sched:START] +[TEST:filesystem:block_wedge_oracle:START] +[SUBSYSTEM:process:sched:START] +[TEST:process:fork_exit_defer_reclaim_pairing_test:START] +[TEST:scheduler:kthread_spawn_verify:PASS] +[BLOCK_WEDGE_ORACLE:locked=1:wedged=1:refused=1:parked=0:refuse_ms=0] +[TEST:filesystem:block_wedge_oracle:PASS] +[TEST:scheduler:workqueue_operational:START] +[TEST:scheduler:workqueue_operational:PASS] +[SUBSYSTEM:filesystem:sched:COMPLETE:1/1] +[SUBSYSTEM:scheduler:sched:COMPLETE:2/2] +[PT_RETIRE_ORACLE:aarch64:cycles=64:used_before=53:used_after=53:expected_tables=9:roots=64:returned=640:lost=0:kstack_returns=64] +[PT_LEAF_ORACLE:aarch64:cycles=64:expected=192:recorded=192:released=192:returned=192:live_refused=0:used_before=53:used_after=53] +[TEST:process:fork_exit_defer_reclaim_pairing_test:PASS] +[TEST:process:exec_detach_oracle:START] +manager.create_process [ARM64]: ENTRY - name='exec_detach_leader', elf_size=180 +manager.create_process [ARM64]: Generated PID 69 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4404c000-0x4405c000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4404c000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 69 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 69 +[EXEC_DETACH_ORACLE:aarch64:bodies=2:fail_preserved=2:sibling_refused=2:success_detached=2:fresh_root=2:tgid_self=2:custody_balance=0:leaf_residual=16:stack_residual=18:kstack_frames_released=0:old_group_reached_pre=2:old_group_missed_post=2:self_group_reached_post=2] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:clone_admission_oracle:START] +[CLONE_ADMISSION_ORACLE:aarch64:admitted=1:refused=2:creating_refused=1:published_admitted=2:balance=0] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:init_designation_oracle:START] +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a1', elf_size=8, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a2', elf_size=120, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +[INIT_DESIGNATION_ORACLE:aarch64:construct_failed=2:construct_undecided=0:construct_residual=0:construct_roots_retired=2:construct_leaf_balance=0:construct_commit_balance=0:refused=4:accepted=1:published=1:retired=1:held_error_removals=1:reparented=1:reparent_skipped=1:ordinary_allocated=5:reserved_collisions=0:designation_balance=0] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_group_refusal_oracle:START] +[INIT_GROUP_REFUSAL_ORACLE:aarch64:none_probes=3:none_refusals=0:init_refused=1:alias_refused=1:alias_pid_refused=0:nonit_probes=2:nonit_refusals=0:rows_delta=0:refusal_counter_delta=0:designation_residual=0:balance=0] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:kernel_stack_ownership_oracle:START] +[CREATION_LOCK_ORDER:INJECTED:PM_HELD] +[KSTACK_OWNER_ORACLE:aarch64:creation_rows=1000:creation_owned=1000:one_owner=1000:two_owner=0:zero_owner=0:fork_rows=1:fork_owned=1:slot_returns_exact_one=1:slot_alloc_delta=1000:slot_free_delta=1000:slot_balance=0:cohort_enrolled=1000:cohort_returned=1000:cohort_double_return=0:foreign_alloc_delta=0:foreign_returned=0:frames_mapped_delta=0:frames_released_delta=0:frame_balance=0:frame_used_delta=0:frame_used_bounded=1:live_checks=1106:live_refusals_production=0:live_refusals_injected=1:drop_refused_live=0:pte_overwrite_refusals=0:pub_pooled=1073:pub_sched_owned=1073:pub_row_residual=0:pub_unowned=0:classifier_sched_owned=1:classifier_row_residual=1:classifier_unowned=1:classifier_not_pooled=1:sched_publications=28:sched_pm_held_production=0:sched_pm_held_injected=1:reconciliation_diff=0:reconciliation_skew_bound=6:balance=0] +[TEST:process:kernel_stack_ownership_oracle:PASS] +[TEST:process:creating_dispatch_refusal:START] +manager.create_process [ARM64]: ENTRY - name='creating_dispatch_probe', elf_size=180 +manager.create_process [ARM64]: Generated PID 86 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x44059000-0x44069000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x44059000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 86 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 86 +[CREATING_DISPATCH_ORACLE_DIAG:aarch64:refusal_delta=2:leaf_residual=16:user_stack_residual=16:balance=0:settle_rounds=3:root=0x44042000:root_release_done=1:probe_hw_clear=1:probe_shadow_clear=1:probe_cached_clear=1:retire_hw_blocked=0:retire_shadow_blocked=0:retire_cached_blocked=0] +[CREATING_DISPATCH_ORACLE:aarch64:injected=1:refused_via_dispatch=1:requeue_retried=1:dispatched_after_publish=1:balance=0:leaf_residual=16:user_stack_residual=16] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:tombstone_join_oracle:START] +[TOMBSTONE_JOIN_ORACLE:aarch64:retire_second=1:reap_second=1:removed=2:resident_delta=0:tombstone_rows=0:PASS] +[TEST:process:tombstone_join_oracle:PASS] +[TEST:process:retirement_fence_gate:START] +[TEST:process:retirement_fence_gate:PASS] +[TEST:process:reclaim_progress_gate:START] +[TEST:process:reclaim_progress_gate:PASS] +[TEST:process:exit_kick_protocol_gate:START] +[exit_kick_gate] budget_anchor=test_phase anchor_age_at_gate_entry_ms=2248 budget_ms=60000 gate_ceiling_ms=45000 +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=1] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=1] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=1] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=3] +[TEST:process:exit_kick_protocol_gate:PASS] +[TEST:process:exit_kick_worker_window_isolation:START] +[exit_kick_worker_isolation] budget_anchor=test_phase anchor_age_at_entry_ms=2282 budget_ms=60000 scenario_ceiling_ms=1500 +[exit_kick_worker_isolation] scenario=before_union_worker_1 start=1 +[exit_kick_gate] wait=before_union_worker_1 breadcrumb=1 elapsed_ms=1000 progress_work=43 progress_exit=0 re_kick_sgis=57 +[STRAND_INJECT_ORACLE:aarch64:legA_exercised=1:legA_recovered=1:legB_exercised=1:legB_recovered=1:stranded=0] +[exit_kick_gate] wait=before_union_worker_1 cause=absolute_ceiling elapsed_ms=1500 window_budget_ms=1500 re_kick_sgis=87 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=5 progress_work_final=63 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=31 worker_3_progress_start=2 worker_3_progress_final=31 last_advance_ms_ago=30 late_true=0 +[exit_kick_worker_isolation] scenario=before_union_worker_1 elapsed_ms=1504 cause=absolute_ceiling target=none progress=[1, 31, 31] completed=6 joined=3 +[exit_kick_worker_isolation] scenario=after_worker_1 start=1 +[exit_kick_gate] wait=after_worker_1 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=0 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_1 elapsed_ms=801 cause=no_progress target=worker_1 progress=[1, 17, 17] completed=6 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 1 made no progress +[exit_kick_worker_isolation] scenario=after_worker_2 start=1 +[exit_kick_gate] wait=after_worker_2 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=1 worker_2_progress_final=1 worker_3_progress_start=0 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_2 elapsed_ms=801 cause=no_progress target=worker_2 progress=[17, 1, 17] completed=5 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 2 made no progress +[exit_kick_worker_isolation] scenario=after_worker_3 start=1 +[SCHED_STRAND_ORACLE:aarch64:samples=107:checked=618:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=3618:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=2941:cleared=2944] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[exit_kick_gate] wait=after_worker_3 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=0 worker_3_progress_final=1 last_advance_ms_ago=799 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_3 elapsed_ms=802 cause=no_progress target=worker_3 progress=[17, 17, 1] completed=3 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 3 made no progress +[exit_kick_worker_isolation] scenario=after_healthy start=1 +[exit_kick_worker_isolation] scenario=after_healthy elapsed_ms=2 cause=success target=none progress=[2, 2, 2] completed=7 joined=3 +[exit_kick_worker_isolation] healthy_baseline=PASS +[exit_kick_worker_isolation] fixture_elapsed_ms=4030 +[TEST:process:exit_kick_worker_window_isolation:PASS] +[TEST:process:exit_kick_budget_anchor_isolation:START] +[exit_kick_budget_anchor] pre_test_delay_ms=1216 fixture_budget_ms=1000 fixture_gate_ceiling_ms=600 +[exit_kick_budget_anchor] scenario=inherited_kernel_entry_anchor anchor=inherited cause=phase_one_ceiling target=none elapsed_ms=0 budget_age_at_entry_ms=1218 +[exit_kick_budget_anchor] scenario=test_phase_entry_anchor anchor=test_phase cause=no_progress target=worker_1 elapsed_ms=404 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] scenario=gate_window_exhaustion anchor=test_phase cause=gate_ceiling target=none elapsed_ms=606 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] fixture_elapsed_ms=2234 +[TEST:process:exit_kick_budget_anchor_isolation:PASS] +[TEST:process:census_widen_oracle:START] +[CENSUS_WIDEN_ORACLE:aarch64:arm_target=0:baseline_reported=0:armed_reported=1:tid=1215:shape=ready_queued_nondispatching:queued_nondispatching=1:queued_nondispatch_ms=5618:cpu_silence_ms=5618:joined=1:retired=1:PASS] +[TEST:process:census_widen_oracle:PASS] +[SUBSYSTEM:process:sched:COMPLETE:14/14] +[STAGE:sched:COMPLETE:108/118] +[boot] All boot tests passed! +[PT_ROOT_CUSTODY:no_proof=2:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=79] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=4430:cleared=4433] +[PIN_GUARD_ORACLE:aarch64:home=1:here=0:reclaim=1:requeue=1:previous=1:on_home=3:refused=3:census_clean=1:verdict=PASS] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TIMER_WAKE_LATENCY_ORACLE:aarch64:sleep_ms=10:peers=8:overrun_ms=3:bound_ms=100:quantum_ms=10:round_ms=80:wake_enqueues=1:peers_started=8:peers_spinning=8:backstops=0:setup_ms=5:window_ms=25:measured=1:PASS] + +======================================== + Breenix ARM64 Boot Complete! +======================================== + +Hello from ARM64! + +[boot] Launching init from pre-loaded ELF... +manager.create_process_with_argv [ARM64]: ENTRY - name='init', elf_size=298664, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f5d0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 1 +[INIT_DESIGNATION:aarch64:designated_pid=1:reserved_collisions=0] +[STAGE:proc:ADVANCE] +[SUBSYSTEM:ipc:proc:START] +[TEST:ipc:telnetd_dependencies_aarch64:START] +[TEST:ipc:telnetd_dependencies_aarch64:PASS] +[SUBSYSTEM:process:proc:START] +[TEST:process:current_thread_exists:START] +[TEST:process:current_thread_exists:PASS] +[SUBSYSTEM:syscall:proc:START] +[TEST:syscall:fcntl_pm_contention_oracle:START] +[SUBSYSTEM:ipc:proc:COMPLETE:1/1] +[TEST:process:process_list_populated:START] +[TEST:process:process_list_populated:PASS] +[TEST:process:frame_custody_healthy_counters:START] +[TEST:process:frame_custody_healthy_counters:PASS] +[FCNTL_PM_CONTENTION_ORACLE:aarch64:arm_wait_us=96:armed=1:acquired=1:holder_cpu=1:pm_busy_probe=1:calls=64:eagain=0:first_errno=9:first_wait_us=8082:hold_safety=0:hold_done=1:joined=1:PASS] +[SUBSYSTEM:process:proc:COMPLETE:3/3] +[TEST:syscall:fcntl_pm_contention_oracle:PASS] +[TEST:syscall:irq_hold_oracle:START] +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +[IRQ_HOLD_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12018:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:irq_hold_oracle:PASS] +[TEST:syscall:tty_irq_pm_oracle:START] +[TTY_IRQ_PM_ORACLE:aarch64:fg_unset_before=1:pm_blocking_acquires=0:deferred=2:pgrp_set_by_entry=0:processed=2:buffered=2:irqs_enabled_before=1:holder_cpu=1:pm_busy_probe=1:hold_us=20000:entry_us=3:joined=1:adopted=1:adopted_pgrp=821:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_pm_oracle:PASS] +[TEST:syscall:tty_irq_fg_oracle:START] + +[TTY_IRQ_FG_ORACLE:aarch64:fg_known=822:target_absent=1:fg_lock_touches=0:fg_blocking_acquires=0:snapshot_reads=3:processed=2:buffered=1:irqs_enabled_before=1:holder_cpu=1:fg_busy_probe=1:hold_us=20001:entry_us=130:joined=1:sig_calls=1:sig_pid=822:sig_num=2:snapshot_agrees=1:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_fg_oracle:PASS] +[TEST:syscall:udp_socket_lock_oracle:START] +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +[UDP_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12017:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_socket_lock_oracle:PASS] +[TEST:syscall:udp_ports_lock_oracle:START] +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +[UDP_PORTS_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:driver_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=21:hold_us=12016:refused=8:delivered=13:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_ports_lock_oracle:PASS] +[SUBSYSTEM:syscall:proc:COMPLETE:6/6] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[boot] Reset 4 idle thread contexts (CPUs online: 4) +EL0_SYSCALL: First syscall from userspace (SPSR confirms EL0) +[ OK ] syscall path verified +[STAGE:user:ADVANCE] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[USER_RSP_SCRATCH_EL_CENSUS:el0_installs=2:el1_skipped=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[init] Breenix init starting (PID 1) +[spawn] path='/bin/heartbeat' +manager.create_process_with_argv [ARM64]: ENTRY - name='heartbeat', elf_size=303616, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 90 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f85c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 90 +[spawn] Created child PID 90 for parent PID 1 +[spawn] Success: child PID 90 scheduled +[init] heartbeat started (PID 90) +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=1:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=2:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=early:probe1=-22:probe2=-22:expected=-22] +[heartbeat] tid=1236 uptime_ms=9610 kbd_nonzero=0 +[spawn] path='/bin/block_eintr_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='block_eintr_oracle', elf_size=304752, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 91 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f938 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 91 +[spawn] Created child PID 91 for parent PID 1 +[spawn] Success: child PID 91 scheduled +F123456789SC[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=417:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=5:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=1158:kstack=0:uva=5:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=1158:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=417:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=417:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=4:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el0:text=0:kstack=0:uva=5:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el1-restore-frame-elr:text=1965:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-restore-frame-elr:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=ctx-x30:text=2018:kstack=1:uva=2:smallint=149:other=10] +[RESUME_PC_CENSUS:cpu=1:source=ctx-elr-el1:text=2178:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el1:text=1801:kstack=2:uva=0:smallint=150:other=9] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el1:text=1805:kstack=1:uva=0:smallint=149:other=10] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el0:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el0:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el1-restore-frame-elr:text=2296:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-restore-frame-elr:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=ctx-x30:text=2284:kstack=0:uva=2:smallint=225:other=11] +[RESUME_PC_CENSUS:cpu=2:source=ctx-elr-el1:text=2520:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el1:text=2064:kstack=0:uva=0:smallint=225:other=11] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el1:text=2060:kstack=0:uva=0:smallint=225:other=11] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el0:text=0:kstack=0:uva=2:smallint=0:other=0] +[syscall] exit(0) pid=92 name=block_eintr_oracle_child_92 +[TTBR0_ASID_CENSUS:untagged=0:tagged=2248:kernel=7079:cleared=9306] +[heartbeat] tid=1236 uptime_ms=10614 kbd_nonzero=0 +[SCHED_STRAND_ORACLE:aarch64:samples=206:checked=938:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5611:worst_cpu_scheduler_silence_ms=5673:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=4396:kernel=9508:cleared=13863] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +F123456789SC[heartbeat] tid=1236 uptime_ms=11615 kbd_nonzero=0 +[syscall] exit(0) pid=93 name=block_eintr_oracle_child_93 +[TTBR0_ASID_CENSUS:untagged=0:tagged=6544:kernel=11893:cleared=18367] +[heartbeat] tid=1236 uptime_ms=12616 kbd_nonzero=0 +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[syscall] exit(0) pid=91 name=block_eintr_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=10591:kernel=16467:cleared=26951] +[init] block_eintr_oracle exited pid=91 code=0 +[spawn] path='/bin/futex_handoff_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='futex_handoff_oracle', elf_size=291984, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 94 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000ef08 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 94 +[spawn] Created child PID 94 for parent PID 1 +[spawn] Success: child PID 94 scheduled +[FUTEX_HANDOFF_ORACLE:aarch64:driven=2:stage1_ret=EAGAIN:stage1_wake=0:stage1_parked=0:stage2_ret=0:stage2_wake=1:stage2_parked=0:stage3_ret=ETIMEDOUT:stage3_elapsed_ok=1:stage3_elapsed_ms=50:arm_delay_us=37:rescues=0:queue_residual=0:balance=0] +[FUTEX_HANDOFF_ORACLE_DRIVER:s1=-11:s2=0:s3=-110] +[syscall] exit(0) pid=94 name=futex_handoff_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=11482:kernel=17491:cleared=28858] +[init] futex_handoff_oracle exited pid=94 code=0 +[spawn] path='/bin/poll_tcp_oracle' +[heartbeat] tid=1236 uptime_ms=13619 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='poll_tcp_oracle', elf_size=307952, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 95 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001050c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 95 +[spawn] Created child PID 95 for parent PID 1 +[spawn] Success: child PID 95 scheduled +[POLL_TCP_TIMEOUT] fd=4 timeout_ms=120 publish=none_in_window rx_len=0 revents=0x0000 +F123456789SC[syscall] exit(0) pid=96 name=poll_tcp_oracle_child_96 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12660:kernel=18745:cleared=31260] +F123456789SC[syscall] exit(0) pid=97 name=poll_tcp_oracle_child_97 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12819:kernel=18900:cleared=31563] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=123:late_ms=161:park_ms=160:attempts=2] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=123:late_ms=161:park_ms=160:attempts=2] +[syscall] exit(0) pid=95 name=poll_tcp_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=12833:kernel=18912:cleared=31585] +[init] poll_tcp_oracle exited pid=95 code=0 +[spawn] path='/bin/tty_oracle' +[heartbeat] tid=1236 uptime_ms=14620 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='tty_oracle', elf_size=338264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 98 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40012b34 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 98 +[spawn] Created child PID 98 for parent PID 1 +[spawn] Success: child PID 98 scheduled +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=3 (pty 2) +[pty] Unlocked PTY 2 (fd 3) +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=98:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=98:crossed_ends=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +F123456789SC[EXEC_LOCK_ORDER:FIRST_COMMIT] +[EXEC_LOCK_ORDER:commits=1:pm_held=0:unpinned=0:missing=0] +[syscall] exit(0) pid=99 name=/bin/tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=15438:kernel=21790:cleared=37007] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[syscall] exit(0) pid=98 name=tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=15446:kernel=21794:cleared=37018] +[init] tty_oracle exited pid=98 code=0 +[spawn] path='/bin/exec_smoke' +manager.create_process_with_argv [ARM64]: ENTRY - name='exec_smoke', elf_size=290928, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 100 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000eb40 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 100 +[spawn] Created child PID 100 for parent PID 1 +[spawn] Success: child PID 100 scheduled +[EXEC_SMOKE:LAUNCH] +[heartbeat] tid=1236 uptime_ms=15624 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=2:pm_held=0:unpinned=0:missing=0] +[EXEC_SMOKE:TARGET_ENTER argc=2] +[SCHED_STRAND_ORACLE:aarch64:samples=305:checked=1208:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5611:worst_cpu_scheduler_silence_ms=5673:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=9:reap_second=8:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=17233:kernel=23850:cleared=40840] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[EXEC_SMOKE:TARGET_OK] +[syscall] exit(0) pid=100 name=/bin/exec_smoke_target +[TTBR0_ASID_CENSUS:untagged=0:tagged=17251:kernel=23866:cleared=40873] +[EXEC_SMOKE:LAUNCHER_EXIT code=0] +[spawn] path='/usr/local/test/bin/clonevm_exec_test' +manager.create_process_with_argv [ARM64]: ENTRY - name='clonevm_exec_test', elf_size=289672, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 101 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f63c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 101 +[spawn] Created child PID 101 for parent PID 1 +[spawn] Success: child PID 101 scheduled +CLONEVM_EXEC_TEST: start +CLONEVM_EXEC_TEST: child live +CLONEVM_EXEC_TEST: live sibling refused exec +[syscall] exit(0) pid=102 name=thread-102 +[TTBR0_ASID_CENSUS:untagged=0:tagged=20491:kernel=26606:cleared=46299] +CLONEVM_EXEC_TEST: child exited +[heartbeat] tid=1236 uptime_ms=16627 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=3:pm_held=0:unpinned=0:missing=0] +CLONEVM_EXEC_TEST: second stage +[syscall] exit(0) pid=103 name=thread-103 +[TTBR0_ASID_CENSUS:untagged=0:tagged=21541:kernel=27735:cleared=48413] +CLONEVM_EXEC_TEST: post-exec rendezvous complete +CLONEVM_EXEC_TEST: post-exec futex keys derived +CLONEVM_EXEC_TEST: PASS +[syscall] exit(0) pid=101 name=/usr/local/test/bin/clonevm_exec_test +[TTBR0_ASID_CENSUS:untagged=0:tagged=21553:kernel=27745:cleared=48433] +[init] clonevm_exec_test exited pid=101 code=0 +[spawn] path='/bin/bsshd' +[heartbeat] tid=1236 uptime_ms=17628 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='bsshd', elf_size=455240, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 104 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001d6c0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 104 +[spawn] Created child PID 104 for parent PID 1 +[spawn] Success: child PID 104 scheduled +[init] bsshd started (PID 104) +[spawn] path='/bin/xhci_counters' +bsshd: starting on port 2222 +bsshd: listening on 0.0.0.0:2222 +manager.create_process_with_argv [ARM64]: ENTRY - name='xhci_counters', elf_size=292264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 105 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f140 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 105 +[spawn] Created child PID 105 for parent PID 1 +[spawn] Success: child PID 105 scheduled +[spawn] path='/bin/bwm' +[xhci-counters] XHCI_MSI_EVENT_TOTAL=0 +[xhci-counters] XHCI_IRQ_ENTRY_TOTAL=0 +[xhci-counters] XHCI_LOCK_CONTENDED_TOTAL=0 +[xhci-counters] KBD_NONZERO_TOTAL=0 +[syscall] exit(0) pid=105 name=xhci_counters +[TTBR0_ASID_CENSUS:untagged=0:tagged=24671:kernel=31323:cleared=55107] +[heartbeat] tid=1236 uptime_ms=18630 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='bwm', elf_size=428144, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 106 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40018bf8 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffee0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 106 +[spawn] Created child PID 106 for parent PID 1 +[spawn] Success: child PID 106 scheduled +[bwm] Breenix Window Manager starting... (v2-chromeless-skip) +[spawn] path='/sbin/telnetd' +manager.create_process_with_argv [ARM64]: ENTRY - name='telnetd', elf_size=298232, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 107 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f930 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 107 +[spawn] Created child PID 107 for parent PID 1 +[spawn] Success: child PID 107 scheduled +TELNETD_STARTING +TELNETD_LISTENING +[init] Boot script completed +[spawn] path='/bin/bounce' +[heartbeat] tid=1236 uptime_ms=19632 kbd_nonzero=0 +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=5546:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=280:smallint=0:other=0] +manager.create_process_with_argv [ARM64]: ENTRY - name='bounce', elf_size=388200, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 108 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x400188f4 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 108 +[spawn] Created child PID 108 for parent PID 1 +[spawn] Success: child PID 108 scheduled +[init] bounce started (PID 108) +[INIT_GROUP_WALK:aarch64:rows=12:init_tgid_rows=1:foreign_tgid_rows=0:refused=3:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=12:init_tgid_rows=1:foreign_tgid_rows=0:refused=4:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=quiesce:probe1=-22:probe2=-22:expected=-22] +Bounce spheres demo starting (for Gus!) [boot_id=00000004ac41beb8] +[init] Process 92 exited (code 0) +[init] Process 93 exited (code 0) +[init] Process 102 exited (code 0) +[init] Process 103 exited (code 0) +[init] Process 105 exited (code 0) +[window] create_window_buffer: 400x300 (480000 bytes, 118 pages) +[window] Created buffer id=1 for pid=108: 400x300 at virt=0x7ffffdf86000 phys=0x442d2000 +[bounce] Window mode: id=1 400x300 [boot_id=00000004ac41beb8] +[heartbeat] tid=1236 uptime_ms=20634 kbd_nonzero=0 +[PT_ROOT_CUSTODY:no_proof=14:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=82] +[TOMBSTONE_CENSUS:resident=0:removed=16:reap_second=15:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=29615:kernel=36893:cleared=65548] +[net-rx-counters] sample=1 begin +[net-rx-counters] sample=1 NET_RX_MSI_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_RING_DRAIN_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_FRAME_TOTAL: 3 (cpu0=3) +[net-rx-counters] sample=1 NET_RX_ARP_TOTAL: 2 (cpu0=2) +[net-rx-counters] sample=1 NET_RX_ETHERTYPE_OTHER_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_SOFTIRQ_ENTRY_TOTAL: 37 (cpu0=5, cpu1=7, cpu2=11, cpu3=14) +[net-rx-counters] sample=1 NET_RX_SOFTIRQ_EXIT_TOTAL: 37 (cpu0=5, cpu1=7, cpu2=11, cpu3=14) +[net-rx-counters] sample=1 NET_RX_REENTRANT_SKIP_TOTAL: 1 (cpu3=1) +[net-rx-counters] sample=1 NET_RX_GUARD_RELEASE_TOTAL: 36 (cpu0=5, cpu1=7, cpu2=11, cpu3=13) +[net-rx-counters] sample=1 NET_RX_REARM_CHECK_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_REARM_RACE_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_REARM_ARMED_TOTAL: 0 +[net-rx-counters] sample=1 NET_PCI_IRQ_RAISED_NETRX: 0 +[net-rx-counters] sample=1 GIC_SPI55_ACK_TOTAL: 0 +[net-rx-counters] sample=1 end +[bwm] ERROR: GPU compositing required +[syscall] exit(1) pid=106 name=bwm +[TTBR0_ASID_CENSUS:untagged=0:tagged=29617:kernel=36905:cleared=65564] +[init] Process 106 exited (code 1) +[SCHED_STRAND_ORACLE:aarch64:samples=404:checked=1484:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5611:worst_cpu_scheduler_silence_ms=5673:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=17:reap_second=16:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=29621:kernel=36965:cleared=65627] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[heartbeat] tid=1236 uptime_ms=21662 kbd_nonzero=0 +[heartbeat] tid=1236 uptime_ms=22664 kbd_nonzero=0 +[heartbeat] tid=1236 uptime_ms=23666 kbd_nonzero=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-2.qmp.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-2.qmp.txt new file mode 100644 index 000000000..f1067d3d2 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-2.qmp.txt @@ -0,0 +1 @@ +[QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-2.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-2.txt new file mode 100644 index 000000000..479452083 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/service/max/serial-2.txt @@ -0,0 +1,1080 @@ +EOS +======================================== + Breenix ARM64 Kernel Starting + BUILD_ID: 006a9f737534c7 +======================================== + +[CTX596_ORACLE:ARMED:force_eret=0] +[boot] DIAG_MARKER_XHCI_A +[boot] DIAG_MARKER_XHCI_B +[boot] DIAG_MARKER_XHCI_C +[boot] loader xhci_hcrst_raw=0x0 ecam=0x0 +[boot] Current exception level: EL1 +[boot] MMU already enabled (high-half kernel) +[boot] Initializing memory management (0x44000000-0x50000000)... +[boot] Memory management ready +[boot] Initializing Generic Timer... +[boot] Timer frequency: 1000000000 Hz (1000 MHz) +[boot] Initializing PL031 RTC... +[boot] Current timestamp: 7431000 +[boot] Initializing GIC... +[gic] GICR probe 0x080a0000: WAKER=0x00000006 <<< VALID +[gic] GICR base mismatch: loader=0x00000000, using=0x080a0000 +[gic] GICD_CTLR wrote 0x53, readback=0x53 +[gic] GICR_IGROUPR0: wrote 0xFFFFFFFF, readback=0xffffffff +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[boot] GIC initialized (version 3) +[boot] Enabling UART interrupts... +[boot] Enabling GIC IRQ 33 (UART0)... +[uart] IMSC: 0x0 -> 0x50 (verify: 0x50) +[uart] FR=0x90 (RXFE=1), RIS=0x20 +[gic] IRQ 33 state (GICv3): + enabled=true, group1=true, pending=false + priority=0xa0, GICD_CTLR=0x53 + ICC_PMR=0xf0 +[boot] UART interrupts enabled +[boot] Enabling interrupts... +[boot] Interrupts enabled: true +[boot] QEMU PCI ECAM configured at 0x4010000000 +[boot] Initializing device drivers... +[drivers] Initializing driver subsystem... +[drivers] Hybrid mode: VirtIO MMIO + PCI AHCI +[drivers] Found VirtIO MMIO device: network (ID=1, version=1) +[drivers] Found VirtIO MMIO device: block (ID=2, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: GPU (ID=16, version=1) +[drivers] Found 5 VirtIO MMIO devices +[virtio-blk] Searching for block devices... +[virtio-blk] Found block device 0 at 0xa003800 +[virtio-blk] Device 0 version: 1 +[virtio-blk] Device 0 capacity: 190464 sectors (93 MB) +[virtio-blk] Device 0 queue max size: 1024 +[virtio-blk] Device 0 using v1 (legacy) queue setup at PFN 0x40a60 +[virtio-blk] Block MMIO IRQ 76 enabled for device 0 +[virtio-blk] Block device 0 initialized successfully +[virtio-blk] Initialized 1 block device(s) +[drivers] VirtIO block driver initialized +[virtio-net] Searching for network device... +[virtio-net] Found network device at 0xa003600 (slot 27) +[virtio-net] Device version: 1 +[virtio-net] MAC address: 52:54:00:12:34:56 +[virtio-net] RX queue max size: 1024 +[virtio-net] TX queue max size: 1024 +[virtio-net] Network device initialized successfully +[virtio-net] Network device IRQ 75 (will enable after net init) +[drivers] VirtIO network driver initialized +[virtio-net] Device test - MAC: 52:54:00:12:34:56 +[virtio-net] Test passed! +[virtio-gpu] Searching for GPU device... +[virtio-gpu] Found GPU device at 0xa003e00 +[virtio-gpu] Device version: 1 +[virtio-gpu] Control queue max size: 1024 +[virtio-gpu] Display: 1280x800 +[virtio-gpu] GPU device initialized successfully +[drivers] VirtIO GPU driver initialized +[virtio-gpu] Device test - Display: 1280x800 +[virtio-gpu] Test passed! +[virtio-sound] Searching for sound device... +[drivers] VirtIO sound driver init failed: No VirtIO Sound device found +[drivers] Driver subsystem initialized (MMIO) +[drivers] PCI ECAM at 0x4010000000, enumerating PCI bus... +[drivers] Found 1 PCI devices +[pci] 00:00.0 [1b36:0008] class=06/00 +[drivers] AHCI PCI init failed: No AHCI controller found +[drivers] Driver subsystem initialized (hybrid MMIO+PCI) +[boot] Found 6 devices +[drivers] Running post-init self-tests... +[virtio-blk] Testing read of sector 0... +[virtio-blk] Sector 0 data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +[virtio-blk] Read test passed! +[boot] Initializing network stack... +[net] Initializing network stack... +[net] MAC address: 52:54:00:12:34:56 +NET: IP address: 10.0.2.15 +NET: Gateway: 10.0.2.2 +Network stack initialized +NET: Sending ARP request for gateway 10.0.2.2 +ARP request sent successfully +NET: Gateway ARP not resolved during init; will resolve via IRQ path +NET: Sending ICMP echo request to gateway 10.0.2.2 +NET: ARP cache miss for 10.0.2.2, sending ARP request +NET: Failed to send ping: ArpMiss: reply will populate cache via IRQ +NET: Network initialization complete +[virtio-net] Enabling IRQ 75 for network device +NET: pre-primed NetRx softirq for bootstrap callback re-enable +[boot] Initializing filesystem... +[ext2] Using VirtIO block device (190464 sectors) +[boot] ext2 root filesystem mounted +[boot] No home filesystem: No home block device available (expected at device index 3 or 1) (continuing) +[boot] devfs initialized at /dev +[boot] devptsfs initialized at /dev/pts +[boot] CPU detected: Unknown Unknown +[boot] procfs initialized at /proc +[boot] TTY subsystem initialized +[boot] Initializing graphics... +[virtio-gpu] GPU device already initialized +[arm64-fb] Shell framebuffer initialized: 1280x800 +[graphics] Framebuffer: 1280x800 +[graphics] Particle system initialized +[render_queue] Initialized (64KB buffer) +[graphics] Split-screen terminal UI initialized +[boot] Initializing VirtIO keyboard... +[virtio-input] Searching for input devices (ID=18)... +[virtio-input] Slot 27 at 0xa003600: device_id=1 +[virtio-input] Slot 28 at 0xa003800: device_id=2 +[virtio-input] Slot 29 at 0xa003a00: device_id=18 +[virtio-input] Found tablet at 0xa003a00 (slot 29, supports EV_ABS) +[virtio-input] Tablet device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 77 for tablet +[virtio-input] Tablet initialized (16 buffers) +[virtio-input] Slot 30 at 0xa003c00: device_id=18 +[virtio-input] Found keyboard at 0xa003c00 (slot 30, no EV_ABS) +[virtio-input] Keyboard device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 78 for keyboard +[virtio-input] Keyboard initialized (64 buffers) +[virtio-input] Slot 31 at 0xa003e00: device_id=16 +[boot] VirtIO keyboard initialized +[boot] Initializing per-CPU data... +[boot] Per-CPU data initialized +[boot] Initializing process manager... +[boot] Process manager initialized +[boot] Initializing scheduler... +[boot] Scheduler initialized +[boot] Workqueue subsystem initialized +[boot] Softirq subsystem initialized +[boot] Render thread spawned (tid=4) +[boot] Tracing subsystem initialized and enabled +[boot] Pre-loading /sbin/init from ext2 (before timer)... +[net] ICMP echo reply received from 10.0.2.2 seq=1 +[boot] Init binary pre-loaded: 298664 bytes +[xhci] post-activation: MSI_EVENT_COUNT=0 EVENT_COUNT=0 POLL_COUNT=0 SPI_ACTIVATED=false +[boot] Initializing timer interrupt... +[timer] Timer configured for ~1000 Hz (1000000 ticks per interrupt) +[timer] Using virtual timer (PPI 27) +[boot] Timer interrupt initialized +[smp] CPU 0 MPIDR=0x80000000, stack_base=0x43000000 +[smp] Probing secondary CPUs via PSCI... +[smp] CPU 1: PSCI CP1U_ON succ@e1ss (rawA_status=B0) +C[smp2@] CPU1A 2: BDCDPSCI CPUEeEeFF_ONG success1 (raw_sG2tatus=0) +[s3@1ABCDmp] CPU EeF3: GPSCI CPU_3ON success (raw_status=0) +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[smp] CPU 4 attempt 1/4: HVC64 failed (ret=-2), trying HVC32... +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImodeT=1) +[gi1c] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[smp] PSCI CPU_ON failed for CPU 4 after 1 attempts: ret=-2 (MPIDR=0x4 entry=0x400802b8) +[smp] CPU 4: PSCI CPU_ON failed (ret=-2), stopping probe +[smp] initialization_watchdog gap_ms=298 local_ceiling_ms=15000 margin_ms=3000 effective_ceiling_ms=20000 +[smp] 4 CPUs online +[boot] Running parallel boot tests... +T2[BOOT_TESTS:START] +[STAGE:serial:ADVANCE] +[BOOT_TESTS:TOTAL:118] +[BOOT_TESTS:SERIAL_BOOT:3] +[BOOT_TESTS:EARLY_BOOT:91] +[BOOT_TESTS:STAGED:27 tests waiting for later stages] +T3T4T5T6T7[SUBSYSTEM:process:serial:START] +[TEST:process:frame_custody_refusal_gate:START] +T8T9T0[TEST:process:frame_custody_refusal_gate:PASS] +[TEST:process:page_table_custody_disposition_gate:START] +[EXEC_FAILED_RELEASE_ORACLE:aarch64:used_before=1:used_after=1:leaf_recorded=1:leaf_released=1:leaf_returned=1:tables_returned=4:roots_retired=1:live_refused=0] +[TEST:process:page_table_custody_disposition_gate:PASS] +[TEST:process:block_current_departure_gate:START] +[TEST:process:block_current_departure_gate:PASS] +[SUBSYSTEM:process:serial:COMPLETE:3/3] +[STAGE:serial:COMPLETE:3/118] +[STAGE:early:ADVANCE] +[SUBSYSTEM:memory:early:START] +[TEST:memory:framework_sanity:START] +[SUBSYSTEM:scheduler:early:START] +[TEST:scheduler:wakes_are_placed_on_online_cpus:START] +[TEST:memory:framework_sanity:PASS] +[TEST:scheduler:wakes_are_placed_on_online_cpus:PASS] +[SUBSYSTEM:network:early:START] +[TEST:network:network_stack_init:START] +[SUBSYSTEM:filesystem:early:START] +[TEST:network:network_stack_init:PASS] +[TEST:filesystem:vfs_init:START] +[TEST:filesystem:vfs_init:PASS] +[TEST:memory:heap_alloc_basic:START] +[TEST:memory:heap_alloc_basic:PASS] +[TEST:network:virtio_net_probe:START] +[TEST:network:virtio_net_probe:PASS] +[SUBSYSTEM:syscall:early:START] +[TEST:syscall:syscall_dispatch:START] +[TEST:syscall:syscall_dispatch:PASS] +[SUBSYSTEM:interrupts:early:START] +[TEST:interrupts:interrupt_controller_init:START] +[TEST:interrupts:interrupt_controller_init:PASS] +[SUBSYSTEM:process:early:START] +[SUBSYSTEM:system:early:START] +[TEST:process:deferred_fault_ring_overflow_injection:START] +[TEST:system:boot_sequence:START] +[TEST:system:boot_sequence:PASS] +[TEST:process:deferred_fault_ring_overflow_injection:PASS] +[SUBSYSTEM:ipc:early:START] +[TEST:ipc:pipe_buffer_basic:START] +[TEST:ipc:pipe_buffer_basic:PASS] +[SUBSYSTEM:logging:early:START] +[TEST:logging:logging_init:START] +[TEST:logging:logging_init:PASS] +[SUBSYSTEM:timer:early:START] +[TEST:timer:timer_init:START] +[TEST:timer:timer_init:PASS] +[TEST:memory:frame_allocator:START] +[TEST:memory:frame_allocator:PASS] +[TEST:syscall:arm64_pty_ioctl_path:START] +manager.create_process [ARM64]: ENTRY - name='pty_ioctl_test', elf_size=276816 +manager.create_process [ARM64]: Generated PID 2 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x4000e0b0 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x40017000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4401e000-0x4402e000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4401e000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 2 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 2 +[TEST:syscall:arm64_pty_ioctl_path:PASS] +[TEST:process:process_manager_init:START] +[TEST:process:process_manager_init:PASS] +[TEST:timer:timer_ticks:START] +[TEST:timer:timer_ticks:PASS] +[TEST:network:socket_creation:START] +[TEST:network:socket_creation:PASS] +[TEST:timer:timer_delay:START] +[TEST:logging:log_levels:START] +[TEST:logging:log_levels:PASS] +[TEST:timer:timer_delay:PASS] +[TEST:syscall:arm64_socket_reset_quantum:START] +[TEST:syscall:arm64_socket_reset_quantum:PASS] +[TEST:process:scheduler_init:START] +[TEST:process:scheduler_init:PASS] +[TEST:ipc:pipe_eof:START] +[TEST:ipc:pipe_eof:PASS] +[TEST:process:thread_creation:START] +[TEST:network:tcp_socket_creation:START] +[TEST:network:tcp_socket_creation:PASS] +[TEST:logging:serial_output:START] +[LOGGING_TEST] Serial test ARM64 +[TEST:logging:serial_output:PASS] +[TEST:process:thread_creation:PASS] +[TEST:timer:timer_monotonic:START] +[TEST:timer:timer_monotonic:PASS] +[TEST:process:signal_delivery_infrastructure:START] +[TEST:process:signal_delivery_infrastructure:PASS] +[SUBSYSTEM:syscall:early:COMPLETE:3/3] +[TEST:process:arm64_signal_frame_conversion:START] +[TEST:process:arm64_signal_frame_conversion:PASS] +[TEST:network:loopback:START] +[TEST:network:loopback:PASS] +[SUBSYSTEM:process:early:COMPLETE:6/6] +[TEST:ipc:pipe_broken:START] +[TEST:ipc:pipe_broken:PASS] +[SCHED_STRAND_ORACLE:aarch64:samples=10:checked=136:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=0:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=360:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=0:reap_second=0:retire_second=0:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=0:kernel=27:cleared=27] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TEST:network:loopback_wake_loss_counters_are_zero:START] +[TEST:network:loopback_wake_loss_counters_are_zero:PASS] +[TEST:filesystem:devfs_mounted:START] +[TEST:filesystem:devfs_mounted:PASS] +[TEST:interrupts:irq_enable_disable:START] +[TEST:interrupts:irq_enable_disable:PASS] +[SUBSYSTEM:logging:early:COMPLETE:3/3] +[TEST:scheduler:executor_exists:START] +[TEST:scheduler:executor_exists:PASS] +[TEST:ipc:pipe_wake_mechanism:START] +[TEST:ipc:pipe_wake_mechanism:PASS] +[TEST:system:system_stability:START] +[TEST:system:system_stability:PASS] +[TEST:ipc:fd_table_creation:START] +[TEST:ipc:fd_table_creation:PASS] +[TEST:system:kernel_heap:START] +[TEST:system:kernel_heap:PASS] +[TEST:filesystem:file_open_close:START] +[TEST:filesystem:file_open_close:PASS] +[TEST:scheduler:async_waker:START] +[TEST:scheduler:async_waker:PASS] +[TEST:memory:heap_large_alloc:START] +[TEST:system:tty_foreground_pgrp:START] +[TEST:system:tty_foreground_pgrp:PASS] +[TEST:interrupts:timer_interrupt_running:START] +[TEST:interrupts:timer_interrupt_running:PASS] +[TEST:filesystem:directory_list:START] +[TEST:filesystem:directory_list:PASS] +[TEST:memory:heap_large_alloc:PASS] +[TEST:interrupts:keyboard_irq_setup:START] +[TEST:interrupts:keyboard_irq_setup:PASS] +[TEST:network:loopback_recv_wake_when_idle:START] +[TEST:filesystem:filesystem_syscalls_aarch64:START] +[TEST:filesystem:filesystem_syscalls_aarch64:PASS] +[TEST:interrupts:exception_vectors:START] +[TEST:interrupts:exception_vectors:PASS] +[SUBSYSTEM:system:early:COMPLETE:4/4] +[TEST:memory:heap_many_small:START] +[TEST:memory:heap_many_small:PASS] +[TEST:timer:timer_quantum_reset_aarch64:START] +[TEST:timer:timer_quantum_reset_aarch64:PASS] +[TEST:interrupts:exception_handlers:START] +[TEST:interrupts:exception_handlers:PASS] +[TEST:filesystem:virtio_blk_multi_read:START] +[virtio-blk] Starting multi-read stress test (10 reads)... +[virtio-blk] Read 1 of 10 complete +[virtio-blk] Read 2 of 10 complete +[virtio-blk] Read 3 of 10 complete +[virtio-blk] Read 4 of 10 complete +[virtio-blk] Read 5 of 10 complete +[virtio-blk] Read 6 of 10 complete +[virtio-blk] Read 7 of 10 complete +[virtio-blk] Read 8 of 10 complete +[virtio-blk] Read 9 of 10 complete +[virtio-blk] Read 10 of 10 complete +[virtio-blk] Multi-read stress test passed! +[TEST:filesystem:virtio_blk_multi_read:PASS] +[TEST:scheduler:future_basics:START] +[TEST:scheduler:future_basics:PASS] +[TEST:ipc:fd_alloc_close:START] +[TEST:ipc:fd_alloc_close:PASS] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=when_idle:budget_ms=200:elapsed_tick_ms=137:elapsed_ctr_ms=210:ctx_delta=83:extensions=0:reader_state=terminated:queued_cpu=none:queued_idx=none:idle_cpus=0xc:cpu_silence_ms=801:silence_cpu=0:woke_ms=678:verdict=ok] +[TEST:network:loopback_recv_wake_when_idle:PASS] +[SUBSYSTEM:scheduler:early:COMPLETE:4/4] +[TEST:interrupts:breakpoint:START] +[exception] Breakpoint (BRK #0) at 0xffff0000405480f8 +[TEST:interrupts:breakpoint:PASS] +[TEST:filesystem:virtio_blk_sequential_read:START] +[virtio-blk] Testing sequential read of sectors 0-31... +[virtio-blk] Read sectors 0-7 OK (avail_idx wrap count: 0) +[virtio-blk] Read sectors 0-15 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-23 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-31 OK (avail_idx wrap count: 2) +[virtio-blk] Sequential read test passed! (32 sectors, 2 queue wraps) +[TEST:filesystem:virtio_blk_sequential_read:PASS] +[TEST:interrupts:softirq_aarch64:START] +[TEST:interrupts:softirq_aarch64:PASS] +[TEST:memory:cow_flags_aarch64:START] +[TEST:memory:cow_flags_aarch64:PASS] +[TEST:filesystem:virtio_blk_write_read_verify:START] +[virtio-blk] Testing write-read-verify cycle... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Reading original data from sector 1000... +[virtio-blk] Original first 16 bytes: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00] +[virtio-blk] Test pattern first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Writing test pattern to sector 1000... +[virtio-blk] Write succeeded +[virtio-blk] Reading back sector 1000... +[virtio-blk] Readback first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Restoring original data to sector 1000... +[virtio-blk] Write-read-verify test passed! All 512 bytes match. +[TEST:filesystem:virtio_blk_write_read_verify:PASS] +[TEST:memory:guard_page_exists:START] +[TEST:memory:guard_page_exists:PASS] +[TEST:network:loopback_recv_wake_under_load:START] +[TEST:timer:ring_span_report:START] +[TEST:filesystem:virtio_blk_invalid_sector:START] +[virtio-blk] Testing invalid sector read... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Invalid sector correctly rejected: Sector out of range +[virtio-blk] Invalid sector test passed! +[TEST:filesystem:virtio_blk_invalid_sector:PASS] +[SUBSYSTEM:interrupts:early:COMPLETE:8/8] +[TEST:filesystem:virtio_blk_uninitialized_read:START] +[virtio-blk] Testing uninitialized device handling... +[virtio-blk] Device is initialized (expected during normal boot) +[virtio-blk] Verified: read_sector checks BLOCK_DEVICE.is_none() and returns error +[virtio-blk] Uninitialized test passed (device was already initialized)! +[TEST:filesystem:virtio_blk_uninitialized_read:PASS] +[TEST:ipc:create_pipe:START] +[TEST:ipc:create_pipe:PASS] +[SUBSYSTEM:filesystem:early:COMPLETE:10/10] +[TEST:memory:stack_layout:START] +[TEST:memory:stack_layout:PASS] +[TEST:ipc:pty_support_aarch64:START] +[TEST:ipc:pty_support_aarch64:PASS] +[TEST:memory:stack_allocation:START] +[TEST:memory:stack_allocation:PASS] +[SUBSYSTEM:ipc:early:COMPLETE:8/8] +[TEST:memory:user_stack_base:START] +[TEST:memory:user_stack_base:PASS] +[TEST:memory:user_stack_size:START] +[TEST:memory:user_stack_size:PASS] +[TEST:memory:user_stack_top:START] +[TEST:memory:user_stack_top:PASS] +[TEST:memory:user_stack_guard:START] +[TEST:memory:user_stack_guard:PASS] +[TEST:memory:user_stack_alignment:START] +[TEST:memory:user_stack_alignment:PASS] +[TEST:memory:kernel_stack_base:START] +[TEST:memory:kernel_stack_base:PASS] +[TEST:memory:kernel_stack_size:START] +[TEST:memory:kernel_stack_size:PASS] +[TEST:memory:kernel_stack_top:START] +[TEST:memory:kernel_stack_top:PASS] +[RING_SPAN:cpu=0:span_ms=1497:writes=558:dropped=0:ticks_total=3986:tick_events=62] +[TEST:timer:ring_span_report:PASS] +[TEST:memory:kernel_stack_guard:START] +[TEST:memory:kernel_stack_guard:PASS] +[SUBSYSTEM:timer:early:COMPLETE:6/6] +[TEST:memory:kernel_stack_alignment:START] +[TEST:memory:kernel_stack_alignment:PASS] +[TEST:memory:stack_in_range:START] +[TEST:memory:stack_in_range:PASS] +[TEST:memory:stack_grows_down:START] +[TEST:memory:stack_grows_down:PASS] +[TEST:memory:stack_depth:START] +[TEST:memory:stack_depth:PASS] +[TEST:memory:stack_frame_size:START] +[TEST:memory:stack_frame_size:PASS] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=under_load:budget_ms=200:elapsed_tick_ms=130:elapsed_ctr_ms=201:ctx_delta=286:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x2:cpu_silence_ms=1041:silence_cpu=0:woke_ms=912:verdict=ok] +[TEST:network:loopback_recv_wake_under_load:PASS] +[TEST:memory:stack_red_zone:START] +[TEST:memory:stack_red_zone:PASS] +[TEST:network:loopback_pump_does_not_busy_spin:START] +[SUBSYSTEM:memory:early:COMPLETE:24/24] +[TEST:network:loopback_pump_does_not_busy_spin:PASS] +[TEST:network:tcp_final_ack_survives_accept_publish_race:START] +[TEST:network:tcp_final_ack_survives_accept_publish_race:PASS] +[TEST:network:arm64_net_softirq_registration:START] +[TEST:network:arm64_net_softirq_registration:PASS] +[TEST:network:net_lock_guard_masks_interrupt_source:START] +[TEST:network:net_lock_guard_masks_interrupt_source:PASS] +[SUBSYSTEM:network:early:COMPLETE:12/12] +[STAGE:early:COMPLETE:91/118] +[STAGE:sched:ADVANCE] +[SUBSYSTEM:scheduler:sched:START] +[SUBSYSTEM:filesystem:sched:START] +[TEST:scheduler:kthread_spawn_verify:START] +[TEST:filesystem:block_wedge_oracle:START] +[SUBSYSTEM:process:sched:START] +[TEST:scheduler:kthread_spawn_verify:PASS] +[TEST:process:fork_exit_defer_reclaim_pairing_test:START] +[BLOCK_WEDGE_ORACLE:locked=1:wedged=1:refused=1:parked=0:refuse_ms=0] +[TEST:filesystem:block_wedge_oracle:PASS] +[TEST:scheduler:workqueue_operational:START] +[TEST:scheduler:workqueue_operational:PASS] +[PT_RETIRE_ORACLE:aarch64:cycles=64:used_before=53:used_after=53:expected_tables=9:roots=64:returned=640:lost=0:kstack_returns=64] +[PT_LEAF_ORACLE:aarch64:cycles=64:expected=192:recorded=192:released=192:returned=192:live_refused=0:used_before=53:used_after=53] +[TEST:process:fork_exit_defer_reclaim_pairing_test:PASS] +[SUBSYSTEM:filesystem:sched:COMPLETE:1/1] +[SUBSYSTEM:scheduler:sched:COMPLETE:2/2] +[TEST:process:exec_detach_oracle:START] +manager.create_process [ARM64]: ENTRY - name='exec_detach_leader', elf_size=180 +manager.create_process [ARM64]: Generated PID 69 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4404c000-0x4405c000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4404c000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 69 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 69 +[EXEC_DETACH_ORACLE:aarch64:bodies=2:fail_preserved=2:sibling_refused=2:success_detached=2:fresh_root=2:tgid_self=2:custody_balance=0:leaf_residual=16:stack_residual=18:kstack_frames_released=0:old_group_reached_pre=2:old_group_missed_post=2:self_group_reached_post=2] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:clone_admission_oracle:START] +[CLONE_ADMISSION_ORACLE:aarch64:admitted=1:refused=2:creating_refused=1:published_admitted=2:balance=0] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:init_designation_oracle:START] +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a1', elf_size=8, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a2', elf_size=120, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +[INIT_DESIGNATION_ORACLE:aarch64:construct_failed=2:construct_undecided=0:construct_residual=0:construct_roots_retired=2:construct_leaf_balance=0:construct_commit_balance=0:refused=4:accepted=1:published=1:retired=1:held_error_removals=1:reparented=1:reparent_skipped=1:ordinary_allocated=5:reserved_collisions=0:designation_balance=0] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_group_refusal_oracle:START] +[INIT_GROUP_REFUSAL_ORACLE:aarch64:none_probes=3:none_refusals=0:init_refused=1:alias_refused=1:alias_pid_refused=0:nonit_probes=2:nonit_refusals=0:rows_delta=0:refusal_counter_delta=0:designation_residual=0:balance=0] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:kernel_stack_ownership_oracle:START] +[CREATION_LOCK_ORDER:INJECTED:PM_HELD] +[KSTACK_OWNER_ORACLE:aarch64:creation_rows=1000:creation_owned=1000:one_owner=1000:two_owner=0:zero_owner=0:fork_rows=1:fork_owned=1:slot_returns_exact_one=1:slot_alloc_delta=1000:slot_free_delta=1000:slot_balance=0:cohort_enrolled=1000:cohort_returned=1000:cohort_double_return=0:foreign_alloc_delta=0:foreign_returned=0:frames_mapped_delta=0:frames_released_delta=0:frame_balance=0:frame_used_delta=0:frame_used_bounded=1:live_checks=1106:live_refusals_production=0:live_refusals_injected=1:drop_refused_live=0:pte_overwrite_refusals=0:pub_pooled=1073:pub_sched_owned=1073:pub_row_residual=0:pub_unowned=0:classifier_sched_owned=1:classifier_row_residual=1:classifier_unowned=1:classifier_not_pooled=1:sched_publications=28:sched_pm_held_production=0:sched_pm_held_injected=1:reconciliation_diff=0:reconciliation_skew_bound=6:balance=0] +[TEST:process:kernel_stack_ownership_oracle:PASS] +[TEST:process:creating_dispatch_refusal:START] +manager.create_process [ARM64]: ENTRY - name='creating_dispatch_probe', elf_size=180 +manager.create_process [ARM64]: Generated PID 86 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x44059000-0x44069000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x44059000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 86 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 86 +[CREATING_DISPATCH_ORACLE_DIAG:aarch64:refusal_delta=3:leaf_residual=16:user_stack_residual=16:balance=0:settle_rounds=3:root=0x44042000:root_release_done=1:probe_hw_clear=1:probe_shadow_clear=1:probe_cached_clear=1:retire_hw_blocked=0:retire_shadow_blocked=0:retire_cached_blocked=0] +[CREATING_DISPATCH_ORACLE:aarch64:injected=1:refused_via_dispatch=1:requeue_retried=1:dispatched_after_publish=1:balance=0:leaf_residual=16:user_stack_residual=16] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:tombstone_join_oracle:START] +[TOMBSTONE_JOIN_ORACLE:aarch64:retire_second=1:reap_second=1:removed=2:resident_delta=0:tombstone_rows=0:PASS] +[TEST:process:tombstone_join_oracle:PASS] +[TEST:process:retirement_fence_gate:START] +[TEST:process:retirement_fence_gate:PASS] +[TEST:process:reclaim_progress_gate:START] +[TEST:process:reclaim_progress_gate:PASS] +[TEST:process:exit_kick_protocol_gate:START] +[exit_kick_gate] budget_anchor=test_phase anchor_age_at_gate_entry_ms=2163 budget_ms=60000 gate_ceiling_ms=45000 +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=2] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542879f0:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542879f0:cpu=2] +[TEST:process:exit_kick_protocol_gate:PASS] +[TEST:process:exit_kick_worker_window_isolation:START] +[exit_kick_worker_isolation] budget_anchor=test_phase anchor_age_at_entry_ms=2184 budget_ms=60000 scenario_ceiling_ms=1500 +[exit_kick_worker_isolation] scenario=before_union_worker_1 start=1 +[LR_NONTEXT:site=save-el1:tid=29:lr=0x3:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0x3:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0x5:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0x5:cpu=2] +[exit_kick_gate] wait=before_union_worker_1 breadcrumb=1 elapsed_ms=1000 progress_work=43 progress_exit=0 re_kick_sgis=57 +[exit_kick_gate] wait=before_union_worker_1 cause=absolute_ceiling elapsed_ms=1500 window_budget_ms=1500 re_kick_sgis=87 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=63 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=31 worker_3_progress_start=0 worker_3_progress_final=31 last_advance_ms_ago=36 late_true=0 +[exit_kick_worker_isolation] scenario=before_union_worker_1 elapsed_ms=1502 cause=absolute_ceiling target=none progress=[1, 31, 31] completed=6 joined=3 +[exit_kick_worker_isolation] scenario=after_worker_1 start=1 +[STRAND_INJECT_ORACLE:aarch64:legA_exercised=1:legA_recovered=1:legB_exercised=1:legB_recovered=1:stranded=0] +[exit_kick_gate] wait=after_worker_1 cause=no_progress elapsed_ms=801 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=0 worker_2_progress_final=17 worker_3_progress_start=2 worker_3_progress_final=17 last_advance_ms_ago=801 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_1 elapsed_ms=802 cause=no_progress target=worker_1 progress=[1, 17, 17] completed=6 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 1 made no progress +[exit_kick_worker_isolation] scenario=after_worker_2 start=1 +[exit_kick_gate] wait=after_worker_2 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=1 worker_2_progress_final=1 worker_3_progress_start=0 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_2 elapsed_ms=801 cause=no_progress target=worker_2 progress=[17, 1, 17] completed=5 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 2 made no progress +[exit_kick_worker_isolation] scenario=after_worker_3 start=1 +[SCHED_STRAND_ORACLE:aarch64:samples=108:checked=646:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=3627:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=3056:cleared=3059] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[exit_kick_gate] wait=after_worker_3 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=0 worker_3_progress_final=1 last_advance_ms_ago=799 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_3 elapsed_ms=802 cause=no_progress target=worker_3 progress=[17, 17, 1] completed=3 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 3 made no progress +[exit_kick_worker_isolation] scenario=after_healthy start=1 +[exit_kick_worker_isolation] scenario=after_healthy elapsed_ms=2 cause=success target=none progress=[2, 2, 2] completed=7 joined=3 +[exit_kick_worker_isolation] healthy_baseline=PASS +[exit_kick_worker_isolation] fixture_elapsed_ms=4034 +[TEST:process:exit_kick_worker_window_isolation:PASS] +[TEST:process:exit_kick_budget_anchor_isolation:START] +[exit_kick_budget_anchor] pre_test_delay_ms=1208 fixture_budget_ms=1000 fixture_gate_ceiling_ms=600 +[exit_kick_budget_anchor] scenario=inherited_kernel_entry_anchor anchor=inherited cause=phase_one_ceiling target=none elapsed_ms=0 budget_age_at_entry_ms=1209 +[exit_kick_budget_anchor] scenario=test_phase_entry_anchor anchor=test_phase cause=no_progress target=worker_1 elapsed_ms=407 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] scenario=gate_window_exhaustion anchor=test_phase cause=gate_ceiling target=none elapsed_ms=608 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] fixture_elapsed_ms=2227 +[TEST:process:exit_kick_budget_anchor_isolation:PASS] +[TEST:process:census_widen_oracle:START] +[CENSUS_WIDEN_ORACLE:aarch64:arm_target=0:baseline_reported=0:armed_reported=1:tid=1215:shape=ready_queued_nondispatching:queued_nondispatching=1:queued_nondispatch_ms=5546:cpu_silence_ms=5546:joined=1:retired=1:PASS] +[TEST:process:census_widen_oracle:PASS] +[SUBSYSTEM:process:sched:COMPLETE:14/14] +[STAGE:sched:COMPLETE:108/118] +[boot] All boot tests passed! +[PT_ROOT_CUSTODY:no_proof=2:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=79] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=4561:cleared=4564] +[PIN_GUARD_ORACLE:aarch64:home=1:here=0:reclaim=1:requeue=1:previous=1:on_home=3:refused=3:census_clean=1:verdict=PASS] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TIMER_WAKE_LATENCY_ORACLE:aarch64:sleep_ms=10:peers=8:overrun_ms=0:bound_ms=100:quantum_ms=10:round_ms=80:wake_enqueues=1:peers_started=8:peers_spinning=8:backstops=0:setup_ms=5:window_ms=35:measured=1:PASS] + +======================================== + Breenix ARM64 Boot Complete! +======================================== + +Hello from ARM64! + +[boot] Launching init from pre-loaded ELF... +manager.create_process_with_argv [ARM64]: ENTRY - name='init', elf_size=298664, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f5d0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 1 +[INIT_DESIGNATION:aarch64:designated_pid=1:reserved_collisions=0] +[STAGE:proc:ADVANCE] +[SUBSYSTEM:ipc:proc:START] +[TEST:ipc:telnetd_dependencies_aarch64:START] +[TEST:ipc:telnetd_dependencies_aarch64:PASS] +[SUBSYSTEM:syscall:proc:START] +[TEST:syscall:fcntl_pm_contention_oracle:START] +[SUBSYSTEM:process:proc:START] +[TEST:process:current_thread_exists:START] +[TEST:process:current_thread_exists:PASS] +[SUBSYSTEM:ipc:proc:COMPLETE:1/1] +[TEST:process:process_list_populated:START] +[TEST:process:process_list_populated:PASS] +[FCNTL_PM_CONTENTION_ORACLE:aarch64:arm_wait_us=183:armed=1:acquired=1:holder_cpu=1:pm_busy_probe=1:calls=64:eagain=0:first_errno=9:first_wait_us=8091:hold_safety=0:hold_done=1:joined=1:PASS] +[TEST:process:frame_custody_healthy_counters:START] +[TEST:syscall:fcntl_pm_contention_oracle:PASS] +[TEST:process:frame_custody_healthy_counters:PASS] +[TEST:syscall:irq_hold_oracle:START] +[SUBSYSTEM:process:proc:COMPLETE:3/3] +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +[IRQ_HOLD_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12017:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:irq_hold_oracle:PASS] +[TEST:syscall:tty_irq_pm_oracle:START] +[TTY_IRQ_PM_ORACLE:aarch64:fg_unset_before=1:pm_blocking_acquires=0:deferred=2:pgrp_set_by_entry=0:processed=2:buffered=2:irqs_enabled_before=1:holder_cpu=1:pm_busy_probe=1:hold_us=20000:entry_us=3:joined=1:adopted=1:adopted_pgrp=821:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_pm_oracle:PASS] +[TEST:syscall:tty_irq_fg_oracle:START] + +[TTY_IRQ_FG_ORACLE:aarch64:fg_known=822:target_absent=1:fg_lock_touches=0:fg_blocking_acquires=0:snapshot_reads=3:processed=2:buffered=1:irqs_enabled_before=1:holder_cpu=2:fg_busy_probe=1:hold_us=20000:entry_us=131:joined=1:sig_calls=1:sig_pid=822:sig_num=2:snapshot_agrees=1:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_fg_oracle:PASS] +[TEST:syscall:udp_socket_lock_oracle:START] +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +[UDP_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12013:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_socket_lock_oracle:PASS] +[TEST:syscall:udp_ports_lock_oracle:START] +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +[UDP_PORTS_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:driver_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=19:hold_us=12016:refused=8:delivered=11:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_ports_lock_oracle:PASS] +[SUBSYSTEM:syscall:proc:COMPLETE:6/6] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[boot] Reset 4 idle thread contexts (CPUs online: 4) +EL0_SYSCALL: First syscall from userspace (SPSR confirms EL0) +[ OK ] syscall path verified +[STAGE:user:ADVANCE] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[USER_RSP_SCRATCH_EL_CENSUS:el0_installs=1:el1_skipped=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[init] Breenix init starting (PID 1) +[spawn] path='/bin/heartbeat' +manager.create_process_with_argv [ARM64]: ENTRY - name='heartbeat', elf_size=303616, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 90 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f85c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 90 +[spawn] Created child PID 90 for parent PID 1 +[spawn] Success: child PID 90 scheduled +[init] heartbeat started (PID 90) +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=1:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=2:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=early:probe1=-22:probe2=-22:expected=-22] +[spawn] path='/bin/block_eintr_oracle' +[heartbeat] tid=1236 uptime_ms=9511 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='block_eintr_oracle', elf_size=304752, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 91 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f938 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 91 +[spawn] Created child PID 91 for parent PID 1 +[spawn] Success: child PID 91 scheduled +F123456789SC[syscall] exit(0) pid=92 name=block_eintr_oracle_child_92 +[TTBR0_ASID_CENSUS:untagged=0:tagged=2325:kernel=7330:cleared=9628] +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=417:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=12:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=1349:kstack=0:uva=11:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=1349:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=434:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=417:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=10:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el0:text=0:kstack=0:uva=11:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el1-restore-frame-elr:text=2172:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-restore-frame-elr:text=0:kstack=0:uva=7:smallint=0:other=0] +[heartbeat] tid=1236 uptime_ms=10516 kbd_nonzero=0 +[SCHED_STRAND_ORACLE:aarch64:samples=207:checked=958:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5540:worst_cpu_scheduler_silence_ms=5605:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=4774:kernel=10093:cleared=14807] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +F123456789SC[heartbeat] tid=1236 uptime_ms=11521 kbd_nonzero=0 +[syscall] exit(0) pid=93 name=block_eintr_oracle_child_93 +[TTBR0_ASID_CENSUS:untagged=0:tagged=6737:kernel=12311:cleared=18962] +[heartbeat] tid=1236 uptime_ms=12524 kbd_nonzero=0 +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[syscall] exit(0) pid=91 name=block_eintr_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=10780:kernel=16854:cleared=27511] +[init] block_eintr_oracle exited pid=91 code=0 +[spawn] path='/bin/futex_handoff_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='futex_handoff_oracle', elf_size=291984, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 94 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000ef08 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 94 +[spawn] Created child PID 94 for parent PID 1 +[spawn] Success: child PID 94 scheduled +[FUTEX_HANDOFF_ORACLE:aarch64:driven=2:stage1_ret=EAGAIN:stage1_wake=0:stage1_parked=0:stage2_ret=0:stage2_wake=1:stage2_parked=0:stage3_ret=ETIMEDOUT:stage3_elapsed_ok=1:stage3_elapsed_ms=52:arm_delay_us=39:rescues=0:queue_residual=0:balance=0] +[FUTEX_HANDOFF_ORACLE_DRIVER:s1=-11:s2=0:s3=-110] +[syscall] exit(0) pid=94 name=futex_handoff_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=11664:kernel=17880:cleared=29411] +[init] futex_handoff_oracle exited pid=94 code=0 +[spawn] path='/bin/poll_tcp_oracle' +[heartbeat] tid=1236 uptime_ms=13532 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='poll_tcp_oracle', elf_size=307952, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 95 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001050c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 95 +[spawn] Created child PID 95 for parent PID 1 +[spawn] Success: child PID 95 scheduled +[POLL_TCP_TIMEOUT] fd=4 timeout_ms=120 publish=none_in_window rx_len=0 revents=0x0000 +F123456789SC[syscall] exit(0) pid=96 name=poll_tcp_oracle_child_96 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12864:kernel=19196:cleared=31895] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=121:late_ms=83:park_ms=81:attempts=1] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=121:late_ms=83:park_ms=81:attempts=1] +[syscall] exit(0) pid=95 name=poll_tcp_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=12888:kernel=19213:cleared=31929] +[init] poll_tcp_oracle exited pid=95 code=0 +[spawn] path='/bin/tty_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='tty_oracle', elf_size=338264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 97 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40012b34 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 97 +[spawn] Created child PID 97 for parent PID 1 +[spawn] Success: child PID 97 scheduled +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=3 (pty 2) +[pty] Unlocked PTY 2 (fd 3) +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +F123456789SC[heartbeat] tid=1236 uptime_ms=14536 kbd_nonzero=0 +[EXEC_LOCK_ORDER:FIRST_COMMIT] +[EXEC_LOCK_ORDER:commits=1:pm_held=0:unpinned=0:missing=0] +[syscall] exit(0) pid=98 name=/bin/tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=15555:kernel=22155:cleared=37478] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[syscall] exit(0) pid=97 name=tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=15570:kernel=22161:cleared=37495] +[init] tty_oracle exited pid=97 code=0 +[spawn] path='/bin/exec_smoke' +manager.create_process_with_argv [ARM64]: ENTRY - name='exec_smoke', elf_size=290928, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 99 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000eb40 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 99 +[spawn] Created child PID 99 for parent PID 1 +[spawn] Success: child PID 99 scheduled +[EXEC_SMOKE:LAUNCH] +[EXEC_LOCK_ORDER:commits=2:pm_held=0:unpinned=0:missing=0] +[EXEC_SMOKE:TARGET_ENTER argc=2] +[heartbeat] tid=1236 uptime_ms=15539 kbd_nonzero=0 +[EXEC_SMOKE:TARGET_OK] +[syscall] exit(0) pid=99 name=/bin/exec_smoke_target +[TTBR0_ASID_CENSUS:untagged=0:tagged=17415:kernel=24288:cleared=41443] +[EXEC_SMOKE:LAUNCHER_EXIT code=0] +[spawn] path='/usr/local/test/bin/clonevm_exec_test' +manager.create_process_with_argv [ARM64]: ENTRY - name='clonevm_exec_test', elf_size=289672, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 100 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f63c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 100 +[spawn] Created child PID 100 for parent PID 1 +[spawn] Success: child PID 100 scheduled +CLONEVM_EXEC_TEST: start +CLONEVM_EXEC_TEST: child live +[SCHED_STRAND_ORACLE:aarch64:samples=307:checked=1241:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5540:worst_cpu_scheduler_silence_ms=5605:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=9:reap_second=8:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=18480:kernel=25403:cleared=43565] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +CLONEVM_EXEC_TEST: live sibling refused exec +[syscall] exit(0) pid=101 name=thread-101 +[TTBR0_ASID_CENSUS:untagged=0:tagged=20658:kernel=27015:cleared=46880] +CLONEVM_EXEC_TEST: child exited +[heartbeat] tid=1236 uptime_ms=16540 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=3:pm_held=0:unpinned=0:missing=0] +CLONEVM_EXEC_TEST: second stage +CLONEVM_EXEC_TEST: ERROR sibling wake of parent failed +[syscall] exit(1) pid=102 name=thread-102 +CLONEVM_EXEC_TEST: ERROR parent wait was not woken by sibling +[TTBR0_ASID_CENSUS:untagged=0:tagged=21545:kernel=28019:cleared=48757] +[syscall] exit(1) pid=100 name=/usr/local/test/bin/clonevm_exec_test +[TTBR0_ASID_CENSUS:untagged=0:tagged=21547:kernel=28021:cleared=48762] +[init] clonevm_exec_test exited pid=100 code=1 +[spawn] path='/bin/bsshd' +manager.create_process_with_argv [ARM64]: ENTRY - name='bsshd', elf_size=455240, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 103 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001d6c0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 103 +[spawn] Created child PID 103 for parent PID 1 +[spawn] Success: child PID 103 scheduled +[init] bsshd started (PID 103) +[spawn] path='/bin/xhci_counters' + +[CTX596_ELR_DIVERGENCE] tid=1226 cpu=2 prev_elr=0xffff000040416428 x30=0xffff0000405bba2c ctx_elr=0xffff0000405bba2c +bsshd: starting on port 2222 +bsshd: listening on 0.0.0.0:2222 +[heartbeat] tid=1236 uptime_ms=17544 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='xhci_counters', elf_size=292264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 104 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f140 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 104 +[spawn] Created child PID 104 for parent PID 1 +[spawn] Success: child PID 104 scheduled +[spawn] path='/bin/bwm' +[xhci-counters] XHCI_MSI_EVENT_TOTAL=0 +[xhci-counters] XHCI_IRQ_ENTRY_TOTAL=0 +[xhci-counters] XHCI_LOCK_CONTENDED_TOTAL=0 +[xhci-counters] KBD_NONZERO_TOTAL=0 +[syscall] exit(0) pid=104 name=xhci_counters +[TTBR0_ASID_CENSUS:untagged=0:tagged=24621:kernel=31559:cleared=55340] +manager.create_process_with_argv [ARM64]: ENTRY - name='bwm', elf_size=428144, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 105 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40018bf8 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffee0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 105 +[spawn] Created child PID 105 for parent PID 1 +[spawn] Success: child PID 105 scheduled +[spawn] path='/sbin/telnetd' +[bwm] Breenix Window Manager starting... (v2-chromeless-skip) +[heartbeat] tid=1236 uptime_ms=18545 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='telnetd', elf_size=298232, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 106 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f930 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 106 +[spawn] Created child PID 106 for parent PID 1 +[spawn] Success: child PID 106 scheduled +[init] Boot script completed +TELNETD_STARTING +[spawn] path='/bin/bounce' +TELNETD_LISTENING +manager.create_process_with_argv [ARM64]: ENTRY - name='bounce', elf_size=388200, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 107 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x400188f4 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 107 +[spawn] Created child PID 107 for parent PID 1 +[spawn] Success: child PID 107 scheduled +[init] bounce started (PID 107) +[INIT_GROUP_WALK:aarch64:rows=12:init_tgid_rows=1:foreign_tgid_rows=0:refused=3:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=12:init_tgid_rows=1:foreign_tgid_rows=0:refused=4:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=quiesce:probe1=-22:probe2=-22:expected=-22] +[init] Process 92 exited (code 0) +[init] Process 93 exited (code 0) +[init] Process 101 exited (code 0) +[init] Process 102 exited (code 1) +[init] Process 104 exited (code 0) +Bounce spheres demo starting (for Gus!) [boot_id=000000048694d510] +[window] create_window_buffer: 400x300 (480000 bytes, 118 pages) +[window] Created buffer id=1 for pid=107: 400x300 at virt=0x7ffffdf86000 phys=0x442cb000 +[bounce] Window mode: id=1 400x300 [boot_id=000000048694d510] +[heartbeat] tid=1236 uptime_ms=19546 kbd_nonzero=0 +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=5561:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=296:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=3:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=15941:kstack=0:uva=93:smallint=206:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=15944:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=5709:kstack=0:uva=0:smallint=3:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=5558:kstack=0:uva=0:smallint=3:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=112:smallint=202:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el0:text=0:kstack=0:uva=93:smallint=203:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el1-restore-frame-elr:text=4995:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-restore-frame-elr:text=0:kstack=0:uva=358:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=4:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=ctx-x30:text=7240:kstack=0:uva=98:smallint=442:other=12] +[RESUME_PC_CENSUS:cpu=1:source=ctx-elr-el1:text=7434:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el1:text=4691:kstack=0:uva=0:smallint=182:other=13] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el1:text=4801:kstack=0:uva=0:smallint=182:other=12] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el0:text=0:kstack=0:uva=82:smallint=260:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el0:text=0:kstack=0:uva=98:smallint=260:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el1-restore-frame-elr:text=5338:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-restore-frame-elr:text=0:kstack=0:uva=301:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=3:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=ctx-x30:text=7766:kstack=2:uva=69:smallint=463:other=20] +[RESUME_PC_CENSUS:cpu=2:source=ctx-elr-el1:text=8019:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el1:text=5019:kstack=2:uva=0:smallint=230:other=21] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el1:text=5086:kstack=2:uva=0:smallint=231:other=20] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el0:text=0:kstack=0:uva=67:smallint=231:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el0:text=0:kstack=0:uva=69:smallint=232:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el1-restore-frame-elr:text=5490:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el0-restore-frame-elr:text=0:kstack=0:uva=247:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=ctx-x30:text=8370:kstack=0:uva=77:smallint=393:other=15] +[RESUME_PC_CENSUS:cpu=3:source=ctx-elr-el1:text=8608:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=lr-save-el1:text=5280:kstack=0:uva=0:smallint=224:other=13] +[RESUME_PC_CENSUS:cpu=3:source=lr-restore-el1:text=5252:kstack=0:uva=0:smallint=223:other=15] +[RESUME_PC_CENSUS:cpu=3:source=lr-save-el0:text=0:kstack=0:uva=72:smallint=170:other=0] +[RESUME_PC_CENSUS:cpu=3:source=lr-restore-el0:text=0:kstack=0:uva=77:smallint=170:other=0] +[bwm] ERROR: GPU compositing required +[syscall] exit(1) pid=105 name=bwm +[TTBR0_ASID_CENSUS:untagged=0:tagged=29242:kernel=36809:cleared=65161] +[init] Process 105 exited (code 1) +[heartbeat] tid=1236 uptime_ms=20549 kbd_nonzero=0 +[PT_ROOT_CUSTODY:no_proof=14:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=82] +[TOMBSTONE_CENSUS:resident=0:removed=16:reap_second=15:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=29250:kernel=36859:cleared=65217] +[net-rx-counters] sample=1 begin +[net-rx-counters] sample=1 NET_RX_MSI_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_RING_DRAIN_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_FRAME_TOTAL: 3 (cpu0=3) +[net-rx-counters] sample=1 NET_RX_ARP_TOTAL: 2 (cpu0=2) +[net-rx-counters] sample=1 NET_RX_ETHERTYPE_OTHER_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_SOFTIRQ_ENTRY_TOTAL: 36 (cpu0=1, cpu1=7, cpu2=21, cpu3=7) +[net-rx-counters] sample=1 NET_RX_SOFTIRQ_EXIT_TOTAL: 36 (cpu0=1, cpu1=7, cpu2=21, cpu3=7) +[net-rx-counters] sample=1 NET_RX_REENTRANT_SKIP_TOTAL: 3 (cpu1=1, cpu2=2) +[net-rx-counters] sample=1 NET_RX_GUARD_RELEASE_TOTAL: 33 (cpu0=1, cpu1=6, cpu2=19, cpu3=7) +[net-rx-counters] sample=1 NET_RX_REARM_CHECK_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_REARM_RACE_TOTAL: 0 +[net-rx-counters] sample=1 NET_RX_REARM_ARMED_TOTAL: 0 +[net-rx-counters] sample=1 NET_PCI_IRQ_RAISED_NETRX: 0 +[net-rx-counters] sample=1 GIC_SPI55_ACK_TOTAL: 0 +[net-rx-counters] sample=1 end +[SCHED_STRAND_ORACLE:aarch64:samples=406:checked=1507:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5540:worst_cpu_scheduler_silence_ms=5605:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=16:reap_second=15:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=29256:kernel=36959:cleared=65321] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[heartbeat] tid=1236 uptime_ms=21577 kbd_nonzero=0 +[heartbeat] tid=1236 uptime_ms=22579 kbd_nonzero=0 +[heartbeat] tid=1236 uptime_ms=23583 kbd_nonzero=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot1-facts.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot1-facts.txt new file mode 100644 index 000000000..9a95e9c5e --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot1-facts.txt @@ -0,0 +1,4 @@ +[GATE_BOOT_FACTS:boot=1:host_ms=1788834854495-1788834868813:qemu_at_start=0:load_at_start=7.80:qemu_at_end=1:load_at_end=7.04:qemu_cpu_s=24.91:guest_uptime_ms=14304:ended_by=scored_pass] +[CAPTURE_DRAIN:capture=n/a:seq=n/a:edge=n/a:cpu=n/a:records=n/a:drain_ms=0] +[CAPTURE_DRAIN_EVENTS:last_events=n/a] +[QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot1-serial.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot1-serial.txt new file mode 100644 index 000000000..0018fb43a --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot1-serial.txt @@ -0,0 +1,936 @@ +EOS +======================================== + Breenix ARM64 Kernel Starting + BUILD_ID: 006a9f737534c7 +======================================== + +[CTX596_ORACLE:ARMED:force_eret=0] +[boot] DIAG_MARKER_XHCI_A +[boot] DIAG_MARKER_XHCI_B +[boot] DIAG_MARKER_XHCI_C +[boot] loader xhci_hcrst_raw=0x0 ecam=0x0 +[boot] Current exception level: EL1 +[boot] MMU already enabled (high-half kernel) +[boot] Initializing memory management (0x44000000-0x50000000)... +[boot] Memory management ready +[boot] Initializing Generic Timer... +[boot] Timer frequency: 62500000 Hz (62 MHz) +[boot] Initializing PL031 RTC... +[boot] Current timestamp: 482437 +[boot] Initializing GIC... +[gic] GICR probe 0x080a0000: WAKER=0x00000006 <<< VALID +[gic] GICR base mismatch: loader=0x00000000, using=0x080a0000 +[gic] GICD_CTLR wrote 0x53, readback=0x53 +[gic] GICR_IGROUPR0: wrote 0xFFFFFFFF, readback=0xffffffff +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[boot] GIC initialized (version 3) +[boot] Enabling UART interrupts... +[boot] Enabling GIC IRQ 33 (UART0)... +[uart] IMSC: 0x0 -> 0x50 (verify: 0x50) +[uart] FR=0x90 (RXFE=1), RIS=0x20 +[gic] IRQ 33 state (GICv3): + enabled=true, group1=true, pending=false + priority=0xa0, GICD_CTLR=0x53 + ICC_PMR=0xf0 +[boot] UART interrupts enabled +[boot] Enabling interrupts... +[boot] Interrupts enabled: true +[boot] QEMU PCI ECAM configured at 0x4010000000 +[boot] Initializing device drivers... +[drivers] Initializing driver subsystem... +[drivers] Hybrid mode: VirtIO MMIO + PCI AHCI +[drivers] Found VirtIO MMIO device: network (ID=1, version=1) +[drivers] Found VirtIO MMIO device: block (ID=2, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: GPU (ID=16, version=1) +[drivers] Found 5 VirtIO MMIO devices +[virtio-blk] Searching for block devices... +[virtio-blk] Found block device 0 at 0xa003800 +[virtio-blk] Device 0 version: 1 +[virtio-blk] Device 0 capacity: 190464 sectors (93 MB) +[virtio-blk] Device 0 queue max size: 1024 +[virtio-blk] Device 0 using v1 (legacy) queue setup at PFN 0x40a60 +[virtio-blk] Block MMIO IRQ 76 enabled for device 0 +[virtio-blk] Block device 0 initialized successfully +[virtio-blk] Initialized 1 block device(s) +[drivers] VirtIO block driver initialized +[virtio-net] Searching for network device... +[virtio-net] Found network device at 0xa003600 (slot 27) +[virtio-net] Device version: 1 +[virtio-net] MAC address: 52:54:00:12:34:56 +[virtio-net] RX queue max size: 1024 +[virtio-net] TX queue max size: 1024 +[virtio-net] Network device initialized successfully +[virtio-net] Network device IRQ 75 (will enable after net init) +[drivers] VirtIO network driver initialized +[virtio-net] Device test - MAC: 52:54:00:12:34:56 +[virtio-net] Test passed! +[virtio-gpu] Searching for GPU device... +[virtio-gpu] Found GPU device at 0xa003e00 +[virtio-gpu] Device version: 1 +[virtio-gpu] Control queue max size: 1024 +[virtio-gpu] Display: 1280x800 +[virtio-gpu] GPU device initialized successfully +[drivers] VirtIO GPU driver initialized +[virtio-gpu] Device test - Display: 1280x800 +[virtio-gpu] Test passed! +[virtio-sound] Searching for sound device... +[drivers] VirtIO sound driver init failed: No VirtIO Sound device found +[drivers] Driver subsystem initialized (MMIO) +[drivers] PCI ECAM at 0x4010000000, enumerating PCI bus... +[drivers] Found 1 PCI devices +[pci] 00:00.0 [1b36:0008] class=06/00 +[drivers] AHCI PCI init failed: No AHCI controller found +[drivers] Driver subsystem initialized (hybrid MMIO+PCI) +[boot] Found 6 devices +[drivers] Running post-init self-tests... +[virtio-blk] Testing read of sector 0... +[virtio-blk] Sector 0 data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +[virtio-blk] Read test passed! +[boot] Initializing network stack... +[net] Initializing network stack... +[net] MAC address: 52:54:00:12:34:56 +NET: IP address: 10.0.2.15 +NET: Gateway: 10.0.2.2 +Network stack initialized +NET: Sending ARP request for gateway 10.0.2.2 +ARP request sent successfully +NET: Gateway ARP not resolved during init; will resolve via IRQ path +NET: Sending ICMP echo request to gateway 10.0.2.2 +NET: ARP cache miss for 10.0.2.2, sending ARP request +NET: Failed to send ping: ArpMiss: reply will populate cache via IRQ +NET: Network initialization complete +[virtio-net] Enabling IRQ 75 for network device +NET: pre-primed NetRx softirq for bootstrap callback re-enable +[boot] Initializing filesystem... +[ext2] Using VirtIO block device (190464 sectors) +[boot] ext2 root filesystem mounted +[boot] No home filesystem: No home block device available (expected at device index 3 or 1) (continuing) +[boot] devfs initialized at /dev +[boot] devptsfs initialized at /dev/pts +[boot] CPU detected: ARM Cortex-A72 +[boot] procfs initialized at /proc +[boot] TTY subsystem initialized +[boot] Initializing graphics... +[virtio-gpu] GPU device already initialized +[arm64-fb] Shell framebuffer initialized: 1280x800 +[graphics] Framebuffer: 1280x800 +[graphics] Particle system initialized +[render_queue] Initialized (64KB buffer) +[graphics] Split-screen terminal UI initialized +[boot] Initializing VirtIO keyboard... +[virtio-input] Searching for input devices (ID=18)... +[virtio-input] Slot 27 at 0xa003600: device_id=1 +[virtio-input] Slot 28 at 0xa003800: device_id=2 +[virtio-input] Slot 29 at 0xa003a00: device_id=18 +[virtio-input] Found tablet at 0xa003a00 (slot 29, supports EV_ABS) +[virtio-input] Tablet device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 77 for tablet +[virtio-input] Tablet initialized (16 buffers) +[virtio-input] Slot 30 at 0xa003c00: device_id=18 +[virtio-input] Found keyboard at 0xa003c00 (slot 30, no EV_ABS) +[virtio-input] Keyboard device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 78 for keyboard +[virtio-input] Keyboard initialized (64 buffers) +[virtio-input] Slot 31 at 0xa003e00: device_id=16 +[boot] VirtIO keyboard initialized +[boot] Initializing per-CPU data... +[boot] Per-CPU data initialized +[boot] Initializing process manager... +[boot] Process manager initialized +[boot] Initializing scheduler... +[boot] Scheduler initialized +[boot] Workqueue subsystem initialized +[boot] Softirq subsystem initialized +[boot] Render thread spawned (tid=4) +[boot] Tracing subsystem initialized and enabled +[boot] Pre-loading /sbin/init from ext2 (before timer)... +[net] ICMP echo reply received from 10.0.2.2 seq=1 +[boot] Init binary pre-loaded: 298664 bytes +[xhci] post-activation: MSI_EVENT_COUNT=0 EVENT_COUNT=0 POLL_COUNT=0 SPI_ACTIVATED=false +[boot] Initializing timer interrupt... +[timer] Timer configured for ~1000 Hz (62500 ticks per interrupt) +[timer] Using virtual timer (PPI 27) +[boot] Timer interrupt initialized +[smp] CPU 0 MPIDR=0x80000000, stack_base=0x43000000 +[smp] Probing secondary CPUs via PSCI... +[smp] 1CPU 1: PSCI @CPU_1ON sAuccess (raw_status=BC0) +[s2@1ABCDDmp] CPU 2: PSCI CPU_ON sEuEeccFess (Graw_steFG12atus=0) +[smp] CPU 3: PSC3@1ABCDI CPEeFU_OG3N success (raw_status=0) +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[smp] CPU 4 attempt 1/4: HVC64 failed (ret=-2), trying HVC32... +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[smp] PSCI CPU_ON failed for CPU 4 after 1 attempts: ret=-2 (MPIDR=0x4 entry=0x400802b8) +T1[smp] CPU 4: PSCI CPU_ON failed (ret=-2), stopping probe +[smp] initialization_watchdog gap_ms=86 local_ceiling_ms=15000 margin_ms=3000 effective_ceiling_ms=20000 +[smp] 4 CPUs online +[boot] Running parallel boot tests... +T2T3[BOOT_TESTS:START] +[STAGE:serial:ADVANCE] +[BOOT_TESTS:TOTAL:118] +[BOOT_TESTS:SERIAL_BOOT:3] +[BOOT_TESTS:EARLY_BOOT:91] +[BOOT_TESTS:STAGED:27 tests waiting for later stages] +T4T5T6T7T8[SUBSYSTEM:process:serial:START] +[TEST:process:frame_custody_refusal_gate:START] +T9[TEST:process:frame_custody_refusal_gate:PASS] +T0[TEST:process:page_table_custody_disposition_gate:START] +[EXEC_FAILED_RELEASE_ORACLE:aarch64:used_before=1:used_after=1:leaf_recorded=1:leaf_released=1:leaf_returned=1:tables_returned=4:roots_retired=1:live_refused=0] +[TEST:process:page_table_custody_disposition_gate:PASS] +[TEST:process:block_current_departure_gate:START] +[TEST:process:block_current_departure_gate:PASS] +[SUBSYSTEM:process:serial:COMPLETE:3/3] +[STAGE:serial:COMPLETE:3/118] +[STAGE:early:ADVANCE] +[SUBSYSTEM:memory:early:START] +[TEST:memory:framework_sanity:START] +[SUBSYSTEM:scheduler:early:START] +[TEST:scheduler:wakes_are_placed_on_online_cpus:START] +[TEST:memory:framework_sanity:PASS] +[TEST:scheduler:wakes_are_placed_on_online_cpus:PASS] +[SUBSYSTEM:filesystem:early:START] +[SUBSYSTEM:interrupts:early:START] +[TEST:interrupts:interrupt_controller_init:START] +[TEST:filesystem:vfs_init:START] +[TEST:interrupts:interrupt_controller_init:PASS] +[TEST:filesystem:vfs_init:PASS] +[SUBSYSTEM:network:early:START] +[TEST:network:network_stack_init:START] +[TEST:network:network_stack_init:PASS] +[SUBSYSTEM:syscall:early:START] +[TEST:syscall:syscall_dispatch:START] +[TEST:syscall:syscall_dispatch:PASS] +[SUBSYSTEM:ipc:early:START] +[SUBSYSTEM:system:early:START] +[SUBSYSTEM:process:early:START] +[TEST:ipc:pipe_buffer_basic:START] +[TEST:system:boot_sequence:START] +[TEST:process:deferred_fault_ring_overflow_injection:START] +[TEST:system:boot_sequence:PASS] +[TEST:ipc:pipe_buffer_basic:PASS] +[TEST:process:deferred_fault_ring_overflow_injection:PASS] +[SUBSYSTEM:logging:early:START] +[TEST:logging:logging_init:START] +[TEST:logging:logging_init:PASS] +[SUBSYSTEM:timer:early:START] +[TEST:timer:timer_init:START] +[TEST:timer:timer_init:PASS] +[TEST:memory:heap_alloc_basic:START] +[TEST:memory:heap_alloc_basic:PASS] +[TEST:network:virtio_net_probe:START] +[TEST:network:virtio_net_probe:PASS] +[TEST:memory:frame_allocator:START] +[TEST:memory:frame_allocator:PASS] +[TEST:network:socket_creation:START] +[TEST:network:socket_creation:PASS] +[TEST:timer:timer_ticks:START] +[TEST:timer:timer_ticks:PASS] +[TEST:syscall:arm64_pty_ioctl_path:START] +manager.create_process [ARM64]: ENTRY - name='pty_ioctl_test', elf_size=276816 +manager.create_process [ARM64]: Generated PID 2 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x4000e0b0 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x40017000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4401e000-0x4402e000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4401e000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 2 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 2 +[TEST:timer:timer_delay:START] +[TEST:process:process_manager_init:START] +[TEST:process:process_manager_init:PASS] +[TEST:timer:timer_delay:PASS] +[TEST:syscall:arm64_pty_ioctl_path:PASS] +[TEST:network:tcp_socket_creation:START] +[TEST:network:tcp_socket_creation:PASS] +[TEST:logging:log_levels:START] +[TEST:logging:log_levels:PASS] +[TEST:interrupts:irq_enable_disable:START] +[TEST:interrupts:irq_enable_disable:PASS] +[TEST:logging:serial_output:START] +[LOGGING_TEST] Serial test ARM64 +[TEST:logging:serial_output:PASS] +[TEST:interrupts:timer_interrupt_running:START] +[TEST:interrupts:timer_interrupt_running:PASS] +[TEST:network:loopback:START] +[TEST:network:loopback:PASS] +[SUBSYSTEM:logging:early:COMPLETE:3/3] +[TEST:timer:timer_monotonic:START] +[TEST:timer:timer_monotonic:PASS] +[TEST:filesystem:devfs_mounted:START] +[TEST:filesystem:devfs_mounted:PASS] +[TEST:syscall:arm64_socket_reset_quantum:START] +[TEST:syscall:arm64_socket_reset_quantum:PASS] +[TEST:interrupts:keyboard_irq_setup:START] +[TEST:interrupts:keyboard_irq_setup:PASS] +[TEST:filesystem:file_open_close:START] +[TEST:filesystem:file_open_close:PASS] +[SCHED_STRAND_ORACLE:aarch64:samples=10:checked=130:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=0:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=352:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=0:reap_second=0:retire_second=0:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=0:kernel=19:cleared=19] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TEST:interrupts:exception_vectors:START] +[TEST:interrupts:exception_vectors:PASS] +[TEST:network:loopback_wake_loss_counters_are_zero:START] +[TEST:network:loopback_wake_loss_counters_are_zero:PASS] +[TEST:interrupts:exception_handlers:START] +[TEST:interrupts:exception_handlers:PASS] +[TEST:process:scheduler_init:START] +[TEST:process:scheduler_init:PASS] +[TEST:system:system_stability:START] +[TEST:system:system_stability:PASS] +[TEST:interrupts:breakpoint:START] +[exception] Breakpoint (BRK #0) at 0xffff0000405480f8 +[TEST:interrupts:breakpoint:PASS] +[TEST:process:thread_creation:START] +[TEST:process:thread_creation:PASS] +[TEST:system:kernel_heap:START] +[TEST:system:kernel_heap:PASS] +[TEST:process:signal_delivery_infrastructure:START] +[TEST:process:signal_delivery_infrastructure:PASS] +[TEST:scheduler:executor_exists:START] +[TEST:scheduler:executor_exists:PASS] +[TEST:filesystem:directory_list:START] +[TEST:filesystem:directory_list:PASS] +[TEST:ipc:pipe_eof:START] +[TEST:ipc:pipe_eof:PASS] +[TEST:filesystem:filesystem_syscalls_aarch64:START] +[TEST:filesystem:filesystem_syscalls_aarch64:PASS] +[TEST:system:tty_foreground_pgrp:START] +[TEST:system:tty_foreground_pgrp:PASS] +[TEST:ipc:pipe_broken:START] +[TEST:ipc:pipe_broken:PASS] +[TEST:memory:heap_large_alloc:START] +[TEST:memory:heap_large_alloc:PASS] +[TEST:scheduler:async_waker:START] +[TEST:scheduler:async_waker:PASS] +[TEST:memory:heap_many_small:START] +[TEST:memory:heap_many_small:PASS] +[TEST:scheduler:future_basics:START] +[TEST:scheduler:future_basics:PASS] +[TEST:memory:cow_flags_aarch64:START] +[TEST:memory:cow_flags_aarch64:PASS] +[SUBSYSTEM:scheduler:early:COMPLETE:4/4] +[TEST:ipc:pipe_wake_mechanism:START] +[TEST:ipc:pipe_wake_mechanism:PASS] +[TEST:filesystem:virtio_blk_multi_read:START] +[virtio-blk] Starting multi-read stress test (10 reads)... +[virtio-blk] Read 1 of 10 complete +[virtio-blk] Read 2 of 10 complete +[virtio-blk] Read 3 of 10 complete +[virtio-blk] Read 4 of 10 complete +[virtio-blk] Read 5 of 10 complete +[virtio-blk] Read 6 of 10 complete +[virtio-blk] Read 7 of 10 complete +[virtio-blk] Read 8 of 10 complete +[virtio-blk] Read 9 of 10 complete +[virtio-blk] Read 10 of 10 complete +[virtio-blk] Multi-read stress test passed! +[TEST:filesystem:virtio_blk_multi_read:PASS] +[SUBSYSTEM:syscall:early:COMPLETE:3/3] +[TEST:filesystem:virtio_blk_sequential_read:START] +[virtio-blk] Testing sequential read of sectors 0-31... +[virtio-blk] Read sectors 0-7 OK (avail_idx wrap count: 0) +[virtio-blk] Read sectors 0-15 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-23 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-31 OK (avail_idx wrap count: 2) +[virtio-blk] Sequential read test passed! (32 sectors, 2 queue wraps) +[TEST:filesystem:virtio_blk_sequential_read:PASS] +[TEST:interrupts:softirq_aarch64:START] +[TEST:interrupts:softirq_aarch64:PASS] +[SUBSYSTEM:system:early:COMPLETE:4/4] +[TEST:filesystem:virtio_blk_write_read_verify:START] +[virtio-blk] Testing write-read-verify cycle... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Reading original data from sector 1000... +[virtio-blk] Original first 16 bytes: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00] +[virtio-blk] Test pattern first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Writing test pattern to sector 1000... +[virtio-blk] Write succeeded +[virtio-blk] Reading back sector 1000... +[virtio-blk] Readback first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Restoring original data to sector 1000... +[virtio-blk] Write-read-verify test passed! All 512 bytes match. +[TEST:filesystem:virtio_blk_write_read_verify:PASS] +[TEST:network:loopback_recv_wake_when_idle:START] +[TEST:filesystem:virtio_blk_invalid_sector:START] +[virtio-blk] Testing invalid sector read... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Invalid sector correctly rejected: Sector out of range +[virtio-blk] Invalid sector test passed! +[TEST:filesystem:virtio_blk_invalid_sector:PASS] +[TEST:timer:timer_quantum_reset_aarch64:START] +[TEST:timer:timer_quantum_reset_aarch64:PASS] +[SUBSYSTEM:interrupts:early:COMPLETE:8/8] +[TEST:memory:guard_page_exists:START] +[TEST:memory:guard_page_exists:PASS] +[TEST:filesystem:virtio_blk_uninitialized_read:START] +[virtio-blk] Testing uninitialized device handling... +[virtio-blk] Device is initialized (expected during normal boot) +[virtio-blk] Verified: read_sector checks BLOCK_DEVICE.is_none() and returns error +[virtio-blk] Uninitialized test passed (device was already initialized)! +[TEST:filesystem:virtio_blk_uninitialized_read:PASS] +[TEST:memory:stack_layout:START] +[TEST:memory:stack_layout:PASS] +[SUBSYSTEM:filesystem:early:COMPLETE:10/10] +[TEST:memory:stack_allocation:START] +[TEST:memory:stack_allocation:PASS] +[TEST:timer:ring_span_report:START] +[TEST:memory:user_stack_base:START] +[TEST:memory:user_stack_base:PASS] +[TEST:process:arm64_signal_frame_conversion:START] +[TEST:process:arm64_signal_frame_conversion:PASS] +[TEST:ipc:fd_table_creation:START] +[TEST:ipc:fd_table_creation:PASS] +[SUBSYSTEM:process:early:COMPLETE:6/6] +[TEST:memory:user_stack_size:START] +[TEST:memory:user_stack_size:PASS] +[TEST:ipc:fd_alloc_close:START] +[TEST:ipc:fd_alloc_close:PASS] +[TEST:memory:user_stack_top:START] +[TEST:memory:user_stack_top:PASS] +[TEST:ipc:create_pipe:START] +[TEST:ipc:create_pipe:PASS] +[TEST:memory:user_stack_guard:START] +[TEST:memory:user_stack_guard:PASS] +[TEST:ipc:pty_support_aarch64:START] +[TEST:ipc:pty_support_aarch64:PASS] +[TEST:memory:user_stack_alignment:START] +[TEST:memory:user_stack_alignment:PASS] +[SUBSYSTEM:ipc:early:COMPLETE:8/8] +[TEST:memory:kernel_stack_base:START] +[TEST:memory:kernel_stack_base:PASS] +[TEST:memory:kernel_stack_size:START] +[TEST:memory:kernel_stack_size:PASS] +[TEST:memory:kernel_stack_top:START] +[TEST:memory:kernel_stack_top:PASS] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=when_idle:budget_ms=200:elapsed_tick_ms=130:elapsed_ctr_ms=202:ctx_delta=128:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x0:cpu_silence_ms=961:silence_cpu=0:woke_ms=835:verdict=ok] +[TEST:network:loopback_recv_wake_when_idle:PASS] +[TEST:memory:kernel_stack_guard:START] +[TEST:memory:kernel_stack_guard:PASS] +[TEST:network:loopback_recv_wake_under_load:START] +[TEST:memory:kernel_stack_alignment:START] +[TEST:memory:kernel_stack_alignment:PASS] +[TEST:memory:stack_in_range:START] +[TEST:memory:stack_in_range:PASS] +[TEST:memory:stack_grows_down:START] +[TEST:memory:stack_grows_down:PASS] +[TEST:memory:stack_depth:START] +[TEST:memory:stack_depth:PASS] +[TEST:memory:stack_frame_size:START] +[TEST:memory:stack_frame_size:PASS] +[RING_SPAN:cpu=0:span_ms=1494:writes=548:dropped=0:ticks_total=3984:tick_events=62] +[TEST:timer:ring_span_report:PASS] +[TEST:memory:stack_red_zone:START] +[TEST:memory:stack_red_zone:PASS] +[SUBSYSTEM:timer:early:COMPLETE:6/6] +[SUBSYSTEM:memory:early:COMPLETE:24/24] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=under_load:budget_ms=200:elapsed_tick_ms=130:elapsed_ctr_ms=200:ctx_delta=322:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0xc:cpu_silence_ms=1104:silence_cpu=0:woke_ms=975:verdict=ok] +[TEST:network:loopback_recv_wake_under_load:PASS] +[TEST:network:loopback_pump_does_not_busy_spin:START] +[TEST:network:loopback_pump_does_not_busy_spin:PASS] +[TEST:network:tcp_final_ack_survives_accept_publish_race:START] +[TEST:network:tcp_final_ack_survives_accept_publish_race:PASS] +[TEST:network:arm64_net_softirq_registration:START] +[TEST:network:arm64_net_softirq_registration:PASS] +[TEST:network:net_lock_guard_masks_interrupt_source:START] +[TEST:network:net_lock_guard_masks_interrupt_source:PASS] +[SUBSYSTEM:network:early:COMPLETE:12/12] +[STAGE:early:COMPLETE:91/118] +[STAGE:sched:ADVANCE] +[SUBSYSTEM:scheduler:sched:START] +[SUBSYSTEM:filesystem:sched:START] +[TEST:scheduler:kthread_spawn_verify:START] +[TEST:filesystem:block_wedge_oracle:START] +[SUBSYSTEM:process:sched:START] +[TEST:process:fork_exit_defer_reclaim_pairing_test:START] +[TEST:scheduler:kthread_spawn_verify:PASS] +[BLOCK_WEDGE_ORACLE:locked=1:wedged=1:refused=1:parked=0:refuse_ms=0] +[TEST:filesystem:block_wedge_oracle:PASS] +[TEST:scheduler:workqueue_operational:START] +[TEST:scheduler:workqueue_operational:PASS] +[SUBSYSTEM:filesystem:sched:COMPLETE:1/1] +[SUBSYSTEM:scheduler:sched:COMPLETE:2/2] +[PT_RETIRE_ORACLE:aarch64:cycles=64:used_before=53:used_after=53:expected_tables=9:roots=64:returned=640:lost=0:kstack_returns=64] +[PT_LEAF_ORACLE:aarch64:cycles=64:expected=192:recorded=192:released=192:returned=192:live_refused=0:used_before=53:used_after=53] +[TEST:process:fork_exit_defer_reclaim_pairing_test:PASS] +[TEST:process:exec_detach_oracle:START] +manager.create_process [ARM64]: ENTRY - name='exec_detach_leader', elf_size=180 +manager.create_process [ARM64]: Generated PID 69 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4404c000-0x4405c000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4404c000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 69 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 69 +[EXEC_DETACH_ORACLE:aarch64:bodies=2:fail_preserved=2:sibling_refused=2:success_detached=2:fresh_root=2:tgid_self=2:custody_balance=0:leaf_residual=16:stack_residual=18:kstack_frames_released=0:old_group_reached_pre=2:old_group_missed_post=2:self_group_reached_post=2] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:clone_admission_oracle:START] +[CLONE_ADMISSION_ORACLE:aarch64:admitted=1:refused=2:creating_refused=1:published_admitted=2:balance=0] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:init_designation_oracle:START] +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a1', elf_size=8, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a2', elf_size=120, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +[INIT_DESIGNATION_ORACLE:aarch64:construct_failed=2:construct_undecided=0:construct_residual=0:construct_roots_retired=2:construct_leaf_balance=0:construct_commit_balance=0:refused=4:accepted=1:published=1:retired=1:held_error_removals=1:reparented=1:reparent_skipped=1:ordinary_allocated=5:reserved_collisions=0:designation_balance=0] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_group_refusal_oracle:START] +[INIT_GROUP_REFUSAL_ORACLE:aarch64:none_probes=3:none_refusals=0:init_refused=1:alias_refused=1:alias_pid_refused=0:nonit_probes=2:nonit_refusals=0:rows_delta=0:refusal_counter_delta=0:designation_residual=0:balance=0] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:kernel_stack_ownership_oracle:START] +[CREATION_LOCK_ORDER:INJECTED:PM_HELD] +[KSTACK_OWNER_ORACLE:aarch64:creation_rows=1000:creation_owned=1000:one_owner=1000:two_owner=0:zero_owner=0:fork_rows=1:fork_owned=1:slot_returns_exact_one=1:slot_alloc_delta=1000:slot_free_delta=1000:slot_balance=0:cohort_enrolled=1000:cohort_returned=1000:cohort_double_return=0:foreign_alloc_delta=0:foreign_returned=0:frames_mapped_delta=0:frames_released_delta=0:frame_balance=0:frame_used_delta=0:frame_used_bounded=1:live_checks=1106:live_refusals_production=0:live_refusals_injected=1:drop_refused_live=0:pte_overwrite_refusals=0:pub_pooled=1073:pub_sched_owned=1073:pub_row_residual=0:pub_unowned=0:classifier_sched_owned=1:classifier_row_residual=1:classifier_unowned=1:classifier_not_pooled=1:sched_publications=28:sched_pm_held_production=0:sched_pm_held_injected=1:reconciliation_diff=0:reconciliation_skew_bound=6:balance=0] +[TEST:process:kernel_stack_ownership_oracle:PASS] +[TEST:process:creating_dispatch_refusal:START] +manager.create_process [ARM64]: ENTRY - name='creating_dispatch_probe', elf_size=180 +manager.create_process [ARM64]: Generated PID 86 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x44059000-0x44069000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x44059000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 86 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 86 +[CREATING_DISPATCH_ORACLE_DIAG:aarch64:refusal_delta=2:leaf_residual=16:user_stack_residual=16:balance=0:settle_rounds=3:root=0x44042000:root_release_done=1:probe_hw_clear=1:probe_shadow_clear=1:probe_cached_clear=1:retire_hw_blocked=0:retire_shadow_blocked=0:retire_cached_blocked=0] +[CREATING_DISPATCH_ORACLE:aarch64:injected=1:refused_via_dispatch=1:requeue_retried=1:dispatched_after_publish=1:balance=0:leaf_residual=16:user_stack_residual=16] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:tombstone_join_oracle:START] +[TOMBSTONE_JOIN_ORACLE:aarch64:retire_second=1:reap_second=1:removed=2:resident_delta=0:tombstone_rows=0:PASS] +[TEST:process:tombstone_join_oracle:PASS] +[TEST:process:retirement_fence_gate:START] +[TEST:process:retirement_fence_gate:PASS] +[TEST:process:reclaim_progress_gate:START] +[TEST:process:reclaim_progress_gate:PASS] +[TEST:process:exit_kick_protocol_gate:START] +[exit_kick_gate] budget_anchor=test_phase anchor_age_at_gate_entry_ms=2225 budget_ms=60000 gate_ceiling_ms=45000 +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542989f0:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542989f0:cpu=2] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542989f0:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542989f0:cpu=2] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542989f0:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542989f0:cpu=2] +[TEST:process:exit_kick_protocol_gate:PASS] +[TEST:process:exit_kick_worker_window_isolation:START] +[exit_kick_worker_isolation] budget_anchor=test_phase anchor_age_at_entry_ms=2248 budget_ms=60000 scenario_ceiling_ms=1500 +[exit_kick_worker_isolation] scenario=before_union_worker_1 start=1 +[LR_NONTEXT:site=save-el1:tid=29:lr=0x3:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0x3:cpu=2] +[exit_kick_gate] wait=before_union_worker_1 breadcrumb=1 elapsed_ms=1001 progress_work=43 progress_exit=0 re_kick_sgis=57 +[exit_kick_gate] wait=before_union_worker_1 cause=absolute_ceiling elapsed_ms=1501 window_budget_ms=1500 re_kick_sgis=87 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=63 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=0 worker_2_progress_final=31 worker_3_progress_start=2 worker_3_progress_final=31 last_advance_ms_ago=24 late_true=0 +[exit_kick_worker_isolation] scenario=before_union_worker_1 elapsed_ms=1502 cause=absolute_ceiling target=none progress=[1, 31, 31] completed=6 joined=3 +[exit_kick_worker_isolation] scenario=after_worker_1 start=1 +[STRAND_INJECT_ORACLE:aarch64:legA_exercised=1:legA_recovered=1:legB_exercised=1:legB_recovered=1:stranded=0] +[exit_kick_gate] wait=after_worker_1 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=0 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_1 elapsed_ms=801 cause=no_progress target=worker_1 progress=[1, 17, 17] completed=6 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 1 made no progress +[exit_kick_worker_isolation] scenario=after_worker_2 start=1 +[exit_kick_gate] wait=after_worker_2 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=0 worker_2_progress_final=1 worker_3_progress_start=2 worker_3_progress_final=17 last_advance_ms_ago=799 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_2 elapsed_ms=800 cause=no_progress target=worker_2 progress=[17, 1, 17] completed=5 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 2 made no progress +[exit_kick_worker_isolation] scenario=after_worker_3 start=1 +[SCHED_STRAND_ORACLE:aarch64:samples=108:checked=650:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=3630:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=2706:cleared=2709] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[exit_kick_gate] wait=after_worker_3 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=0 worker_2_progress_final=17 worker_3_progress_start=1 worker_3_progress_final=1 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_3 elapsed_ms=801 cause=no_progress target=worker_3 progress=[17, 17, 1] completed=3 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 3 made no progress +[exit_kick_worker_isolation] scenario=after_healthy start=1 +[exit_kick_worker_isolation] scenario=after_healthy elapsed_ms=2 cause=success target=none progress=[2, 2, 2] completed=7 joined=3 +[exit_kick_worker_isolation] healthy_baseline=PASS +[exit_kick_worker_isolation] fixture_elapsed_ms=4036 +[TEST:process:exit_kick_worker_window_isolation:PASS] +[TEST:process:exit_kick_budget_anchor_isolation:START] +[exit_kick_budget_anchor] pre_test_delay_ms=1217 fixture_budget_ms=1000 fixture_gate_ceiling_ms=600 +[exit_kick_budget_anchor] scenario=inherited_kernel_entry_anchor anchor=inherited cause=phase_one_ceiling target=none elapsed_ms=0 budget_age_at_entry_ms=1219 +[exit_kick_budget_anchor] scenario=test_phase_entry_anchor anchor=test_phase cause=no_progress target=worker_1 elapsed_ms=402 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] scenario=gate_window_exhaustion anchor=test_phase cause=gate_ceiling target=none elapsed_ms=605 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] fixture_elapsed_ms=2233 +[TEST:process:exit_kick_budget_anchor_isolation:PASS] +[TEST:process:census_widen_oracle:START] +[CENSUS_WIDEN_ORACLE:aarch64:arm_target=0:baseline_reported=0:armed_reported=1:tid=1215:shape=ready_queued_nondispatching:queued_nondispatching=1:queued_nondispatch_ms=5634:cpu_silence_ms=5634:joined=1:retired=1:PASS] +[TEST:process:census_widen_oracle:PASS] +[SUBSYSTEM:process:sched:COMPLETE:14/14] +[STAGE:sched:COMPLETE:108/118] +[boot] All boot tests passed! +[PT_ROOT_CUSTODY:no_proof=2:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=79] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=4205:cleared=4208] +[PIN_GUARD_ORACLE:aarch64:home=1:here=0:reclaim=1:requeue=1:previous=1:on_home=3:refused=3:census_clean=1:verdict=PASS] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TIMER_WAKE_LATENCY_ORACLE:aarch64:sleep_ms=10:peers=8:overrun_ms=2:bound_ms=100:quantum_ms=10:round_ms=80:wake_enqueues=1:peers_started=8:peers_spinning=8:backstops=0:setup_ms=5:window_ms=19:measured=1:PASS] + +======================================== + Breenix ARM64 Boot Complete! +======================================== + +Hello from ARM64! + +[boot] Launching init from pre-loaded ELF... +manager.create_process_with_argv [ARM64]: ENTRY - name='init', elf_size=298664, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f5d0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 1 +[INIT_DESIGNATION:aarch64:designated_pid=1:reserved_collisions=0] +[STAGE:proc:ADVANCE] +[SUBSYSTEM:ipc:proc:START] +[TEST:ipc:telnetd_dependencies_aarch64:START] +[TEST:ipc:telnetd_dependencies_aarch64:PASS] +[SUBSYSTEM:syscall:proc:START] +[SUBSYSTEM:process:proc:START] +[TEST:syscall:fcntl_pm_contention_oracle:START] +[TEST:process:current_thread_exists:START] +[TEST:process:current_thread_exists:PASS] +[SUBSYSTEM:ipc:proc:COMPLETE:1/1] +[TEST:process:process_list_populated:START] +[TEST:process:process_list_populated:PASS] +[FCNTL_PM_CONTENTION_ORACLE:aarch64:arm_wait_us=100:armed=1:acquired=1:holder_cpu=1:pm_busy_probe=1:calls=64:eagain=0:first_errno=9:first_wait_us=8073:hold_safety=0:hold_done=1:joined=1:PASS] +[TEST:syscall:fcntl_pm_contention_oracle:PASS] +[TEST:process:frame_custody_healthy_counters:START] +[TEST:process:frame_custody_healthy_counters:PASS] +[TEST:syscall:irq_hold_oracle:START] +[SUBSYSTEM:process:proc:COMPLETE:3/3] +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +[IRQ_HOLD_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12012:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:irq_hold_oracle:PASS] +[TEST:syscall:tty_irq_pm_oracle:START] +[TTY_IRQ_PM_ORACLE:aarch64:fg_unset_before=1:pm_blocking_acquires=0:deferred=2:pgrp_set_by_entry=0:processed=2:buffered=2:irqs_enabled_before=1:holder_cpu=1:pm_busy_probe=1:hold_us=20000:entry_us=0:joined=1:adopted=1:adopted_pgrp=821:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_pm_oracle:PASS] +[TEST:syscall:tty_irq_fg_oracle:START] + +[TTY_IRQ_FG_ORACLE:aarch64:fg_known=822:target_absent=1:fg_lock_touches=0:fg_blocking_acquires=0:snapshot_reads=3:processed=2:buffered=1:irqs_enabled_before=1:holder_cpu=1:fg_busy_probe=1:hold_us=20000:entry_us=130:joined=1:sig_calls=1:sig_pid=822:sig_num=2:snapshot_agrees=1:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_fg_oracle:PASS] +[TEST:syscall:udp_socket_lock_oracle:START] +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +[UDP_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12012:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_socket_lock_oracle:PASS] +[TEST:syscall:udp_ports_lock_oracle:START] +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +[UDP_PORTS_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:driver_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=21:hold_us=12008:refused=8:delivered=13:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_ports_lock_oracle:PASS] +[SUBSYSTEM:syscall:proc:COMPLETE:6/6] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[boot] Reset 4 idle thread contexts (CPUs online: 4) +EL0_SYSCALL: First syscall from userspace (SPSR confirms EL0) +[ OK ] syscall path verified +[STAGE:user:ADVANCE] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[USER_RSP_SCRATCH_EL_CENSUS:el0_installs=2:el1_skipped=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[init] Breenix init starting (PID 1) +[spawn] path='/bin/heartbeat' +manager.create_process_with_argv [ARM64]: ENTRY - name='heartbeat', elf_size=303616, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 90 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f85c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 90 +[spawn] Created child PID 90 for parent PID 1 +[spawn] Success: child PID 90 scheduled +[init] heartbeat started (PID 90) +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=1:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=2:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=early:probe1=-22:probe2=-22:expected=-22] +[spawn] path='/bin/block_eintr_oracle' +[heartbeat] tid=1236 uptime_ms=9296 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='block_eintr_oracle', elf_size=304752, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 91 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f938 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 91 +[spawn] Created child PID 91 for parent PID 1 +[spawn] Success: child PID 91 scheduled +F123456789SC[syscall] exit(0) pid=92 name=block_eintr_oracle_child_92 +[TTBR0_ASID_CENSUS:untagged=0:tagged=2384:kernel=6967:cleared=9323] +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=612:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=15:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=2122:kstack=0:uva=13:smallint=2:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=2122:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=616:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=612:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=8:smallint=2:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el0:text=0:kstack=0:uva=13:smallint=2:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el1-restore-frame-elr:text=2117:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-restore-frame-elr:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=ctx-x30:text=2286:kstack=0:uva=2:smallint=103:other=9] +[RESUME_PC_CENSUS:cpu=1:source=ctx-elr-el1:text=2398:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el1:text=2004:kstack=0:uva=0:smallint=103:other=10] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el1:text=2005:kstack=0:uva=0:smallint=103:other=9] +[RESUME_PC_CENSUS:cpu=1:source=lr-save-el0:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=1:source=lr-restore-el0:text=0:kstack=0:uva=2:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el1-restore-frame-elr:text=2450:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-restore-frame-elr:text=0:kstack=0:uva=13:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=el0-first-entry-frame-elr:text=0:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=ctx-x30:text=2498:kstack=3:uva=13:smallint=231:other=27] +[RESUME_PC_CENSUS:cpu=2:source=ctx-elr-el1:text=2759:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el1:text=2175:kstack=3:uva=0:smallint=231:other=27] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el1:text=2189:kstack=3:uva=0:smallint=231:other=27] +[RESUME_PC_CENSUS:cpu=2:source=lr-save-el0:text=0:kstack=0:uva=10:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=2:source=lr-restore-el0:text=0:kstack=0:uva=13:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el1-restore-frame-elr:text=2550:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=el0-restore-frame-elr:text=0:kstack=0:uva=13:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=ctx-x30:text=2603:kstack=0:uva=13:smallint=271:other=19] +[RESUME_PC_CENSUS:cpu=3:source=ctx-elr-el1:text=2893:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=lr-save-el1:text=2272:kstack=0:uva=0:smallint=271:other=18] +[RESUME_PC_CENSUS:cpu=3:source=lr-restore-el1:text=2261:kstack=0:uva=0:smallint=271:other=19] +[RESUME_PC_CENSUS:cpu=3:source=lr-save-el0:text=0:kstack=0:uva=4:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=3:source=lr-restore-el0:text=0:kstack=0:uva=13:smallint=0:other=0] +[heartbeat] tid=1236 uptime_ms=10299 kbd_nonzero=0 +F123456789SC[SCHED_STRAND_ORACLE:aarch64:samples=207:checked=971:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5630:worst_cpu_scheduler_silence_ms=5694:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=6134:kernel=11087:cleared=17150] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[syscall] exit(0) pid=93 name=block_eintr_oracle_child_93 +[TTBR0_ASID_CENSUS:untagged=0:tagged=6619:kernel=11603:cleared=18143] + +[CTX596_ELR_DIVERGENCE] tid=1237 cpu=2 prev_elr=0xffff00004057360c x30=0xffff0000405bba2c ctx_elr=0xffff0000405bba2c + +[INLINE_SAVE_OVERWRITE] tid=1237 sp=0xffff0000542863b0 old_sp=0xffff0000542863b0 saved_sp=0xffff0000542863b0 delta=0x0 saved_lr=0xffff0000405c98f0 saved_slot20=0xffff0000405c98f0 slot20=0xffff0000405c98f0 elr=0xffff0000405bba2c x30=0xffff0000405bba2c +[heartbeat] tid=1236 uptime_ms=11301 kbd_nonzero=0 +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[syscall] exit(0) pid=91 name=block_eintr_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=10321:kernel=15678:cleared=25889] +[init] block_eintr_oracle exited pid=91 code=0 +[spawn] path='/bin/futex_handoff_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='futex_handoff_oracle', elf_size=291984, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 94 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000ef08 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 94 +[spawn] Created child PID 94 for parent PID 1 +[spawn] Success: child PID 94 scheduled +[FUTEX_HANDOFF_ORACLE:aarch64:driven=2:stage1_ret=EAGAIN:stage1_wake=0:stage1_parked=0:stage2_ret=0:stage2_wake=1:stage2_parked=0:stage3_ret=ETIMEDOUT:stage3_elapsed_ok=1:stage3_elapsed_ms=50:arm_delay_us=26:rescues=0:queue_residual=0:balance=0] +[FUTEX_HANDOFF_ORACLE_DRIVER:s1=-11:s2=0:s3=-110] +[syscall] exit(0) pid=94 name=futex_handoff_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=11159:kernel=16606:cleared=27648] +[init] futex_handoff_oracle exited pid=94 code=0 +[spawn] path='/bin/poll_tcp_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='poll_tcp_oracle', elf_size=307952, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 95 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001050c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 95 +[spawn] Created child PID 95 for parent PID 1 +[spawn] Success: child PID 95 scheduled +[POLL_TCP_TIMEOUT] fd=4 timeout_ms=120 publish=none_in_window rx_len=0 revents=0x0000 +F123456789SC[heartbeat] tid=1236 uptime_ms=12302 kbd_nonzero=0 +[syscall] exit(0) pid=96 name=poll_tcp_oracle_child_96 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12279:kernel=17786:cleared=29917] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=121:late_ms=82:park_ms=80:attempts=1] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=121:late_ms=82:park_ms=80:attempts=1] +[syscall] exit(0) pid=95 name=poll_tcp_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=12297:kernel=17801:cleared=29945] +[init] poll_tcp_oracle exited pid=95 code=0 +[spawn] path='/bin/tty_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='tty_oracle', elf_size=338264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 97 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40012b34 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 97 +[spawn] Created child PID 97 for parent PID 1 +[spawn] Success: child PID 97 scheduled +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=3 (pty 2) +[pty] Unlocked PTY 2 (fd 3) +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +F123456789SC[EXEC_LOCK_ORDER:FIRST_COMMIT] +[EXEC_LOCK_ORDER:commits=1:pm_held=0:unpinned=0:missing=0] +[syscall] exit(0) pid=98 name=/bin/tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14837:kernel=20549:cleared=35168] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[syscall] exit(0) pid=97 name=tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14855:kernel=20558:cleared=35189] +[init] tty_oracle exited pid=97 code=0 +[spawn] path='/bin/exec_smoke' +manager.create_process_with_argv [ARM64]: ENTRY - name='exec_smoke', elf_size=290928, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 99 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000eb40 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 99 +[spawn] Created child PID 99 for parent PID 1 +[spawn] Success: child PID 99 scheduled +[EXEC_SMOKE:LAUNCH] +[heartbeat] tid=1236 uptime_ms=13303 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=2:pm_held=0:unpinned=0:missing=0] +[EXEC_SMOKE:TARGET_ENTER argc=2] +[EXEC_SMOKE:TARGET_OK] +[syscall] exit(0) pid=99 name=/bin/exec_smoke_target +[TTBR0_ASID_CENSUS:untagged=0:tagged=16620:kernel=22498:cleared=38867] +[EXEC_SMOKE:LAUNCHER_EXIT code=0] +[spawn] path='/usr/local/test/bin/clonevm_exec_test' +manager.create_process_with_argv [ARM64]: ENTRY - name='clonevm_exec_test', elf_size=289672, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 100 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f63c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 100 +[spawn] Created child PID 100 for parent PID 1 +[spawn] Success: child PID 100 scheduled +CLONEVM_EXEC_TEST: start +CLONEVM_EXEC_TEST: child live +CLONEVM_EXEC_TEST: live sibling refused exec +[syscall] exit(0) pid=101 name=thread-101 +CLONEVM_EXEC_TEST: child exited +[TTBR0_ASID_CENSUS:untagged=0:tagged=19732:kernel=25106:cleared=44062] +[EXEC_LOCK_ORDER:commits=3:pm_held=0:unpinned=0:missing=0] +CLONEVM_EXEC_TEST: second stage +[heartbeat] tid=1236 uptime_ms=14304 kbd_nonzero=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot2-facts.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot2-facts.txt new file mode 100644 index 000000000..3c592184f --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot2-facts.txt @@ -0,0 +1,4 @@ +[GATE_BOOT_FACTS:boot=2:host_ms=1788834869858-1788834884220:qemu_at_start=0:load_at_start=7.04:qemu_at_end=1:load_at_end=6.09:qemu_cpu_s=24.29:guest_uptime_ms=13575:ended_by=scored_pass] +[CAPTURE_DRAIN:capture=n/a:seq=n/a:edge=n/a:cpu=n/a:records=n/a:drain_ms=0] +[CAPTURE_DRAIN_EVENTS:last_events=n/a] +[QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot2-serial.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot2-serial.txt new file mode 100644 index 000000000..5e7481c10 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot2-serial.txt @@ -0,0 +1,905 @@ +EOS +======================================== + Breenix ARM64 Kernel Starting + BUILD_ID: 006a9f737534c7 +======================================== + +[CTX596_ORACLE:ARMED:force_eret=0] +[boot] DIAG_MARKER_XHCI_A +[boot] DIAG_MARKER_XHCI_B +[boot] DIAG_MARKER_XHCI_C +[boot] loader xhci_hcrst_raw=0x0 ecam=0x0 +[boot] Current exception level: EL1 +[boot] MMU already enabled (high-half kernel) +[boot] Initializing memory management (0x44000000-0x50000000)... +[boot] Memory management ready +[boot] Initializing Generic Timer... +[boot] Timer frequency: 62500000 Hz (62 MHz) +[boot] Initializing PL031 RTC... +[boot] Current timestamp: 469687 +[boot] Initializing GIC... +[gic] GICR probe 0x080a0000: WAKER=0x00000006 <<< VALID +[gic] GICR base mismatch: loader=0x00000000, using=0x080a0000 +[gic] GICD_CTLR wrote 0x53, readback=0x53 +[gic] GICR_IGROUPR0: wrote 0xFFFFFFFF, readback=0xffffffff +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[boot] GIC initialized (version 3) +[boot] Enabling UART interrupts... +[boot] Enabling GIC IRQ 33 (UART0)... +[uart] IMSC: 0x0 -> 0x50 (verify: 0x50) +[uart] FR=0x90 (RXFE=1), RIS=0x20 +[gic] IRQ 33 state (GICv3): + enabled=true, group1=true, pending=false + priority=0xa0, GICD_CTLR=0x53 + ICC_PMR=0xf0 +[boot] UART interrupts enabled +[boot] Enabling interrupts... +[boot] Interrupts enabled: true +[boot] QEMU PCI ECAM configured at 0x4010000000 +[boot] Initializing device drivers... +[drivers] Initializing driver subsystem... +[drivers] Hybrid mode: VirtIO MMIO + PCI AHCI +[drivers] Found VirtIO MMIO device: network (ID=1, version=1) +[drivers] Found VirtIO MMIO device: block (ID=2, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: GPU (ID=16, version=1) +[drivers] Found 5 VirtIO MMIO devices +[virtio-blk] Searching for block devices... +[virtio-blk] Found block device 0 at 0xa003800 +[virtio-blk] Device 0 version: 1 +[virtio-blk] Device 0 capacity: 190464 sectors (93 MB) +[virtio-blk] Device 0 queue max size: 1024 +[virtio-blk] Device 0 using v1 (legacy) queue setup at PFN 0x40a60 +[virtio-blk] Block MMIO IRQ 76 enabled for device 0 +[virtio-blk] Block device 0 initialized successfully +[virtio-blk] Initialized 1 block device(s) +[drivers] VirtIO block driver initialized +[virtio-net] Searching for network device... +[virtio-net] Found network device at 0xa003600 (slot 27) +[virtio-net] Device version: 1 +[virtio-net] MAC address: 52:54:00:12:34:56 +[virtio-net] RX queue max size: 1024 +[virtio-net] TX queue max size: 1024 +[virtio-net] Network device initialized successfully +[virtio-net] Network device IRQ 75 (will enable after net init) +[drivers] VirtIO network driver initialized +[virtio-net] Device test - MAC: 52:54:00:12:34:56 +[virtio-net] Test passed! +[virtio-gpu] Searching for GPU device... +[virtio-gpu] Found GPU device at 0xa003e00 +[virtio-gpu] Device version: 1 +[virtio-gpu] Control queue max size: 1024 +[virtio-gpu] Display: 1280x800 +[virtio-gpu] GPU device initialized successfully +[drivers] VirtIO GPU driver initialized +[virtio-gpu] Device test - Display: 1280x800 +[virtio-gpu] Test passed! +[virtio-sound] Searching for sound device... +[drivers] VirtIO sound driver init failed: No VirtIO Sound device found +[drivers] Driver subsystem initialized (MMIO) +[drivers] PCI ECAM at 0x4010000000, enumerating PCI bus... +[drivers] Found 1 PCI devices +[pci] 00:00.0 [1b36:0008] class=06/00 +[drivers] AHCI PCI init failed: No AHCI controller found +[drivers] Driver subsystem initialized (hybrid MMIO+PCI) +[boot] Found 6 devices +[drivers] Running post-init self-tests... +[virtio-blk] Testing read of sector 0... +[virtio-blk] Sector 0 data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +[virtio-blk] Read test passed! +[boot] Initializing network stack... +[net] Initializing network stack... +[net] MAC address: 52:54:00:12:34:56 +NET: IP address: 10.0.2.15 +NET: Gateway: 10.0.2.2 +Network stack initialized +NET: Sending ARP request for gateway 10.0.2.2 +ARP request sent successfully +NET: Gateway ARP not resolved during init; will resolve via IRQ path +NET: Sending ICMP echo request to gateway 10.0.2.2 +NET: ARP cache miss for 10.0.2.2, sending ARP request +NET: Failed to send ping: ArpMiss: reply will populate cache via IRQ +NET: Network initialization complete +[virtio-net] Enabling IRQ 75 for network device +NET: pre-primed NetRx softirq for bootstrap callback re-enable +[boot] Initializing filesystem... +[ext2] Using VirtIO block device (190464 sectors) +[boot] ext2 root filesystem mounted +[boot] No home filesystem: No home block device available (expected at device index 3 or 1) (continuing) +[boot] devfs initialized at /dev +[boot] devptsfs initialized at /dev/pts +[boot] CPU detected: ARM Cortex-A72 +[boot] procfs initialized at /proc +[boot] TTY subsystem initialized +[boot] Initializing graphics... +[virtio-gpu] GPU device already initialized +[arm64-fb] Shell framebuffer initialized: 1280x800 +[graphics] Framebuffer: 1280x800 +[graphics] Particle system initialized +[render_queue] Initialized (64KB buffer) +[graphics] Split-screen terminal UI initialized +[boot] Initializing VirtIO keyboard... +[virtio-input] Searching for input devices (ID=18)... +[virtio-input] Slot 27 at 0xa003600: device_id=1 +[virtio-input] Slot 28 at 0xa003800: device_id=2 +[virtio-input] Slot 29 at 0xa003a00: device_id=18 +[virtio-input] Found tablet at 0xa003a00 (slot 29, supports EV_ABS) +[virtio-input] Tablet device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 77 for tablet +[virtio-input] Tablet initialized (16 buffers) +[virtio-input] Slot 30 at 0xa003c00: device_id=18 +[virtio-input] Found keyboard at 0xa003c00 (slot 30, no EV_ABS) +[virtio-input] Keyboard device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 78 for keyboard +[virtio-input] Keyboard initialized (64 buffers) +[virtio-input] Slot 31 at 0xa003e00: device_id=16 +[boot] VirtIO keyboard initialized +[boot] Initializing per-CPU data... +[boot] Per-CPU data initialized +[boot] Initializing process manager... +[boot] Process manager initialized +[boot] Initializing scheduler... +[boot] Scheduler initialized +[boot] Workqueue subsystem initialized +[boot] Softirq subsystem initialized +[boot] Render thread spawned (tid=4) +[boot] Tracing subsystem initialized and enabled +[boot] Pre-loading /sbin/init from ext2 (before timer)... +[net] ICMP echo reply received from 10.0.2.2 seq=1 +[boot] Init binary pre-loaded: 298664 bytes +[xhci] post-activation: MSI_EVENT_COUNT=0 EVENT_COUNT=0 POLL_COUNT=0 SPI_ACTIVATED=false +[boot] Initializing timer interrupt... +[timer] Timer configured for ~1000 Hz (62500 ticks per interrupt) +[timer] Using virtual timer (PPI 27) +[boot] Timer interrupt initialized +[smp] CPU 0 MPIDR=0x80000000, stack_base=0x43000000 +[smp] Probing secondary CPUs via PSCI... +[smp] CPU 1:1 PSCI CPU@_1ON sAuccess (raw_status=B0C) +[smp] CDPU 2: P2E@1ASCBCDIEe CPU_ON suFccGesseF (r2awG1_status=0) +[smp] C3@1PU 3:ABCD PSCI CPU_OEeFGN su3ccess (raw_status=0) +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[smp] CPU 4 attempt 1/4: HVC64 failed (ret=-2), trying HVC32... +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gTic] 1ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[smp] PSCI CPU_ON failed for CPU 4 after 1 attempts: ret=-2 (MPIDR=0x4 entry=0x400802b8) +[smp] CPU 4: PSCI CPU_ON failed (ret=-2), stopping probe +[smp] initialization_watchdog gap_ms=85 local_ceiling_ms=15000 margin_ms=3000 effective_ceiling_ms=20000 +[smp] 4 CPUs online +[boot] Running parallel boot tests... +T2T3[BOOT_TESTS:START] +[STAGE:serial:ADVANCE] +[BOOT_TESTS:TOTAL:118] +[BOOT_TESTS:SERIAL_BOOT:3] +[BOOT_TESTS:EARLY_BOOT:91] +[BOOT_TESTS:STAGED:27 tests waiting for later stages] +T4T5T6T7T8T9T0[SUBSYSTEM:process:serial:START] +[TEST:process:frame_custody_refusal_gate:START] +[TEST:process:frame_custody_refusal_gate:PASS] +[TEST:process:page_table_custody_disposition_gate:START] +[EXEC_FAILED_RELEASE_ORACLE:aarch64:used_before=1:used_after=1:leaf_recorded=1:leaf_released=1:leaf_returned=1:tables_returned=4:roots_retired=1:live_refused=0] +[TEST:process:page_table_custody_disposition_gate:PASS] +[TEST:process:block_current_departure_gate:START] +[TEST:process:block_current_departure_gate:PASS] +[SUBSYSTEM:process:serial:COMPLETE:3/3] +[STAGE:serial:COMPLETE:3/118] +[STAGE:early:ADVANCE] +[SUBSYSTEM:memory:early:START] +[TEST:memory:framework_sanity:START] +[TEST:memory:framework_sanity:PASS] +[SUBSYSTEM:interrupts:early:START] +[SUBSYSTEM:filesystem:early:START] +[SUBSYSTEM:scheduler:early:START] +[TEST:scheduler:wakes_are_placed_on_online_cpus:START] +[TEST:filesystem:vfs_init:START] +[TEST:scheduler:wakes_are_placed_on_online_cpus:PASS] +[TEST:filesystem:vfs_init:PASS] +[SUBSYSTEM:process:early:START] +[TEST:process:deferred_fault_ring_overflow_injection:START] +[TEST:process:deferred_fault_ring_overflow_injection:PASS] +[SUBSYSTEM:network:early:START] +[TEST:network:network_stack_init:START] +[TEST:network:network_stack_init:PASS] +[SUBSYSTEM:ipc:early:START] +[TEST:ipc:pipe_buffer_basic:START] +[SUBSYSTEM:logging:early:START] +[TEST:logging:logging_init:START] +[TEST:logging:logging_init:PASS] +[TEST:ipc:pipe_buffer_basic:PASS] +[SUBSYSTEM:syscall:early:START] +[TEST:syscall:syscall_dispatch:START] +[TEST:syscall:syscall_dispatch:PASS] +[SUBSYSTEM:timer:early:START] +[TEST:timer:timer_init:START] +[TEST:timer:timer_init:PASS] +[SUBSYSTEM:system:early:START] +[TEST:system:boot_sequence:START] +[TEST:system:boot_sequence:PASS] +[TEST:interrupts:interrupt_controller_init:START] +[TEST:interrupts:interrupt_controller_init:PASS] +[TEST:memory:heap_alloc_basic:START] +[TEST:memory:heap_alloc_basic:PASS] +[TEST:interrupts:irq_enable_disable:START] +[TEST:interrupts:irq_enable_disable:PASS] +[TEST:logging:log_levels:START] +[TEST:logging:log_levels:PASS] +[TEST:interrupts:timer_interrupt_running:START] +[TEST:interrupts:timer_interrupt_running:PASS] +[TEST:logging:serial_output:START] +[LOGGING_TEST] Serial test ARM64 +[TEST:logging:serial_output:PASS] +[TEST:system:system_stability:START] +[TEST:system:system_stability:PASS] +[SUBSYSTEM:logging:early:COMPLETE:3/3] +[TEST:timer:timer_ticks:START] +[TEST:timer:timer_ticks:PASS] +[TEST:interrupts:keyboard_irq_setup:START] +[TEST:interrupts:keyboard_irq_setup:PASS] +[TEST:timer:timer_delay:START] +[TEST:interrupts:exception_vectors:START] +[TEST:interrupts:exception_vectors:PASS] +[TEST:timer:timer_delay:PASS] +[TEST:process:process_manager_init:START] +[TEST:process:process_manager_init:PASS] +[TEST:interrupts:exception_handlers:START] +[TEST:interrupts:exception_handlers:PASS] +[TEST:filesystem:devfs_mounted:START] +[TEST:filesystem:devfs_mounted:PASS] +[TEST:process:scheduler_init:START] +[TEST:process:scheduler_init:PASS] +[TEST:timer:timer_monotonic:START] +[TEST:timer:timer_monotonic:PASS] +[TEST:process:thread_creation:START] +[TEST:process:thread_creation:PASS] +[TEST:filesystem:file_open_close:START] +[TEST:filesystem:file_open_close:PASS] +[TEST:system:kernel_heap:START] +[TEST:system:kernel_heap:PASS] +[TEST:process:signal_delivery_infrastructure:START] +[TEST:process:signal_delivery_infrastructure:PASS] +[TEST:syscall:arm64_pty_ioctl_path:START] +manager.create_process [ARM64]: ENTRY - name='pty_ioctl_test', elf_size=276816 +manager.create_process [ARM64]: Generated PID 2 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x4000e0b0 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x40017000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4401e000-0x4402e000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4401e000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 2 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 2 +[TEST:syscall:arm64_pty_ioctl_path:PASS] +[TEST:filesystem:directory_list:START] +[TEST:filesystem:directory_list:PASS] +[TEST:memory:frame_allocator:START] +[TEST:memory:frame_allocator:PASS] +[SCHED_STRAND_ORACLE:aarch64:samples=10:checked=130:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=0:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=351:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=0:reap_second=0:retire_second=0:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=0:kernel=30:cleared=30] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TEST:network:virtio_net_probe:START] +[TEST:network:virtio_net_probe:PASS] +[TEST:ipc:pipe_eof:START] +[TEST:ipc:pipe_eof:PASS] +[TEST:process:arm64_signal_frame_conversion:START] +[TEST:process:arm64_signal_frame_conversion:PASS] +[TEST:timer:timer_quantum_reset_aarch64:START] +[TEST:timer:timer_quantum_reset_aarch64:PASS] +[TEST:syscall:arm64_socket_reset_quantum:START] +[TEST:syscall:arm64_socket_reset_quantum:PASS] +[SUBSYSTEM:process:early:COMPLETE:6/6] +[TEST:interrupts:breakpoint:START] +[exception] Breakpoint (BRK #0) at 0xffff0000405480f8 +[TEST:interrupts:breakpoint:PASS] +[TEST:filesystem:filesystem_syscalls_aarch64:START] +[TEST:system:tty_foreground_pgrp:START] +[TEST:system:tty_foreground_pgrp:PASS] +[SUBSYSTEM:syscall:early:COMPLETE:3/3] +[TEST:filesystem:filesystem_syscalls_aarch64:PASS] +[TEST:network:socket_creation:START] +[TEST:network:socket_creation:PASS] +[TEST:interrupts:softirq_aarch64:START] +[TEST:interrupts:softirq_aarch64:PASS] +[TEST:network:tcp_socket_creation:START] +[TEST:network:tcp_socket_creation:PASS] +[TEST:memory:heap_large_alloc:START] +[TEST:filesystem:virtio_blk_multi_read:START] +[TEST:memory:heap_large_alloc:PASS] +[virtio-blk] Starting multi-read stress test (10 reads)... +[virtio-blk] Read 1 of 10 complete +[virtio-blk] Read 2 of 10 complete +[virtio-blk] Read 3 of 10 complete +[virtio-blk] Read 4 of 10 complete +[virtio-blk] Read 5 of 10 complete +[virtio-blk] Read 6 of 10 complete +[virtio-blk] Read 7 of 10 complete +[virtio-blk] Read 8 of 10 complete +[virtio-blk] Read 9 of 10 complete +[virtio-blk] Read 10 of 10 complete +[virtio-blk] Multi-read stress test passed! +[TEST:filesystem:virtio_blk_multi_read:PASS] +[TEST:ipc:pipe_broken:START] +[TEST:ipc:pipe_broken:PASS] +[TEST:memory:heap_many_small:START] +[TEST:memory:heap_many_small:PASS] +[TEST:filesystem:virtio_blk_sequential_read:START] +[virtio-blk] Testing sequential read of sectors 0-31... +[virtio-blk] Read sectors 0-7 OK (avail_idx wrap count: 0) +[SUBSYSTEM:interrupts:early:COMPLETE:8/8] +[TEST:network:loopback:START] +[TEST:network:loopback:PASS] +[virtio-blk] Read sectors 0-15 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-23 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-31 OK (avail_idx wrap count: 2) +[virtio-blk] Sequential read test passed! (32 sectors, 2 queue wraps) +[TEST:filesystem:virtio_blk_sequential_read:PASS] +[TEST:memory:cow_flags_aarch64:START] +[TEST:memory:cow_flags_aarch64:PASS] +[TEST:scheduler:executor_exists:START] +[TEST:scheduler:executor_exists:PASS] +[TEST:network:loopback_wake_loss_counters_are_zero:START] +[TEST:network:loopback_wake_loss_counters_are_zero:PASS] +[TEST:ipc:pipe_wake_mechanism:START] +[TEST:ipc:pipe_wake_mechanism:PASS] +[TEST:memory:guard_page_exists:START] +[TEST:memory:guard_page_exists:PASS] +[TEST:scheduler:async_waker:START] +[TEST:scheduler:async_waker:PASS] +[TEST:memory:stack_layout:START] +[TEST:memory:stack_layout:PASS] +[TEST:network:loopback_recv_wake_when_idle:START] +[TEST:memory:stack_allocation:START] +[TEST:memory:stack_allocation:PASS] +[TEST:timer:ring_span_report:START] +[TEST:scheduler:future_basics:START] +[TEST:scheduler:future_basics:PASS] +[TEST:filesystem:virtio_blk_write_read_verify:START] +[virtio-blk] Testing write-read-verify cycle... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Reading original data from sector 1000... +[virtio-blk] Original first 16 bytes: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00] +[virtio-blk] Test pattern first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Writing test pattern to sector 1000... +[virtio-blk] Write succeeded +[virtio-blk] Reading back sector 1000... +[virtio-blk] Readback first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Restoring original data to sector 1000... +[virtio-blk] Write-read-verify test passed! All 512 bytes match. +[TEST:filesystem:virtio_blk_write_read_verify:PASS] +[SUBSYSTEM:scheduler:early:COMPLETE:4/4] +[TEST:memory:user_stack_base:START] +[TEST:memory:user_stack_base:PASS] +[TEST:memory:user_stack_size:START] +[TEST:memory:user_stack_size:PASS] +[TEST:filesystem:virtio_blk_invalid_sector:START] +[virtio-blk] Testing invalid sector read... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Invalid sector correctly rejected: Sector out of range +[virtio-blk] Invalid sector test passed! +[TEST:filesystem:virtio_blk_invalid_sector:PASS] +[TEST:ipc:fd_table_creation:START] +[TEST:ipc:fd_table_creation:PASS] +[SUBSYSTEM:system:early:COMPLETE:4/4] +[TEST:ipc:fd_alloc_close:START] +[TEST:ipc:fd_alloc_close:PASS] +[TEST:ipc:create_pipe:START] +[TEST:ipc:create_pipe:PASS] +[TEST:memory:user_stack_top:START] +[TEST:memory:user_stack_top:PASS] +[TEST:filesystem:virtio_blk_uninitialized_read:START] +[virtio-blk] Testing uninitialized device handling... +[virtio-blk] Device is initialized (expected during normal boot) +[virtio-blk] Verified: read_sector checks BLOCK_DEVICE.is_none() and returns error +[virtio-blk] Uninitialized test passed (device was already initialized)! +[TEST:filesystem:virtio_blk_uninitialized_read:PASS] +[TEST:memory:user_stack_guard:START] +[TEST:memory:user_stack_guard:PASS] +[SUBSYSTEM:filesystem:early:COMPLETE:10/10] +[TEST:memory:user_stack_alignment:START] +[TEST:memory:user_stack_alignment:PASS] +[TEST:ipc:pty_support_aarch64:START] +[TEST:ipc:pty_support_aarch64:PASS] +[TEST:memory:kernel_stack_base:START] +[TEST:memory:kernel_stack_base:PASS] +[SUBSYSTEM:ipc:early:COMPLETE:8/8] +[TEST:memory:kernel_stack_size:START] +[TEST:memory:kernel_stack_size:PASS] +[TEST:memory:kernel_stack_top:START] +[TEST:memory:kernel_stack_top:PASS] +[TEST:memory:kernel_stack_guard:START] +[TEST:memory:kernel_stack_guard:PASS] +[TEST:memory:kernel_stack_alignment:START] +[TEST:memory:kernel_stack_alignment:PASS] +[TEST:memory:stack_in_range:START] +[TEST:memory:stack_in_range:PASS] +[TEST:memory:stack_grows_down:START] +[TEST:memory:stack_grows_down:PASS] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=when_idle:budget_ms=200:elapsed_tick_ms=132:elapsed_ctr_ms=200:ctx_delta=129:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x8:cpu_silence_ms=861:silence_cpu=0:woke_ms=731:verdict=ok] +[TEST:network:loopback_recv_wake_when_idle:PASS] +[TEST:memory:stack_depth:START] +[TEST:memory:stack_depth:PASS] +[TEST:network:loopback_recv_wake_under_load:START] +[TEST:memory:stack_frame_size:START] +[TEST:memory:stack_frame_size:PASS] +[TEST:memory:stack_red_zone:START] +[TEST:memory:stack_red_zone:PASS] +[SUBSYSTEM:memory:early:COMPLETE:24/24] +[RING_SPAN:cpu=0:span_ms=1489:writes=665:dropped=0:ticks_total=3962:tick_events=62] +[TEST:timer:ring_span_report:PASS] +[SUBSYSTEM:timer:early:COMPLETE:6/6] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=under_load:budget_ms=200:elapsed_tick_ms=130:elapsed_ctr_ms=200:ctx_delta=406:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x0:cpu_silence_ms=1011:silence_cpu=0:woke_ms=882:verdict=ok] +[TEST:network:loopback_recv_wake_under_load:PASS] +[TEST:network:loopback_pump_does_not_busy_spin:START] +[TEST:network:loopback_pump_does_not_busy_spin:PASS] +[TEST:network:tcp_final_ack_survives_accept_publish_race:START] +[TEST:network:tcp_final_ack_survives_accept_publish_race:PASS] +[TEST:network:arm64_net_softirq_registration:START] +[TEST:network:arm64_net_softirq_registration:PASS] +[TEST:network:net_lock_guard_masks_interrupt_source:START] +[TEST:network:net_lock_guard_masks_interrupt_source:PASS] +[SUBSYSTEM:network:early:COMPLETE:12/12] +[STAGE:early:COMPLETE:91/118] +[STAGE:sched:ADVANCE] +[SUBSYSTEM:scheduler:sched:START] +[TEST:scheduler:kthread_spawn_verify:START] +[SUBSYSTEM:filesystem:sched:START] +[TEST:filesystem:block_wedge_oracle:START] +[SUBSYSTEM:process:sched:START] +[TEST:process:fork_exit_defer_reclaim_pairing_test:START] +[TEST:scheduler:kthread_spawn_verify:PASS] +[BLOCK_WEDGE_ORACLE:locked=1:wedged=1:refused=1:parked=0:refuse_ms=0] +[TEST:filesystem:block_wedge_oracle:PASS] +[TEST:scheduler:workqueue_operational:START] +[TEST:scheduler:workqueue_operational:PASS] +[SUBSYSTEM:filesystem:sched:COMPLETE:1/1] +[PT_RETIRE_ORACLE:aarch64:cycles=64:used_before=53:used_after=53:expected_tables=9:roots=64:returned=640:lost=0:kstack_returns=64] +[PT_LEAF_ORACLE:aarch64:cycles=64:expected=192:recorded=192:released=192:returned=192:live_refused=0:used_before=53:used_after=53] +[SUBSYSTEM:scheduler:sched:COMPLETE:2/2] +[TEST:process:fork_exit_defer_reclaim_pairing_test:PASS] +[TEST:process:exec_detach_oracle:START] +manager.create_process [ARM64]: ENTRY - name='exec_detach_leader', elf_size=180 +manager.create_process [ARM64]: Generated PID 69 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4404c000-0x4405c000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4404c000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 69 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 69 +[EXEC_DETACH_ORACLE:aarch64:bodies=2:fail_preserved=2:sibling_refused=2:success_detached=2:fresh_root=2:tgid_self=2:custody_balance=0:leaf_residual=16:stack_residual=18:kstack_frames_released=0:old_group_reached_pre=2:old_group_missed_post=2:self_group_reached_post=2] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:clone_admission_oracle:START] +[CLONE_ADMISSION_ORACLE:aarch64:admitted=1:refused=2:creating_refused=1:published_admitted=2:balance=0] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:init_designation_oracle:START] +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a1', elf_size=8, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a2', elf_size=120, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +[INIT_DESIGNATION_ORACLE:aarch64:construct_failed=2:construct_undecided=0:construct_residual=0:construct_roots_retired=2:construct_leaf_balance=0:construct_commit_balance=0:refused=4:accepted=1:published=1:retired=1:held_error_removals=1:reparented=1:reparent_skipped=1:ordinary_allocated=5:reserved_collisions=0:designation_balance=0] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_group_refusal_oracle:START] +[INIT_GROUP_REFUSAL_ORACLE:aarch64:none_probes=3:none_refusals=0:init_refused=1:alias_refused=1:alias_pid_refused=0:nonit_probes=2:nonit_refusals=0:rows_delta=0:refusal_counter_delta=0:designation_residual=0:balance=0] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:kernel_stack_ownership_oracle:START] +[CREATION_LOCK_ORDER:INJECTED:PM_HELD] +[KSTACK_OWNER_ORACLE:aarch64:creation_rows=1000:creation_owned=1000:one_owner=1000:two_owner=0:zero_owner=0:fork_rows=1:fork_owned=1:slot_returns_exact_one=1:slot_alloc_delta=1000:slot_free_delta=1000:slot_balance=0:cohort_enrolled=1000:cohort_returned=1000:cohort_double_return=0:foreign_alloc_delta=0:foreign_returned=0:frames_mapped_delta=0:frames_released_delta=0:frame_balance=0:frame_used_delta=0:frame_used_bounded=1:live_checks=1106:live_refusals_production=0:live_refusals_injected=1:drop_refused_live=0:pte_overwrite_refusals=0:pub_pooled=1073:pub_sched_owned=1073:pub_row_residual=0:pub_unowned=0:classifier_sched_owned=1:classifier_row_residual=1:classifier_unowned=1:classifier_not_pooled=1:sched_publications=28:sched_pm_held_production=0:sched_pm_held_injected=1:reconciliation_diff=0:reconciliation_skew_bound=6:balance=0] +[TEST:process:kernel_stack_ownership_oracle:PASS] +[TEST:process:creating_dispatch_refusal:START] +manager.create_process [ARM64]: ENTRY - name='creating_dispatch_probe', elf_size=180 +manager.create_process [ARM64]: Generated PID 86 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x44059000-0x44069000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x44059000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 86 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 86 +[CREATING_DISPATCH_ORACLE_DIAG:aarch64:refusal_delta=5:leaf_residual=16:user_stack_residual=16:balance=0:settle_rounds=3:root=0x44042000:root_release_done=1:probe_hw_clear=1:probe_shadow_clear=1:probe_cached_clear=1:retire_hw_blocked=0:retire_shadow_blocked=0:retire_cached_blocked=0] +[CREATING_DISPATCH_ORACLE:aarch64:injected=1:refused_via_dispatch=1:requeue_retried=1:dispatched_after_publish=1:balance=0:leaf_residual=16:user_stack_residual=16] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:tombstone_join_oracle:START] +[TOMBSTONE_JOIN_ORACLE:aarch64:retire_second=1:reap_second=1:removed=2:resident_delta=0:tombstone_rows=0:PASS] +[TEST:process:tombstone_join_oracle:PASS] +[TEST:process:retirement_fence_gate:START] +[TEST:process:retirement_fence_gate:PASS] +[TEST:process:reclaim_progress_gate:START] +[TEST:process:reclaim_progress_gate:PASS] +[TEST:process:exit_kick_protocol_gate:START] +[exit_kick_gate] budget_anchor=test_phase anchor_age_at_gate_entry_ms=2091 budget_ms=60000 gate_ceiling_ms=45000 +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542a99f0:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542a99f0:cpu=2] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542a99f0:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542a99f0:cpu=2] +[TEST:process:exit_kick_protocol_gate:PASS] +[TEST:process:exit_kick_worker_window_isolation:START] +[exit_kick_worker_isolation] budget_anchor=test_phase anchor_age_at_entry_ms=2112 budget_ms=60000 scenario_ceiling_ms=1500 +[exit_kick_worker_isolation] scenario=before_union_worker_1 start=1 +[LR_NONTEXT:site=save-el1:tid=29:lr=0x5:cpu=1] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0x5:cpu=2] +[LR_NONTEXT:site=save-el1:tid=29:lr=0x5:cpu=2] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0x5:cpu=2] +[exit_kick_gate] wait=before_union_worker_1 breadcrumb=1 elapsed_ms=1000 progress_work=43 progress_exit=0 re_kick_sgis=57 +[exit_kick_gate] wait=before_union_worker_1 cause=absolute_ceiling elapsed_ms=1500 window_budget_ms=1500 re_kick_sgis=87 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=5 progress_work_final=63 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=31 worker_3_progress_start=2 worker_3_progress_final=31 last_advance_ms_ago=29 late_true=0 +[exit_kick_worker_isolation] scenario=before_union_worker_1 elapsed_ms=1503 cause=absolute_ceiling target=none progress=[1, 31, 31] completed=6 joined=3 +[exit_kick_worker_isolation] scenario=after_worker_1 start=1 +[STRAND_INJECT_ORACLE:aarch64:legA_exercised=1:legA_recovered=1:legB_exercised=1:legB_recovered=1:stranded=0] +[exit_kick_gate] wait=after_worker_1 cause=no_progress elapsed_ms=801 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=4 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=0 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=2 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_1 elapsed_ms=802 cause=no_progress target=worker_1 progress=[1, 17, 17] completed=6 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 1 made no progress +[exit_kick_worker_isolation] scenario=after_worker_2 start=1 +[exit_kick_gate] wait=after_worker_2 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=1 worker_2_progress_final=1 worker_3_progress_start=0 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_2 elapsed_ms=801 cause=no_progress target=worker_2 progress=[17, 1, 17] completed=5 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 2 made no progress +[exit_kick_worker_isolation] scenario=after_worker_3 start=1 +[SCHED_STRAND_ORACLE:aarch64:samples=108:checked=623:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=3620:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=3055:cleared=3058] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[exit_kick_gate] wait=after_worker_3 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=0 worker_2_progress_final=17 worker_3_progress_start=1 worker_3_progress_final=1 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_3 elapsed_ms=808 cause=no_progress target=worker_3 progress=[17, 17, 1] completed=3 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 3 made no progress +[exit_kick_worker_isolation] scenario=after_healthy start=1 +[exit_kick_worker_isolation] scenario=after_healthy elapsed_ms=2 cause=success target=none progress=[2, 2, 2] completed=7 joined=3 +[exit_kick_worker_isolation] healthy_baseline=PASS +[exit_kick_worker_isolation] fixture_elapsed_ms=4043 +[TEST:process:exit_kick_worker_window_isolation:PASS] +[TEST:process:exit_kick_budget_anchor_isolation:START] +[exit_kick_budget_anchor] pre_test_delay_ms=1216 fixture_budget_ms=1000 fixture_gate_ceiling_ms=600 +[exit_kick_budget_anchor] scenario=inherited_kernel_entry_anchor anchor=inherited cause=phase_one_ceiling target=none elapsed_ms=0 budget_age_at_entry_ms=1217 +[exit_kick_budget_anchor] scenario=test_phase_entry_anchor anchor=test_phase cause=no_progress target=worker_1 elapsed_ms=406 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] scenario=gate_window_exhaustion anchor=test_phase cause=gate_ceiling target=none elapsed_ms=607 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] fixture_elapsed_ms=2235 +[TEST:process:exit_kick_budget_anchor_isolation:PASS] +[TEST:process:census_widen_oracle:START] +[CENSUS_WIDEN_ORACLE:aarch64:arm_target=0:baseline_reported=0:armed_reported=1:tid=1215:shape=ready_queued_nondispatching:queued_nondispatching=1:queued_nondispatch_ms=5525:cpu_silence_ms=5525:joined=1:retired=0:PASS] +[TEST:process:census_widen_oracle:PASS] +[SUBSYSTEM:process:sched:COMPLETE:14/14] +[STAGE:sched:COMPLETE:108/118] +[boot] All boot tests passed! +[PT_ROOT_CUSTODY:no_proof=2:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=79] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=4779:cleared=4782] +[PIN_GUARD_ORACLE:aarch64:home=1:here=0:reclaim=1:requeue=1:previous=1:on_home=3:refused=3:census_clean=1:verdict=PASS] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TIMER_WAKE_LATENCY_ORACLE:aarch64:sleep_ms=10:peers=8:overrun_ms=8:bound_ms=100:quantum_ms=10:round_ms=80:wake_enqueues=1:peers_started=8:peers_spinning=8:backstops=0:setup_ms=6:window_ms=29:measured=1:PASS] + +======================================== + Breenix ARM64 Boot Complete! +======================================== + +Hello from ARM64! + +[boot] Launching init from pre-loaded ELF... +manager.create_process_with_argv [ARM64]: ENTRY - name='init', elf_size=298664, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f5d0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 1 +[INIT_DESIGNATION:aarch64:designated_pid=1:reserved_collisions=0] +[STAGE:proc:ADVANCE] +[SUBSYSTEM:ipc:proc:START] +[SUBSYSTEM:process:proc:START] +[TEST:ipc:telnetd_dependencies_aarch64:START] +[TEST:process:current_thread_exists:START] +[TEST:ipc:telnetd_dependencies_aarch64:PASS] +[TEST:process:current_thread_exists:PASS] +[SUBSYSTEM:syscall:proc:START] +[TEST:syscall:fcntl_pm_contention_oracle:START] +[SUBSYSTEM:ipc:proc:COMPLETE:1/1] +[TEST:process:process_list_populated:START] +[TEST:process:process_list_populated:PASS] +[FCNTL_PM_CONTENTION_ORACLE:aarch64:arm_wait_us=104:armed=1:acquired=1:holder_cpu=1:pm_busy_probe=1:calls=64:eagain=0:first_errno=9:first_wait_us=8065:hold_safety=0:hold_done=1:joined=1:PASS] +[TEST:syscall:fcntl_pm_contention_oracle:PASS] +[TEST:process:frame_custody_healthy_counters:START] +[TEST:process:frame_custody_healthy_counters:PASS] +[TEST:syscall:irq_hold_oracle:START] +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +[SUBSYSTEM:process:proc:COMPLETE:3/3] +[IRQ_HOLD_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12012:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:irq_hold_oracle:PASS] +[TEST:syscall:tty_irq_pm_oracle:START] +[TTY_IRQ_PM_ORACLE:aarch64:fg_unset_before=1:pm_blocking_acquires=0:deferred=2:pgrp_set_by_entry=0:processed=2:buffered=2:irqs_enabled_before=1:holder_cpu=1:pm_busy_probe=1:hold_us=20000:entry_us=2:joined=1:adopted=1:adopted_pgrp=821:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_pm_oracle:PASS] +[TEST:syscall:tty_irq_fg_oracle:START] + +[TTY_IRQ_FG_ORACLE:aarch64:fg_known=822:target_absent=1:fg_lock_touches=0:fg_blocking_acquires=0:snapshot_reads=3:processed=2:buffered=1:irqs_enabled_before=1:holder_cpu=1:fg_busy_probe=1:hold_us=20000:entry_us=132:joined=1:sig_calls=1:sig_pid=822:sig_num=2:snapshot_agrees=1:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_fg_oracle:PASS] +[TEST:syscall:udp_socket_lock_oracle:START] +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +[UDP_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12020:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_socket_lock_oracle:PASS] +[TEST:syscall:udp_ports_lock_oracle:START] +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +[UDP_PORTS_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:driver_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=21:hold_us=12010:refused=7:delivered=14:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_ports_lock_oracle:PASS] +[SUBSYSTEM:syscall:proc:COMPLETE:6/6] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[boot] Reset 4 idle thread contexts (CPUs online: 4) +EL0_SYSCALL: First syscall from userspace (SPSR confirms EL0) +[ OK ] syscall path verified +[STAGE:user:ADVANCE] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[USER_RSP_SCRATCH_EL_CENSUS:el0_installs=3:el1_skipped=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[init] Breenix init starting (PID 1) +[spawn] path='/bin/heartbeat' +manager.create_process_with_argv [ARM64]: ENTRY - name='heartbeat', elf_size=303616, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 90 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f85c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 90 +[spawn] Created child PID 90 for parent PID 1 +[spawn] Success: child PID 90 scheduled +[init] heartbeat started (PID 90) +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=1:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=2:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=early:probe1=-22:probe2=-22:expected=-22] +[spawn] path='/bin/block_eintr_oracle' +[heartbeat] tid=1236 uptime_ms=9560 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='block_eintr_oracle', elf_size=304752, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 91 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f938 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 91 +[spawn] Created child PID 91 for parent PID 1 +[spawn] Success: child PID 91 scheduled +F123456789SC[syscall] exit(0) pid=92 name=block_eintr_oracle_child_92 +[TTBR0_ASID_CENSUS:untagged=0:tagged=2490:kernel=7644:cleared=10101] +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=488:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=15:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=1738:kstack=0:uva=14:smallint=2:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=1739:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=490:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=487:kstack=0:uva=1:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=16:smallint=2:other=0] +[heartbeat] tid=1236 uptime_ms=10567 kbd_nonzero=0 +[SCHED_STRAND_ORACLE:aarch64:samples=207:checked=959:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5511:worst_cpu_scheduler_silence_ms=5830:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=5571:kernel=11008:cleared=16519] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +F123456789SC[syscall] exit(0) pid=93 name=block_eintr_oracle_child_93 +[TTBR0_ASID_CENSUS:untagged=0:tagged=6451:kernel=11954:cleared=18332] +[heartbeat] tid=1236 uptime_ms=11568 kbd_nonzero=0 +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[syscall] exit(0) pid=91 name=block_eintr_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=10194:kernel=16063:cleared=26145] +[init] block_eintr_oracle exited pid=91 code=0 +[spawn] path='/bin/futex_handoff_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='futex_handoff_oracle', elf_size=291984, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 94 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000ef08 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 94 +[spawn] Created child PID 94 for parent PID 1 +[spawn] Success: child PID 94 scheduled +[FUTEX_HANDOFF_ORACLE:aarch64:driven=2:stage1_ret=EAGAIN:stage1_wake=0:stage1_parked=0:stage2_ret=0:stage2_wake=1:stage2_parked=0:stage3_ret=ETIMEDOUT:stage3_elapsed_ok=1:stage3_elapsed_ms=50:arm_delay_us=22:rescues=0:queue_residual=0:balance=0] +[FUTEX_HANDOFF_ORACLE_DRIVER:s1=-11:s2=0:s3=-110] +[syscall] exit(0) pid=94 name=futex_handoff_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=11083:kernel=17033:cleared=27995] +[init] futex_handoff_oracle exited pid=94 code=0 +[spawn] path='/bin/poll_tcp_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='poll_tcp_oracle', elf_size=307952, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 95 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001050c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 95 +[spawn] Created child PID 95 for parent PID 1 +[spawn] Success: child PID 95 scheduled +[POLL_TCP_TIMEOUT] fd=4 timeout_ms=120 publish=none_in_window rx_len=0 revents=0x0000 +F123456789SC[syscall] exit(0) pid=96 name=poll_tcp_oracle_child_96 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12252:kernel=18292:cleared=30396] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=122:late_ms=88:park_ms=82:attempts=1] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=122:late_ms=88:park_ms=82:attempts=1] +[syscall] exit(0) pid=95 name=poll_tcp_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=12270:kernel=18306:cleared=30423] +[init] poll_tcp_oracle exited pid=95 code=0 +[spawn] path='/bin/tty_oracle' +[heartbeat] tid=1236 uptime_ms=12574 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='tty_oracle', elf_size=338264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 97 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40012b34 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 97 +[spawn] Created child PID 97 for parent PID 1 +[spawn] Success: child PID 97 scheduled +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=3 (pty 2) +[pty] Unlocked PTY 2 (fd 3) +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +F123456789SC[EXEC_LOCK_ORDER:FIRST_COMMIT] +[EXEC_LOCK_ORDER:commits=1:pm_held=0:unpinned=0:missing=0] +[syscall] exit(0) pid=98 name=/bin/tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14725:kernel=20959:cleared=35481] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[syscall] exit(0) pid=97 name=tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14731:kernel=20961:cleared=35489] +[init] tty_oracle exited pid=97 code=0 +[spawn] path='/bin/exec_smoke' +manager.create_process_with_argv [ARM64]: ENTRY - name='exec_smoke', elf_size=290928, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 99 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000eb40 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 99 +[spawn] Created child PID 99 for parent PID 1 +[spawn] Success: child PID 99 scheduled +[EXEC_SMOKE:LAUNCH] +[EXEC_LOCK_ORDER:commits=2:pm_held=0:unpinned=0:missing=0] +[EXEC_SMOKE:TARGET_ENTER argc=2] +[EXEC_SMOKE:TARGET_OK] +[syscall] exit(0) pid=99 name=/bin/exec_smoke_target +[TTBR0_ASID_CENSUS:untagged=0:tagged=16438:kernel=22837:cleared=39051] +[EXEC_SMOKE:LAUNCHER_EXIT code=0] +[spawn] path='/usr/local/test/bin/clonevm_exec_test' +[heartbeat] tid=1236 uptime_ms=13575 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='clonevm_exec_test', elf_size=289672, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 100 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f63c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 100 +[spawn] Created child PID 100 for parent PID 1 +[spawn] Success: child PID 100 scheduled +CLONEVM_EXEC_TEST: start +CLONEVM_EXEC_TEST: child live +CLONEVM_EXEC_TEST: live sibling refused exec +[syscall] exit(0) pid=101 name=thread-101 +[TTBR0_ASID_CENSUS:untagged=0:tagged=19947:kernel=25724:cleared=44824] +CLONEVM_EXEC_TEST: child exited +[EXEC_LOCK_ORDER:commits=3:pm_held=0:unpinned=0:missing=0] +CLONEVM_EXEC_TEST: second stage diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot3-facts.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot3-facts.txt new file mode 100644 index 000000000..615a83088 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot3-facts.txt @@ -0,0 +1,4 @@ +[GATE_BOOT_FACTS:boot=3:host_ms=1788834885254-1788834899595:qemu_at_start=0:load_at_start=6.09:qemu_at_end=1:load_at_end=5.43:qemu_cpu_s=24.62:guest_uptime_ms=14104:ended_by=scored_pass] +[CAPTURE_DRAIN:capture=n/a:seq=n/a:edge=n/a:cpu=n/a:records=n/a:drain_ms=0] +[CAPTURE_DRAIN_EVENTS:last_events=n/a] +[QMP_DUMP:capture=n/a:reason=n/a:core=n/a:decoded_events=n/a:dump_ms=0] diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot3-serial.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot3-serial.txt new file mode 100644 index 000000000..03ea9c567 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-boot3-serial.txt @@ -0,0 +1,915 @@ +EOS +======================================== + Breenix ARM64 Kernel Starting + BUILD_ID: 006a9f737534c7 +======================================== + +[CTX596_ORACLE:ARMED:force_eret=0] +[boot] DIAG_MARKER_XHCI_A +[boot] DIAG_MARKER_XHCI_B +[boot] DIAG_MARKER_XHCI_C +[boot] loader xhci_hcrst_raw=0x0 ecam=0x0 +[boot] Current exception level: EL1 +[boot] MMU already enabled (high-half kernel) +[boot] Initializing memory management (0x44000000-0x50000000)... +[boot] Memory management ready +[boot] Initializing Generic Timer... +[boot] Timer frequency: 62500000 Hz (62 MHz) +[boot] Initializing PL031 RTC... +[boot] Current timestamp: 482625 +[boot] Initializing GIC... +[gic] GICR probe 0x080a0000: WAKER=0x00000006 <<< VALID +[gic] GICR base mismatch: loader=0x00000000, using=0x080a0000 +[gic] GICD_CTLR wrote 0x53, readback=0x53 +[gic] GICR_IGROUPR0: wrote 0xFFFFFFFF, readback=0xffffffff +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[boot] GIC initialized (version 3) +[boot] Enabling UART interrupts... +[boot] Enabling GIC IRQ 33 (UART0)... +[uart] IMSC: 0x0 -> 0x50 (verify: 0x50) +[uart] FR=0x90 (RXFE=1), RIS=0x20 +[gic] IRQ 33 state (GICv3): + enabled=true, group1=true, pending=false + priority=0xa0, GICD_CTLR=0x53 + ICC_PMR=0xf0 +[boot] UART interrupts enabled +[boot] Enabling interrupts... +[boot] Interrupts enabled: true +[boot] QEMU PCI ECAM configured at 0x4010000000 +[boot] Initializing device drivers... +[drivers] Initializing driver subsystem... +[drivers] Hybrid mode: VirtIO MMIO + PCI AHCI +[drivers] Found VirtIO MMIO device: network (ID=1, version=1) +[drivers] Found VirtIO MMIO device: block (ID=2, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: input (ID=18, version=1) +[drivers] Found VirtIO MMIO device: GPU (ID=16, version=1) +[drivers] Found 5 VirtIO MMIO devices +[virtio-blk] Searching for block devices... +[virtio-blk] Found block device 0 at 0xa003800 +[virtio-blk] Device 0 version: 1 +[virtio-blk] Device 0 capacity: 190464 sectors (93 MB) +[virtio-blk] Device 0 queue max size: 1024 +[virtio-blk] Device 0 using v1 (legacy) queue setup at PFN 0x40a60 +[virtio-blk] Block MMIO IRQ 76 enabled for device 0 +[virtio-blk] Block device 0 initialized successfully +[virtio-blk] Initialized 1 block device(s) +[drivers] VirtIO block driver initialized +[virtio-net] Searching for network device... +[virtio-net] Found network device at 0xa003600 (slot 27) +[virtio-net] Device version: 1 +[virtio-net] MAC address: 52:54:00:12:34:56 +[virtio-net] RX queue max size: 1024 +[virtio-net] TX queue max size: 1024 +[virtio-net] Network device initialized successfully +[virtio-net] Network device IRQ 75 (will enable after net init) +[drivers] VirtIO network driver initialized +[virtio-net] Device test - MAC: 52:54:00:12:34:56 +[virtio-net] Test passed! +[virtio-gpu] Searching for GPU device... +[virtio-gpu] Found GPU device at 0xa003e00 +[virtio-gpu] Device version: 1 +[virtio-gpu] Control queue max size: 1024 +[virtio-gpu] Display: 1280x800 +[virtio-gpu] GPU device initialized successfully +[drivers] VirtIO GPU driver initialized +[virtio-gpu] Device test - Display: 1280x800 +[virtio-gpu] Test passed! +[virtio-sound] Searching for sound device... +[drivers] VirtIO sound driver init failed: No VirtIO Sound device found +[drivers] Driver subsystem initialized (MMIO) +[drivers] PCI ECAM at 0x4010000000, enumerating PCI bus... +[drivers] Found 1 PCI devices +[pci] 00:00.0 [1b36:0008] class=06/00 +[drivers] AHCI PCI init failed: No AHCI controller found +[drivers] Driver subsystem initialized (hybrid MMIO+PCI) +[boot] Found 6 devices +[drivers] Running post-init self-tests... +[virtio-blk] Testing read of sector 0... +[virtio-blk] Sector 0 data: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ... +[virtio-blk] Read test passed! +[boot] Initializing network stack... +[net] Initializing network stack... +[net] MAC address: 52:54:00:12:34:56 +NET: IP address: 10.0.2.15 +NET: Gateway: 10.0.2.2 +Network stack initialized +NET: Sending ARP request for gateway 10.0.2.2 +ARP request sent successfully +NET: Gateway ARP not resolved during init; will resolve via IRQ path +NET: Sending ICMP echo request to gateway 10.0.2.2 +NET: ARP cache miss for 10.0.2.2, sending ARP request +NET: Failed to send ping: ArpMiss: reply will populate cache via IRQ +NET: Network initialization complete +[virtio-net] Enabling IRQ 75 for network device +NET: pre-primed NetRx softirq for bootstrap callback re-enable +[boot] Initializing filesystem... +[ext2] Using VirtIO block device (190464 sectors) +[boot] ext2 root filesystem mounted +[boot] No home filesystem: No home block device available (expected at device index 3 or 1) (continuing) +[boot] devfs initialized at /dev +[boot] devptsfs initialized at /dev/pts +[boot] CPU detected: ARM Cortex-A72 +[boot] procfs initialized at /proc +[boot] TTY subsystem initialized +[boot] Initializing graphics... +[virtio-gpu] GPU device already initialized +[arm64-fb] Shell framebuffer initialized: 1280x800 +[graphics] Framebuffer: 1280x800 +[graphics] Particle system initialized +[render_queue] Initialized (64KB buffer) +[graphics] Split-screen terminal UI initialized +[boot] Initializing VirtIO keyboard... +[virtio-input] Searching for input devices (ID=18)... +[virtio-input] Slot 27 at 0xa003600: device_id=1 +[virtio-input] Slot 28 at 0xa003800: device_id=2 +[virtio-input] Slot 29 at 0xa003a00: device_id=18 +[virtio-input] Found tablet at 0xa003a00 (slot 29, supports EV_ABS) +[virtio-input] Tablet device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 77 for tablet +[virtio-input] Tablet initialized (16 buffers) +[virtio-input] Slot 30 at 0xa003c00: device_id=18 +[virtio-input] Found keyboard at 0xa003c00 (slot 30, no EV_ABS) +[virtio-input] Keyboard device version: 1 +[virtio-input] Event queue max size: 1024 +[virtio-input] Enabling IRQ 78 for keyboard +[virtio-input] Keyboard initialized (64 buffers) +[virtio-input] Slot 31 at 0xa003e00: device_id=16 +[boot] VirtIO keyboard initialized +[boot] Initializing per-CPU data... +[boot] Per-CPU data initialized +[boot] Initializing process manager... +[boot] Process manager initialized +[boot] Initializing scheduler... +[boot] Scheduler initialized +[boot] Workqueue subsystem initialized +[boot] Softirq subsystem initialized +[boot] Render thread spawned (tid=4) +[boot] Tracing subsystem initialized and enabled +[boot] Pre-loading /sbin/init from ext2 (before timer)... +[net] ICMP echo reply received from 10.0.2.2 seq=1 +[boot] Init binary pre-loaded: 298664 bytes +[xhci] post-activation: MSI_EVENT_COUNT=0 EVENT_COUNT=0 POLL_COUNT=0 SPI_ACTIVATED=false +[boot] Initializing timer interrupt... +[timer] Timer configured for ~1000 Hz (62500 ticks per interrupt) +[timer] Using virtual timer (PPI 27) +[boot] Timer interrupt initialized +[smp] CPU 0 MPIDR=0x80000000, stack_base=0x43000000 +[smp] Probing secondary CPUs via PSCI... +[smp1] CPU 1: PSCI CPU_ON s@u1ccess A(raw_status=BC0) +[s2D@1Amp]BECD CEePU e2:F PSCFGI CPU_G12ON success (raw_status=0) +[sm3@p] 1ACPBCUDEeFG 3: PSCI3 CPU_ON success (raw_status=0) +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[gic] EOImode=1 (split EOI/DIR) - non-VMware path +[smp] CPU 4 attempt 1/4: HVC64 failed (ret=-2), trying HVC32... +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[gic] ICC_CTLR_EL1: 0x8c00 -> 0x8c02 (EOImode=1) +[smp] PSCI CPU_ON failed for CPU 4 after 1 attempts: ret=-2 (MPIDR=0x4 entry=0x400802b8) +T1[smp] CPU 4: PSCI CPU_ON failed (ret=-2), stopping probe +[smp] initialization_watchdog gap_ms=85 local_ceiling_ms=15000 margin_ms=3000 effective_ceiling_ms=20000 +[smp] 4 CPUs online +[boot] Running parallel boot tests... +T2T3[BOOT_TESTS:START] +[STAGE:serial:ADVANCE] +[BOOT_TESTS:TOTAL:118] +[BOOT_TESTS:SERIAL_BOOT:3] +[BOOT_TESTS:EARLY_BOOT:91] +[BOOT_TESTS:STAGED:27 tests waiting for later stages] +T4T5T6T7T8[SUBSYSTEM:process:serial:START] +[TEST:process:frame_custody_refusal_gate:START] +T9[TEST:process:frame_custody_refusal_gate:PASS] +T0[TEST:process:page_table_custody_disposition_gate:START] +[EXEC_FAILED_RELEASE_ORACLE:aarch64:used_before=1:used_after=1:leaf_recorded=1:leaf_released=1:leaf_returned=1:tables_returned=4:roots_retired=1:live_refused=0] +[TEST:process:page_table_custody_disposition_gate:PASS] +[TEST:process:block_current_departure_gate:START] +[TEST:process:block_current_departure_gate:PASS] +[SUBSYSTEM:process:serial:COMPLETE:3/3] +[STAGE:serial:COMPLETE:3/118] +[STAGE:early:ADVANCE] +[SUBSYSTEM:memory:early:START] +[TEST:memory:framework_sanity:START] +[SUBSYSTEM:scheduler:early:START] +[TEST:scheduler:wakes_are_placed_on_online_cpus:START] +[TEST:memory:framework_sanity:PASS] +[TEST:scheduler:wakes_are_placed_on_online_cpus:PASS] +[SUBSYSTEM:network:early:START] +[SUBSYSTEM:filesystem:early:START] +[SUBSYSTEM:interrupts:early:START] +[TEST:network:network_stack_init:START] +[TEST:filesystem:vfs_init:START] +[TEST:interrupts:interrupt_controller_init:START] +[TEST:network:network_stack_init:PASS] +[TEST:interrupts:interrupt_controller_init:PASS] +[TEST:filesystem:vfs_init:PASS] +[SUBSYSTEM:syscall:early:START] +[TEST:syscall:syscall_dispatch:START] +[TEST:syscall:syscall_dispatch:PASS] +[SUBSYSTEM:process:early:START] +[SUBSYSTEM:system:early:START] +[TEST:process:deferred_fault_ring_overflow_injection:START] +[SUBSYSTEM:ipc:early:START] +[TEST:system:boot_sequence:START] +[TEST:ipc:pipe_buffer_basic:START] +[TEST:system:boot_sequence:PASS] +[TEST:process:deferred_fault_ring_overflow_injection:PASS] +[TEST:ipc:pipe_buffer_basic:PASS] +[SUBSYSTEM:logging:early:START] +[TEST:logging:logging_init:START] +[TEST:logging:logging_init:PASS] +[SUBSYSTEM:timer:early:START] +[TEST:timer:timer_init:START] +[TEST:timer:timer_init:PASS] +[TEST:memory:heap_alloc_basic:START] +[TEST:memory:heap_alloc_basic:PASS] +[TEST:network:virtio_net_probe:START] +[TEST:network:virtio_net_probe:PASS] +[TEST:filesystem:devfs_mounted:START] +[TEST:filesystem:devfs_mounted:PASS] +[TEST:scheduler:executor_exists:START] +[TEST:scheduler:executor_exists:PASS] +[TEST:ipc:pipe_eof:START] +[TEST:ipc:pipe_eof:PASS] +[TEST:filesystem:file_open_close:START] +[TEST:filesystem:file_open_close:PASS] +[TEST:system:system_stability:START] +[TEST:system:system_stability:PASS] +[TEST:memory:frame_allocator:START] +[TEST:memory:frame_allocator:PASS] +[TEST:system:kernel_heap:START] +[TEST:system:kernel_heap:PASS] +[TEST:filesystem:directory_list:START] +[TEST:filesystem:directory_list:PASS] +[TEST:timer:timer_ticks:START] +[TEST:timer:timer_ticks:PASS] +[TEST:scheduler:async_waker:START] +[TEST:scheduler:async_waker:PASS] +[TEST:ipc:pipe_broken:START] +[TEST:ipc:pipe_broken:PASS] +[TEST:network:socket_creation:START] +[TEST:network:socket_creation:PASS] +[TEST:logging:log_levels:START] +[TEST:logging:log_levels:PASS] +[TEST:timer:timer_delay:START] +[TEST:timer:timer_delay:PASS] +[TEST:logging:serial_output:START] +[LOGGING_TEST] Serial test ARM64 +[TEST:logging:serial_output:PASS] +[TEST:system:tty_foreground_pgrp:START] +[TEST:system:tty_foreground_pgrp:PASS] +[SCHED_STRAND_ORACLE:aarch64:samples=10:checked=131:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=1:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=334:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=0:reap_second=0:retire_second=0:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=0:kernel=22:cleared=22] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TEST:memory:heap_large_alloc:START] +[TEST:filesystem:filesystem_syscalls_aarch64:START] +[TEST:memory:heap_large_alloc:PASS] +[TEST:scheduler:future_basics:START] +[TEST:scheduler:future_basics:PASS] +[TEST:filesystem:filesystem_syscalls_aarch64:PASS] +[TEST:timer:timer_monotonic:START] +[TEST:timer:timer_monotonic:PASS] +[SUBSYSTEM:scheduler:early:COMPLETE:4/4] +[TEST:timer:timer_quantum_reset_aarch64:START] +[TEST:timer:timer_quantum_reset_aarch64:PASS] +[TEST:process:process_manager_init:START] +[TEST:process:process_manager_init:PASS] +[TEST:syscall:arm64_pty_ioctl_path:START] +manager.create_process [ARM64]: ENTRY - name='pty_ioctl_test', elf_size=276816 +manager.create_process [ARM64]: Generated PID 2 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x4000e0b0 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x40017000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4401e000-0x4402e000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4401e000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 2 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 2 +[TEST:syscall:arm64_pty_ioctl_path:PASS] +[TEST:ipc:pipe_wake_mechanism:START] +[TEST:ipc:pipe_wake_mechanism:PASS] +[TEST:syscall:arm64_socket_reset_quantum:START] +[TEST:syscall:arm64_socket_reset_quantum:PASS] +[TEST:timer:ring_span_report:START] +[SUBSYSTEM:logging:early:COMPLETE:3/3] +[SUBSYSTEM:syscall:early:COMPLETE:3/3] +[TEST:process:scheduler_init:START] +[TEST:process:scheduler_init:PASS] +[SUBSYSTEM:system:early:COMPLETE:4/4] +[TEST:network:tcp_socket_creation:START] +[TEST:network:tcp_socket_creation:PASS] +[TEST:filesystem:virtio_blk_multi_read:START] +[virtio-blk] Starting multi-read stress test (10 reads)... +[virtio-blk] Read 1 of 10 complete +[virtio-blk] Read 2 of 10 complete +[virtio-blk] Read 3 of 10 complete +[virtio-blk] Read 4 of 10 complete +[virtio-blk] Read 5 of 10 complete +[virtio-blk] Read 6 of 10 complete +[virtio-blk] Read 7 of 10 complete +[virtio-blk] Read 8 of 10 complete +[virtio-blk] Read 9 of 10 complete +[virtio-blk] Read 10 of 10 complete +[virtio-blk] Multi-read stress test passed! +[TEST:filesystem:virtio_blk_multi_read:PASS] +[TEST:network:loopback:START] +[TEST:network:loopback:PASS] +[TEST:filesystem:virtio_blk_sequential_read:START] +[virtio-blk] Testing sequential read of sectors 0-31... +[virtio-blk] Read sectors 0-7 OK (avail_idx wrap count: 0) +[virtio-blk] Read sectors 0-15 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-23 OK (avail_idx wrap count: 1) +[virtio-blk] Read sectors 0-31 OK (avail_idx wrap count: 2) +[virtio-blk] Sequential read test passed! (32 sectors, 2 queue wraps) +[TEST:filesystem:virtio_blk_sequential_read:PASS] +[TEST:network:loopback_wake_loss_counters_are_zero:START] +[TEST:network:loopback_wake_loss_counters_are_zero:PASS] +[TEST:filesystem:virtio_blk_write_read_verify:START] +[virtio-blk] Testing write-read-verify cycle... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Reading original data from sector 1000... +[virtio-blk] Original first 16 bytes: [00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00] +[virtio-blk] Test pattern first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Writing test pattern to sector 1000... +[virtio-blk] Write succeeded +[virtio-blk] Reading back sector 1000... +[virtio-blk] Readback first 16 bytes: [aa, 01, aa, 03, aa, 05, aa, 07, aa, 09, aa, 0b, aa, 0d, aa, 0f] +[virtio-blk] Restoring original data to sector 1000... +[virtio-blk] Write-read-verify test passed! All 512 bytes match. +[TEST:filesystem:virtio_blk_write_read_verify:PASS] +[TEST:ipc:fd_table_creation:START] +[TEST:ipc:fd_table_creation:PASS] +[TEST:filesystem:virtio_blk_invalid_sector:START] +[virtio-blk] Testing invalid sector read... +[virtio-blk] Device capacity: 190464 sectors +[virtio-blk] Invalid sector correctly rejected: Sector out of range +[virtio-blk] Invalid sector test passed! +[TEST:filesystem:virtio_blk_invalid_sector:PASS] +[TEST:network:loopback_recv_wake_when_idle:START] +[TEST:memory:heap_many_small:START] +[TEST:memory:heap_many_small:PASS] +[TEST:filesystem:virtio_blk_uninitialized_read:START] +[virtio-blk] Testing uninitialized device handling... +[virtio-blk] Device is initialized (expected during normal boot) +[virtio-blk] Verified: read_sector checks BLOCK_DEVICE.is_none() and returns error +[virtio-blk] Uninitialized test passed (device was already initialized)! +[TEST:filesystem:virtio_blk_uninitialized_read:PASS] +[TEST:memory:cow_flags_aarch64:START] +[TEST:memory:cow_flags_aarch64:PASS] +[SUBSYSTEM:filesystem:early:COMPLETE:10/10] +[TEST:memory:guard_page_exists:START] +[TEST:memory:guard_page_exists:PASS] +[TEST:interrupts:irq_enable_disable:START] +[TEST:interrupts:irq_enable_disable:PASS] +[TEST:ipc:fd_alloc_close:START] +[TEST:ipc:fd_alloc_close:PASS] +[TEST:interrupts:timer_interrupt_running:START] +[TEST:interrupts:timer_interrupt_running:PASS] +[TEST:ipc:create_pipe:START] +[TEST:ipc:create_pipe:PASS] +[TEST:interrupts:keyboard_irq_setup:START] +[TEST:interrupts:keyboard_irq_setup:PASS] +[TEST:process:thread_creation:START] +[TEST:process:thread_creation:PASS] +[TEST:memory:stack_layout:START] +[TEST:memory:stack_layout:PASS] +[TEST:interrupts:exception_vectors:START] +[TEST:interrupts:exception_vectors:PASS] +[TEST:process:signal_delivery_infrastructure:START] +[TEST:process:signal_delivery_infrastructure:PASS] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=when_idle:budget_ms=200:elapsed_tick_ms=142:elapsed_ctr_ms=215:ctx_delta=82:extensions=0:reader_state=terminated:queued_cpu=none:queued_idx=none:idle_cpus=0x0:cpu_silence_ms=792:silence_cpu=0:woke_ms=652:verdict=ok] +[TEST:interrupts:exception_handlers:START] +[TEST:interrupts:exception_handlers:PASS] +[TEST:ipc:pty_support_aarch64:START] +[TEST:ipc:pty_support_aarch64:PASS] +[TEST:network:loopback_recv_wake_when_idle:PASS] +[TEST:process:arm64_signal_frame_conversion:START] +[TEST:process:arm64_signal_frame_conversion:PASS] +[TEST:network:loopback_recv_wake_under_load:START] +[SUBSYSTEM:process:early:COMPLETE:6/6] +[TEST:memory:stack_allocation:START] +[TEST:memory:stack_allocation:PASS] +[SUBSYSTEM:ipc:early:COMPLETE:8/8] +[TEST:memory:user_stack_base:START] +[TEST:memory:user_stack_base:PASS] +[TEST:memory:user_stack_size:START] +[TEST:memory:user_stack_size:PASS] +[TEST:interrupts:breakpoint:START] +[exception] Breakpoint (BRK #0) at 0xffff0000405480f8 +[TEST:interrupts:breakpoint:PASS] +[TEST:interrupts:softirq_aarch64:START] +[TEST:interrupts:softirq_aarch64:PASS] +[SUBSYSTEM:interrupts:early:COMPLETE:8/8] +[TEST:memory:user_stack_top:START] +[TEST:memory:user_stack_top:PASS] +[TEST:memory:user_stack_guard:START] +[TEST:memory:user_stack_guard:PASS] +[TEST:memory:user_stack_alignment:START] +[TEST:memory:user_stack_alignment:PASS] +[TEST:memory:kernel_stack_base:START] +[TEST:memory:kernel_stack_base:PASS] +[TEST:memory:kernel_stack_size:START] +[TEST:memory:kernel_stack_size:PASS] +[TEST:memory:kernel_stack_top:START] +[TEST:memory:kernel_stack_top:PASS] +[TEST:memory:kernel_stack_guard:START] +[TEST:memory:kernel_stack_guard:PASS] +[TEST:memory:kernel_stack_alignment:START] +[TEST:memory:kernel_stack_alignment:PASS] +[TEST:memory:stack_in_range:START] +[TEST:memory:stack_in_range:PASS] +[TEST:memory:stack_grows_down:START] +[TEST:memory:stack_grows_down:PASS] +[TEST:memory:stack_depth:START] +[TEST:memory:stack_depth:PASS] +[TEST:memory:stack_frame_size:START] +[TEST:memory:stack_frame_size:PASS] +[TEST:memory:stack_red_zone:START] +[TEST:memory:stack_red_zone:PASS] +[SUBSYSTEM:memory:early:COMPLETE:24/24] +[LOOPBACK_WAKE_BUDGET:arch=aarch64:test=under_load:budget_ms=200:elapsed_tick_ms=131:elapsed_ctr_ms=200:ctx_delta=320:extensions=0:reader_state=absent:queued_cpu=none:queued_idx=none:idle_cpus=0x0:cpu_silence_ms=973:silence_cpu=0:woke_ms=843:verdict=ok] +[TEST:network:loopback_recv_wake_under_load:PASS] +[TEST:network:loopback_pump_does_not_busy_spin:START] +[RING_SPAN:cpu=0:span_ms=1492:writes=661:dropped=0:ticks_total=3953:tick_events=62] +[TEST:timer:ring_span_report:PASS] +[SUBSYSTEM:timer:early:COMPLETE:6/6] +[TEST:network:loopback_pump_does_not_busy_spin:PASS] +[TEST:network:tcp_final_ack_survives_accept_publish_race:START] +[TEST:network:tcp_final_ack_survives_accept_publish_race:PASS] +[TEST:network:arm64_net_softirq_registration:START] +[TEST:network:arm64_net_softirq_registration:PASS] +[TEST:network:net_lock_guard_masks_interrupt_source:START] +[TEST:network:net_lock_guard_masks_interrupt_source:PASS] +[SUBSYSTEM:network:early:COMPLETE:12/12] +[STAGE:early:COMPLETE:91/118] +[STAGE:sched:ADVANCE] +[SUBSYSTEM:scheduler:sched:START] +[TEST:scheduler:kthread_spawn_verify:START] +[SUBSYSTEM:filesystem:sched:START] +[TEST:filesystem:block_wedge_oracle:START] +[SUBSYSTEM:process:sched:START] +[TEST:process:fork_exit_defer_reclaim_pairing_test:START] +[TEST:scheduler:kthread_spawn_verify:PASS] +[BLOCK_WEDGE_ORACLE:locked=1:wedged=1:refused=1:parked=0:refuse_ms=0] +[TEST:filesystem:block_wedge_oracle:PASS] +[TEST:scheduler:workqueue_operational:START] +[TEST:scheduler:workqueue_operational:PASS] +[SUBSYSTEM:filesystem:sched:COMPLETE:1/1] +[SUBSYSTEM:scheduler:sched:COMPLETE:2/2] +[PT_RETIRE_ORACLE:aarch64:cycles=64:used_before=53:used_after=53:expected_tables=9:roots=64:returned=640:lost=0:kstack_returns=64] +[PT_LEAF_ORACLE:aarch64:cycles=64:expected=192:recorded=192:released=192:returned=192:live_refused=0:used_before=53:used_after=53] +[TEST:process:fork_exit_defer_reclaim_pairing_test:PASS] +[TEST:process:exec_detach_oracle:START] +manager.create_process [ARM64]: ENTRY - name='exec_detach_leader', elf_size=180 +manager.create_process [ARM64]: Generated PID 69 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x4404c000-0x4405c000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x4404c000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 69 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 69 +[EXEC_DETACH_ORACLE:aarch64:bodies=2:fail_preserved=2:sibling_refused=2:success_detached=2:fresh_root=2:tgid_self=2:custody_balance=0:leaf_residual=16:stack_residual=18:kstack_frames_released=0:old_group_reached_pre=2:old_group_missed_post=2:self_group_reached_post=2] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:exec_detach_oracle:PASS] +[TEST:process:clone_admission_oracle:START] +[CLONE_ADMISSION_ORACLE:aarch64:admitted=1:refused=2:creating_refused=1:published_admitted=2:balance=0] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:clone_admission_oracle:PASS] +[TEST:process:init_designation_oracle:START] +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a1', elf_size=8, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ENTRY - name='init_oracle_a2', elf_size=120, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +[INIT_DESIGNATION_ORACLE:aarch64:construct_failed=2:construct_undecided=0:construct_residual=0:construct_roots_retired=2:construct_leaf_balance=0:construct_commit_balance=0:refused=4:accepted=1:published=1:retired=1:held_error_removals=1:reparented=1:reparent_skipped=1:ordinary_allocated=5:reserved_collisions=0:designation_balance=0] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_designation_oracle:PASS] +[TEST:process:init_group_refusal_oracle:START] +[INIT_GROUP_REFUSAL_ORACLE:aarch64:none_probes=3:none_refusals=0:init_refused=1:alias_refused=1:alias_pid_refused=0:nonit_probes=2:nonit_refusals=0:rows_delta=0:refusal_counter_delta=0:designation_residual=0:balance=0] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:init_group_refusal_oracle:PASS] +[TEST:process:kernel_stack_ownership_oracle:START] +[CREATION_LOCK_ORDER:INJECTED:PM_HELD] +[KSTACK_OWNER_ORACLE:aarch64:creation_rows=1000:creation_owned=1000:one_owner=1000:two_owner=0:zero_owner=0:fork_rows=1:fork_owned=1:slot_returns_exact_one=1:slot_alloc_delta=1000:slot_free_delta=1000:slot_balance=0:cohort_enrolled=1000:cohort_returned=1000:cohort_double_return=0:foreign_alloc_delta=0:foreign_returned=0:frames_mapped_delta=0:frames_released_delta=0:frame_balance=0:frame_used_delta=0:frame_used_bounded=1:live_checks=1106:live_refusals_production=0:live_refusals_injected=1:drop_refused_live=0:pte_overwrite_refusals=0:pub_pooled=1073:pub_sched_owned=1073:pub_row_residual=0:pub_unowned=0:classifier_sched_owned=1:classifier_row_residual=1:classifier_unowned=1:classifier_not_pooled=1:sched_publications=28:sched_pm_held_production=0:sched_pm_held_injected=1:reconciliation_diff=0:reconciliation_skew_bound=6:balance=0] +[TEST:process:kernel_stack_ownership_oracle:PASS] +[TEST:process:creating_dispatch_refusal:START] +manager.create_process [ARM64]: ENTRY - name='creating_dispatch_probe', elf_size=180 +manager.create_process [ARM64]: Generated PID 86 +manager.create_process [ARM64]: Creating ProcessPageTable +manager.create_process [ARM64]: ProcessPageTable created +manager.create_process [ARM64]: Loading ELF into page table +manager.create_process [ARM64]: ELF loaded, entry=0x200000 +manager.create_process [ARM64]: Creating Process struct +manager.create_process [ARM64]: Process struct created, heap_start=0x401000 +manager.create_process [ARM64]: Allocating user stack +manager.create_process [ARM64]: Stack physical range 0x44059000-0x44069000 +manager.create_process [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process [ARM64]: Mapping user stack into process page table +manager.create_process [ARM64]: map_user_stack_to_process user_bottom=0xfffffeff0000 user_top=0xffffff000000 phys_bottom=0x44059000 +manager.create_process [ARM64]: User stack mapped successfully +manager.create_process [ARM64]: Creating main thread +manager.create_process [ARM64]: Main thread created +manager.create_process [ARM64]: Main thread set on process +manager.create_process [ARM64]: Adding PID 86 to ready queue +manager.create_process [ARM64]: Inserting process into process table +manager.create_process [ARM64]: SUCCESS - returning PID 86 +[CREATING_DISPATCH_ORACLE_DIAG:aarch64:refusal_delta=2:leaf_residual=16:user_stack_residual=16:balance=0:settle_rounds=3:root=0x44042000:root_release_done=1:probe_hw_clear=1:probe_shadow_clear=1:probe_cached_clear=1:retire_hw_blocked=0:retire_shadow_blocked=0:retire_cached_blocked=0] +[CREATING_DISPATCH_ORACLE:aarch64:injected=1:refused_via_dispatch=1:requeue_retried=1:dispatched_after_publish=1:balance=0:leaf_residual=16:user_stack_residual=16] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:creating_dispatch_refusal:PASS] +[TEST:process:tombstone_join_oracle:START] +[TOMBSTONE_JOIN_ORACLE:aarch64:retire_second=1:reap_second=1:removed=2:resident_delta=0:tombstone_rows=0:PASS] +[TEST:process:tombstone_join_oracle:PASS] +[TEST:process:retirement_fence_gate:START] +[TEST:process:retirement_fence_gate:PASS] +[TEST:process:reclaim_progress_gate:START] +[TEST:process:reclaim_progress_gate:PASS] +[TEST:process:exit_kick_protocol_gate:START] +[exit_kick_gate] budget_anchor=test_phase anchor_age_at_gate_entry_ms=2026 budget_ms=60000 gate_ceiling_ms=45000 +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542a99f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542a99f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542a99f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542a99f0:cpu=3] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542a99f0:cpu=3] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542a99f0:cpu=1] +[LR_NONTEXT:site=save-el1:tid=29:lr=0xffff0000542a99f0:cpu=1] +[LR_NONTEXT:site=restore-el1:tid=29:lr=0xffff0000542a99f0:cpu=3] +[TEST:process:exit_kick_protocol_gate:PASS] +[TEST:process:exit_kick_worker_window_isolation:START] +[exit_kick_worker_isolation] budget_anchor=test_phase anchor_age_at_entry_ms=2050 budget_ms=60000 scenario_ceiling_ms=1500 +[exit_kick_worker_isolation] scenario=before_union_worker_1 start=1 +[STRAND_INJECT_ORACLE:aarch64:legA_exercised=1:legA_recovered=1:legB_exercised=1:legB_recovered=1:stranded=0] +[exit_kick_gate] wait=before_union_worker_1 breadcrumb=1 elapsed_ms=1000 progress_work=43 progress_exit=0 re_kick_sgis=57 +[exit_kick_gate] wait=before_union_worker_1 cause=absolute_ceiling elapsed_ms=1500 window_budget_ms=1500 re_kick_sgis=87 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=63 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=31 worker_3_progress_start=0 worker_3_progress_final=31 last_advance_ms_ago=31 late_true=0 +[exit_kick_worker_isolation] scenario=before_union_worker_1 elapsed_ms=1503 cause=absolute_ceiling target=none progress=[1, 31, 31] completed=6 joined=3 +[exit_kick_worker_isolation] scenario=after_worker_1 start=1 +[exit_kick_gate] wait=after_worker_1 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=1 worker_1_progress_final=1 worker_2_progress_start=2 worker_2_progress_final=17 worker_3_progress_start=0 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_1 elapsed_ms=801 cause=no_progress target=worker_1 progress=[1, 17, 17] completed=6 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 1 made no progress +[exit_kick_worker_isolation] scenario=after_worker_2 start=1 +[exit_kick_gate] wait=after_worker_2 cause=no_progress elapsed_ms=800 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=1 worker_2_progress_final=1 worker_3_progress_start=0 worker_3_progress_final=17 last_advance_ms_ago=800 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_2 elapsed_ms=801 cause=no_progress target=worker_2 progress=[17, 1, 17] completed=5 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 2 made no progress +[exit_kick_worker_isolation] scenario=after_worker_3 start=1 +[SCHED_STRAND_ORACLE:aarch64:samples=108:checked=620:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=0:queued_on_nondispatching_cpu=0:worst_queued_nondispatch_ms=0:worst_cpu_scheduler_silence_ms=3622:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=2958:cleared=2961] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[exit_kick_gate] wait=after_worker_3 cause=no_progress elapsed_ms=802 window_budget_ms=800 re_kick_sgis=45 cpus_online=4 condition_current=2 condition_expected=3 progress_work_start=3 progress_work_final=35 progress_exit_start=0 progress_exit_final=0 worker_1_progress_start=2 worker_1_progress_final=17 worker_2_progress_start=0 worker_2_progress_final=17 worker_3_progress_start=1 worker_3_progress_final=1 last_advance_ms_ago=802 late_true=0 +[exit_kick_worker_isolation] scenario=after_worker_3 elapsed_ms=803 cause=no_progress target=worker_3 progress=[17, 17, 1] completed=3 joined=3 +[exit_kick_worker_isolation] expected_failure=exit_kick_worker_isolation: worker 3 made no progress +[exit_kick_worker_isolation] scenario=after_healthy start=1 +[exit_kick_worker_isolation] scenario=after_healthy elapsed_ms=2 cause=success target=none progress=[2, 2, 2] completed=7 joined=3 +[exit_kick_worker_isolation] healthy_baseline=PASS +[exit_kick_worker_isolation] fixture_elapsed_ms=4026 +[TEST:process:exit_kick_worker_window_isolation:PASS] +[TEST:process:exit_kick_budget_anchor_isolation:START] +[exit_kick_budget_anchor] pre_test_delay_ms=1210 fixture_budget_ms=1000 fixture_gate_ceiling_ms=600 +[exit_kick_budget_anchor] scenario=inherited_kernel_entry_anchor anchor=inherited cause=phase_one_ceiling target=none elapsed_ms=0 budget_age_at_entry_ms=1211 +[exit_kick_budget_anchor] scenario=test_phase_entry_anchor anchor=test_phase cause=no_progress target=worker_1 elapsed_ms=405 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] scenario=gate_window_exhaustion anchor=test_phase cause=gate_ceiling target=none elapsed_ms=604 budget_age_at_entry_ms=0 +[exit_kick_budget_anchor] fixture_elapsed_ms=2224 +[TEST:process:exit_kick_budget_anchor_isolation:PASS] +[TEST:process:census_widen_oracle:START] +[CENSUS_WIDEN_ORACLE:aarch64:arm_target=0:baseline_reported=0:armed_reported=1:tid=1215:shape=ready_queued_nondispatching:queued_nondispatching=1:queued_nondispatch_ms=5458:cpu_silence_ms=5458:joined=1:retired=1:PASS] +[TEST:process:census_widen_oracle:PASS] +[SUBSYSTEM:process:sched:COMPLETE:14/14] +[STAGE:sched:COMPLETE:108/118] +[boot] All boot tests passed! +[PT_ROOT_CUSTODY:no_proof=2:no_arch=0:terminated=1:undecided=1:mid_retire=1:retired=79] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=2:kernel=4299:cleared=4302] +[PIN_GUARD_ORACLE:aarch64:home=1:here=0:reclaim=1:requeue=1:previous=1:on_home=3:refused=3:census_clean=1:verdict=PASS] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[TIMER_WAKE_LATENCY_ORACLE:aarch64:sleep_ms=10:peers=8:overrun_ms=6:bound_ms=100:quantum_ms=10:round_ms=80:wake_enqueues=1:peers_started=8:peers_spinning=8:backstops=0:setup_ms=3:window_ms=73:measured=1:PASS] + +======================================== + Breenix ARM64 Boot Complete! +======================================== + +Hello from ARM64! + +[boot] Launching init from pre-loaded ELF... +manager.create_process_with_argv [ARM64]: ENTRY - name='init', elf_size=298664, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 1 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f5d0 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 1 +[INIT_DESIGNATION:aarch64:designated_pid=1:reserved_collisions=0] +[STAGE:proc:ADVANCE] +[SUBSYSTEM:ipc:proc:START] +[TEST:ipc:telnetd_dependencies_aarch64:START] +[SUBSYSTEM:process:proc:START] +[TEST:process:current_thread_exists:START] +[TEST:ipc:telnetd_dependencies_aarch64:PASS] +[TEST:process:current_thread_exists:PASS] +[SUBSYSTEM:syscall:proc:START] +[TEST:syscall:fcntl_pm_contention_oracle:START] +[SUBSYSTEM:ipc:proc:COMPLETE:1/1] +[TEST:process:process_list_populated:START] +[TEST:process:process_list_populated:PASS] +[TEST:process:frame_custody_healthy_counters:START] +[TEST:process:frame_custody_healthy_counters:PASS] +[FCNTL_PM_CONTENTION_ORACLE:aarch64:arm_wait_us=88:armed=1:acquired=1:holder_cpu=2:pm_busy_probe=1:calls=64:eagain=0:first_errno=9:first_wait_us=8066:hold_safety=0:hold_done=1:joined=1:PASS] +[TEST:syscall:fcntl_pm_contention_oracle:PASS] +[SUBSYSTEM:process:proc:COMPLETE:3/3] +[TEST:syscall:irq_hold_oracle:START] +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +UDP: Delivered packet to socket on port 54540 +[IRQ_HOLD_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12018:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:irq_hold_oracle:PASS] +[TEST:syscall:tty_irq_pm_oracle:START] +[TTY_IRQ_PM_ORACLE:aarch64:fg_unset_before=1:pm_blocking_acquires=0:deferred=2:pgrp_set_by_entry=0:processed=2:buffered=2:irqs_enabled_before=1:holder_cpu=2:pm_busy_probe=1:hold_us=20000:entry_us=0:joined=1:adopted=1:adopted_pgrp=821:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_pm_oracle:PASS] +[TEST:syscall:tty_irq_fg_oracle:START] + +[TTY_IRQ_FG_ORACLE:aarch64:fg_known=822:target_absent=1:fg_lock_touches=0:fg_blocking_acquires=0:snapshot_reads=3:processed=2:buffered=1:irqs_enabled_before=1:holder_cpu=2:fg_busy_probe=1:hold_us=20000:entry_us=122:joined=1:sig_calls=1:sig_pid=822:sig_num=2:snapshot_agrees=1:restored=1:PASS:peer_hold] +[TEST:syscall:tty_irq_fg_oracle:PASS] +[TEST:syscall:udp_socket_lock_oracle:START] +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +UDP: Delivered packet to socket on port 54550 +[UDP_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:irqs_enabled_before=1:masked_in_hold=1:sends=12:hold_us=12018:netrx_pending_at_release=1:received=12:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_socket_lock_oracle:PASS] +[TEST:syscall:udp_ports_lock_oracle:START] +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +UDP: Delivered packet to socket on port 54560 +[UDP_PORTS_LOCK_ORACLE:aarch64:attempts=1:armed=1:holder_cpu=1:driver_cpu=2:irqs_enabled_before=1:masked_in_hold=1:sends=21:hold_us=12005:refused=8:delivered=13:stalled=0:hold_done=1:joined=1:PASS] +[TEST:syscall:udp_ports_lock_oracle:PASS] +[SUBSYSTEM:syscall:proc:COMPLETE:6/6] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[boot] Reset 4 idle thread contexts (CPUs online: 4) +EL0_SYSCALL: First syscall from userspace (SPSR confirms EL0) +[ OK ] syscall path verified +[STAGE:user:ADVANCE] +[EXEC_LOCK_ORDER:commits=0:pm_held=0:unpinned=0:missing=0] +[USER_RSP_SCRATCH_EL_CENSUS:el0_installs=1:el1_skipped=0] +[TESTS_COMPLETE:118/118] +[BOOT_TESTS:PASS] +[init] Breenix init starting (PID 1) +[spawn] path='/bin/heartbeat' +manager.create_process_with_argv [ARM64]: ENTRY - name='heartbeat', elf_size=303616, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 90 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f85c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 90 +[spawn] Created child PID 90 for parent PID 1 +[spawn] Success: child PID 90 scheduled +[init] heartbeat started (PID 90) +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=1:verdict=PASS] +[INIT_GROUP_WALK:aarch64:rows=3:init_tgid_rows=1:foreign_tgid_rows=0:refused=2:verdict=PASS] +[INIT_GROUP_REFUSAL:aarch64:phase=early:probe1=-22:probe2=-22:expected=-22] +[spawn] path='/bin/block_eintr_oracle' +[heartbeat] tid=1236 uptime_ms=9085 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='block_eintr_oracle', elf_size=304752, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 91 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f938 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 91 +[spawn] Created child PID 91 for parent PID 1 +[spawn] Success: child PID 91 scheduled +F123456789SC[syscall] exit(0) pid=92 name=block_eintr_oracle_child_92 +[TTBR0_ASID_CENSUS:untagged=0:tagged=2316:kernel=6958:cleared=9242] +[RESUME_PC_CENSUS:cpu=0:source=el1-restore-frame-elr:text=769:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=el0-restore-frame-elr:text=0:kstack=0:uva=14:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-x30:text=2891:kstack=0:uva=14:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=ctx-elr-el1:text=2891:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el1:text=778:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el1:text=769:kstack=0:uva=0:smallint=0:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-save-el0:text=0:kstack=0:uva=22:smallint=1:other=0] +[RESUME_PC_CENSUS:cpu=0:source=lr-restore-el0:text=0:kstack=0:uva=14:smallint=0:other=0] +[heartbeat] tid=1236 uptime_ms=10094 kbd_nonzero=0 +F123456789SC[syscall] exit(0) pid=93 name=block_eintr_oracle_child_93 +[TTBR0_ASID_CENSUS:untagged=0:tagged=6431:kernel=11466:cleared=17813] +[SCHED_STRAND_ORACLE:aarch64:samples=207:checked=945:stranded=0:running_shape=0:ready_shape=0:resolved_production=0:resolved_exercised=2:worst_dwell_ms=0:overflow=0:worst_nonprogress_ms=0:nonprogress=1:queued_on_nondispatching_cpu=1:worst_queued_nondispatch_ms=5440:worst_cpu_scheduler_silence_ms=5530:worst_silence_cpu=0] +[TOMBSTONE_CENSUS:resident=0:removed=2:reap_second=1:retire_second=1:abandoned_unqueued=0] +[TTBR0_ASID_CENSUS:untagged=0:tagged=7592:kernel=12732:cleared=20230] +[PINNED_HOME_CPU_UNAVAILABLE:count=0:publish_discarded=0:hold_pen_migrated=0:delivered=0:migration_refused=0:stack_home_conflict=0] +[PINNED_HOLDS_OUTSTANDING:count=0] +[heartbeat] tid=1236 uptime_ms=11099 kbd_nonzero=0 +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[BLOCK_EINTR_ORACLE:PASS:stages=2:reads=4:short=0:eintr=0:handled=1] +[syscall] exit(0) pid=91 name=block_eintr_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=10175:kernel=15555:cleared=25606] +[init] block_eintr_oracle exited pid=91 code=0 +[spawn] path='/bin/futex_handoff_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='futex_handoff_oracle', elf_size=291984, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 94 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000ef08 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 94 +[spawn] Created child PID 94 for parent PID 1 +[spawn] Success: child PID 94 scheduled +[FUTEX_HANDOFF_ORACLE:aarch64:driven=2:stage1_ret=EAGAIN:stage1_wake=0:stage1_parked=0:stage2_ret=0:stage2_wake=1:stage2_parked=0:stage3_ret=ETIMEDOUT:stage3_elapsed_ok=1:stage3_elapsed_ms=50:arm_delay_us=38:rescues=0:queue_residual=0:balance=0] +[FUTEX_HANDOFF_ORACLE_DRIVER:s1=-11:s2=0:s3=-110] +[syscall] exit(0) pid=94 name=futex_handoff_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=11004:kernel=16477:cleared=27350] +[init] futex_handoff_oracle exited pid=94 code=0 +[spawn] path='/bin/poll_tcp_oracle' +manager.create_process_with_argv [ARM64]: ENTRY - name='poll_tcp_oracle', elf_size=307952, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 95 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4001050c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 95 +[spawn] Created child PID 95 for parent PID 1 +[spawn] Success: child PID 95 scheduled +[POLL_TCP_TIMEOUT] fd=4 timeout_ms=120 publish=none_in_window rx_len=0 revents=0x0000 +F123456789SC[syscall] exit(0) pid=96 name=poll_tcp_oracle_child_96 +[TTBR0_ASID_CENSUS:untagged=0:tagged=12191:kernel=17778:cleared=29815] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=122:late_ms=82:park_ms=81:attempts=1] +[POLL_TCP_ORACLE:PASS:stages=3:idle_ms=122:late_ms=82:park_ms=81:attempts=1] +[syscall] exit(0) pid=95 name=poll_tcp_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=12211:kernel=17796:cleared=29847] +[init] poll_tcp_oracle exited pid=95 code=0 +[spawn] path='/bin/tty_oracle' +[heartbeat] tid=1236 uptime_ms=12100 kbd_nonzero=0 +manager.create_process_with_argv [ARM64]: ENTRY - name='tty_oracle', elf_size=338264, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 97 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x40012b34 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 97 +[spawn] Created child PID 97 for parent PID 1 +[spawn] Success: child PID 97 scheduled +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=3 (pty 2) +[pty] Unlocked PTY 2 (fd 3) +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:openpt:verdict=PASS:slave=/dev/pts/2:locked_open_refused=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:nonblock_open:verdict=PASS:master_fl=0x800:slave_fl=0x800:both_eagain=1] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:isatty:verdict=PASS:master=1:slave=1:regular_file=0] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:termios_roundtrip:verdict=PASS:default_lflag=0x803b:modified_lflag=0x8023:restored=1] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:canonical_line:verdict=PASS:withheld_unterminated=1:delivered_on_newline=6] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:icrnl:verdict=PASS:cr_to_nl=1:cleared_icrnl_holds=1] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:raw_passthrough:verdict=PASS:unterminated_delivered=2] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:echo:verdict=PASS:echo_on_bytes=3:echo_off_bytes=0] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:onlcr:verdict=PASS:onlcr_expanded=3:opost_off_passthrough=2] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:winsize:verdict=PASS:default=24x80:set=41x133:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:foreground_pgrp:verdict=PASS:pgrp=97:crossed_ends=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[TTY_ORACLE:hangup:verdict=PASS:eagain_while_open=1:eof_after_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[TTY_ORACLE:ctty:verdict=PASS:dev_tty_aliased_slave=1:survived_alias_close=1:eof_after_last_slave_close=1] +[pty] sys_posix_openpt(flags=0x902) +[pty] Created master fd=4 (pty 3) +[pty] Unlocked PTY 3 (fd 4) +F123456789SC[EXEC_LOCK_ORDER:FIRST_COMMIT] +[EXEC_LOCK_ORDER:commits=1:pm_held=0:unpinned=0:missing=0] +[syscall] exit(0) pid=98 name=/bin/tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14703:kernel=20537:cleared=35027] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:cloexec_exec:verdict=PASS:cloexec_survived_fork=1:eof_after_parent_close=1] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[TTY_ORACLE:COMPLETE:pass=14:fail=0] +[syscall] exit(0) pid=97 name=tty_oracle +[TTBR0_ASID_CENSUS:untagged=0:tagged=14712:kernel=20546:cleared=35045] +[init] tty_oracle exited pid=97 code=0 +[spawn] path='/bin/exec_smoke' +manager.create_process_with_argv [ARM64]: ENTRY - name='exec_smoke', elf_size=290928, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 99 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000eb40 +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffed0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 99 +[spawn] Created child PID 99 for parent PID 1 +[spawn] Success: child PID 99 scheduled +[EXEC_SMOKE:LAUNCH] +[heartbeat] tid=1236 uptime_ms=13103 kbd_nonzero=0 +[EXEC_LOCK_ORDER:commits=2:pm_held=0:unpinned=0:missing=0] +[EXEC_SMOKE:TARGET_ENTER argc=2] +[EXEC_SMOKE:TARGET_OK] +[syscall] exit(0) pid=99 name=/bin/exec_smoke_target +[TTBR0_ASID_CENSUS:untagged=0:tagged=16455:kernel=22494:cleared=38706] +[EXEC_SMOKE:LAUNCHER_EXIT code=0] +[spawn] path='/usr/local/test/bin/clonevm_exec_test' +manager.create_process_with_argv [ARM64]: ENTRY - name='clonevm_exec_test', elf_size=289672, argc=1 +manager.create_process_with_argv [ARM64]: Generated PID 100 +manager.create_process_with_argv [ARM64]: Creating ProcessPageTable +manager.create_process_with_argv [ARM64]: Loading ELF into page table +manager.create_process_with_argv [ARM64]: ELF loaded, entry=0x4000f63c +manager.create_process_with_argv [ARM64]: Allocating user stack +manager.create_process_with_argv [ARM64]: User stack will be at 0xfffffeff0000-0xffffff000000 +manager.create_process_with_argv [ARM64]: argc/argv set up on stack, SP=0xfffffefffec0 +manager.create_process_with_argv [ARM64]: SUCCESS - returning PID 100 +[spawn] Created child PID 100 for parent PID 1 +[spawn] Success: child PID 100 scheduled +CLONEVM_EXEC_TEST: start +CLONEVM_EXEC_TEST: child live +CLONEVM_EXEC_TEST: live sibling refused exec +[syscall] exit(0) pid=101 name=thread-101 +[TTBR0_ASID_CENSUS:untagged=0:tagged=19463:kernel=25073:cleared=43833] +CLONEVM_EXEC_TEST: child exited +[EXEC_LOCK_ORDER:commits=3:pm_held=0:unpinned=0:missing=0] +CLONEVM_EXEC_TEST: second stage +[syscall] exit(0) pid=102 name=thread-102 +[TTBR0_ASID_CENSUS:untagged=0:tagged=20369:kernel=26002:cleared=45624] +CLONEVM_EXEC_TEST: post-exec rendezvous complete +CLONEVM_EXEC_TEST: post-exec futex keys derived +CLONEVM_EXEC_TEST: PASS +[syscall] exit(0) pid=100 name=/usr/local/test/bin/clonevm_exec_test +[TTBR0_ASID_CENSUS:untagged=0:tagged=20372:kernel=26005:cleared=45631] +[init] clonevm_exec_test exited pid=100 code=0 +[spawn] path='/bin/bsshd' +[heartbeat] tid=1236 uptime_ms=14104 kbd_nonzero=0 diff --git a/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-revision.txt b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-revision.txt new file mode 100644 index 000000000..4a36fd1c1 --- /dev/null +++ b/docs/planning/green-program/aarch64-testing/serials/3f-pr2b/strict-revision.txt @@ -0,0 +1,4 @@ +revision=cab966e76c46d9a6eae343ba8bb5bf564d1ee24b +command=bash docker/qemu/run-aarch64-boot-test-strict.sh 3 +boots=1,2,3 +exit=0