From a83aee216c3d78804b975048c723507621e1f761 Mon Sep 17 00:00:00 2001 From: Laura Abbott Date: Tue, 7 Jul 2026 10:39:31 -0400 Subject: [PATCH 01/15] Attempt a basic PC range check as part of `hubris.validate` `validate` on a hubris archive will verify the `image_id` present in an archive matches what's in flash. This has an unfortunate failure mode for the RoT where we partition the flash manually. It's possible to have the image ID check succeed on the archive but actually be running the opposite image. This causes all kinds of confusion. Add a basic spot check that the PC is in at least one module range. This could cause potential failures if the PC is actually running in a range that does not correspond to a module. Based on other work, the chances of this happening are very limited and should be transient. --- humility-core/src/hubris.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index e894965fc..26585c735 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2103,11 +2103,19 @@ impl HubrisArchive { ); } - if criteria == HubrisValidate::ArchiveMatch { + if self.task_dump().is_some() { return Ok(()); + } else { + core.halt()?; + if let Ok(pc) = core.read_reg(ARMRegister::PC) { + if self.instr_mod(pc).is_none() { + bail!("PC at 0x{pc:x} is not part of any module. This is \ + likely an incorrect archive."); + } + } } - if self.task_dump().is_some() { + if criteria == HubrisValidate::ArchiveMatch { return Ok(()); } From dc1913a123e417b711ee6ea8198f2ad48c581c0f Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Wed, 8 Jul 2026 15:26:05 -0400 Subject: [PATCH 02/15] restart core after checking PC --- humility-core/src/hubris.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index 26585c735..cd7dad89d 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2113,6 +2113,7 @@ impl HubrisArchive { likely an incorrect archive."); } } + core.run()?; } if criteria == HubrisValidate::ArchiveMatch { From bed7f1da1da1b41dbced728208362e4a6e3ee8b8 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Wed, 8 Jul 2026 15:29:03 -0400 Subject: [PATCH 03/15] add read_image_id_from_flash() --- humility-core/src/hubris.rs | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index cd7dad89d..993af162e 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2080,22 +2080,8 @@ impl HubrisArchive { // To validate that what we're running on the target matches what // we have in the archive, we are going to check the image ID, an // identifer created for this purpose. - let addr = self.imageid.0; - let nbytes = self.imageid.1.len(); - assert!(nbytes > 0); - - let mut id = vec![0; nbytes]; - core.read_8(addr, &mut id[0..nbytes]).with_context(|| { - format!("failed to read image ID at 0x{:x}; board mismatch?", addr) - })?; - - let deltas = id - .iter() - .zip(self.imageid.1.iter()) - .filter(|&(lhs, rhs)| lhs != rhs) - .count(); - - if deltas > 0 || id.len() != self.imageid.1.len() { + let id = self.read_image_id_from_flash(core)?; + if id != self.imageid.1 { bail!( "image ID in archive ({:x?}) does not equal \ ID at 0x{:x} ({:x?})", @@ -2179,6 +2165,21 @@ impl HubrisArchive { ); } + pub fn read_image_id_from_flash( + &self, + core: &mut dyn crate::core::Core, + ) -> Result> { + let addr = self.imageid.0; + let nbytes = self.imageid.1.len(); + assert!(nbytes > 0); + + let mut id = vec![0; nbytes]; + core.read_8(addr, &mut id[0..nbytes]).with_context(|| { + format!("failed to read image ID at 0x{:x}; board mismatch?", addr) + })?; + Ok(id) + } + pub fn verify( &self, core: &mut dyn crate::core::Core, From e2bd6e07556950184aad36875c4b18eed7d3ee66 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Wed, 8 Jul 2026 15:30:09 -0400 Subject: [PATCH 04/15] don't call validate() before flashing, just check ID --- humility-flash/src/lib.rs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/humility-flash/src/lib.rs b/humility-flash/src/lib.rs index 8199b434c..3e9cdef76 100644 --- a/humility-flash/src/lib.rs +++ b/humility-flash/src/lib.rs @@ -5,9 +5,10 @@ //! Functions to check flash state and reprogram a processor #![warn(missing_docs)] +use anyhow::anyhow; use humility::{ core::Core, - hubris::{HubrisArchive, HubrisValidate}, + hubris::{HubrisArchive}, log::{Logger, info}, }; use humility_auxflash::{AuxFlashHandler, AuxFlashWriter}; @@ -93,10 +94,23 @@ pub fn get_image_state( core.halt().map_err(ImageStateError::HaltFailed)?; // First pass: check only the image ID - if let Err(e) = hubris.validate(core, HubrisValidate::ArchiveMatch) { - return Ok(ImageStateResult::DoesNotMatch( - ImageStateMismatch::FlashArchiveMismatch(e), - )); + match hubris.read_image_id_from_flash(core) { + Err(e) => { + return Ok(ImageStateResult::DoesNotMatch( + ImageStateMismatch::FlashArchiveMismatch(e), + )); + } + Ok(id) if id != hubris.image_id() => { + return Ok(ImageStateResult::DoesNotMatch( + ImageStateMismatch::FlashArchiveMismatch(anyhow!( + "image ID in archive ({:x?}) does not equal \ + image ID of target ({:x?})", + hubris.image_id(), + id, + )), + )); + } + _ => (), } // More rigorous checks if requested From aaf059c86dcb280b5d40b052ffe0117d4d2b25ee Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Wed, 8 Jul 2026 15:31:41 -0400 Subject: [PATCH 05/15] warn before flashing if the PC suggests this is the wrong A/B image --- humility-core/src/hubris.rs | 21 ++++++++++++++++----- humility-flash/src/lib.rs | 8 +++++++- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index 993af162e..600e0a83a 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2093,11 +2093,9 @@ impl HubrisArchive { return Ok(()); } else { core.halt()?; - if let Ok(pc) = core.read_reg(ARMRegister::PC) { - if self.instr_mod(pc).is_none() { - bail!("PC at 0x{pc:x} is not part of any module. This is \ - likely an incorrect archive."); - } + if let Ok((false, pc)) = self.is_pc_within_archive(core) { + bail!("image ID matches but PC at 0x{pc:x} is not part of any \ + module. This is likely an incorrect A/B archive."); } core.run()?; } @@ -2180,6 +2178,19 @@ impl HubrisArchive { Ok(id) } + /// The core must be halted before this is called + pub fn is_pc_within_archive( + &self, + core: &mut dyn crate::core::Core + ) -> Result<(bool, u32)> { + let pc = core.read_reg(ARMRegister::PC)?; + if self.instr_mod(pc).is_none() { + Ok((false, pc)) + } else { + Ok((true, pc)) + } + } + pub fn verify( &self, core: &mut dyn crate::core::Core, diff --git a/humility-flash/src/lib.rs b/humility-flash/src/lib.rs index 3e9cdef76..d977526b0 100644 --- a/humility-flash/src/lib.rs +++ b/humility-flash/src/lib.rs @@ -9,7 +9,7 @@ use anyhow::anyhow; use humility::{ core::Core, hubris::{HubrisArchive}, - log::{Logger, info}, + log::{Logger, info, warn}, }; use humility_auxflash::{AuxFlashHandler, AuxFlashWriter}; use humility_probes_core::ProbeCore; @@ -93,6 +93,12 @@ pub fn get_image_state( ) -> Result { core.halt().map_err(ImageStateError::HaltFailed)?; + if let Ok((false, pc)) = hubris.is_pc_within_archive(core) { + warn!(log, "PC at 0x{pc:x} is not part of any module. Maybe you're \ + flashing an A image while a B image is running, or vice \ + versa?"); + } + // First pass: check only the image ID match hubris.read_image_id_from_flash(core) { Err(e) => { From fb74643b1ae8f7db5ac8d3be387c686d8915fef3 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Thu, 9 Jul 2026 10:12:49 -0400 Subject: [PATCH 06/15] document is_pc_within_archive --- humility-core/src/hubris.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index 600e0a83a..7056c4754 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2178,10 +2178,15 @@ impl HubrisArchive { Ok(id) } - /// The core must be halted before this is called + /// Reads the core's program counter and returns true if it's within the + /// range of instruction addresses defined by this archive. Also returns the + /// value of the program counter, in case you want to include it in an error + /// message. + /// + /// NOTE: The core must be halted before this is called. pub fn is_pc_within_archive( &self, - core: &mut dyn crate::core::Core + core: &mut dyn crate::core::Core, ) -> Result<(bool, u32)> { let pc = core.read_reg(ARMRegister::PC)?; if self.instr_mod(pc).is_none() { From 09c14c01267a796761d4d71da4541494df810ffc Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Thu, 9 Jul 2026 10:29:56 -0400 Subject: [PATCH 07/15] use separate error variants for actual mismatch vs failure to check --- humility-flash/src/lib.rs | 40 +++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/humility-flash/src/lib.rs b/humility-flash/src/lib.rs index d977526b0..fe4f71c2d 100644 --- a/humility-flash/src/lib.rs +++ b/humility-flash/src/lib.rs @@ -5,10 +5,9 @@ //! Functions to check flash state and reprogram a processor #![warn(missing_docs)] -use anyhow::anyhow; use humility::{ core::Core, - hubris::{HubrisArchive}, + hubris::HubrisArchive, log::{Logger, info, warn}, }; use humility_auxflash::{AuxFlashHandler, AuxFlashWriter}; @@ -50,9 +49,21 @@ pub enum ImageStateError { /// Type indicating a mismatch when checking image state #[derive(Debug, thiserror::Error)] pub enum ImageStateMismatch { - /// Failed at the archive ID check - #[error("flash/archive mismatch")] - FlashArchiveMismatch(#[source] anyhow::Error), + /// The image contained in the archive is different from the the image on + /// the target. + #[error( + "image ID in archive ({archive:x?}) does not equal image ID of #target ({target:x?})" + )] + FlashArchiveMismatch { + /// The image ID in the archive + archive: Vec, + /// The image ID on the target + target: Vec, + }, + + /// An error occurred when trying to check the IDs + #[error("could not check if IDs match")] + CouldNotCheckID(#[source] anyhow::Error), /// Call to [`HubrisArchive::verify`] failed #[error("flash contents do not match archive contents")] @@ -94,26 +105,27 @@ pub fn get_image_state( core.halt().map_err(ImageStateError::HaltFailed)?; if let Ok((false, pc)) = hubris.is_pc_within_archive(core) { - warn!(log, "PC at 0x{pc:x} is not part of any module. Maybe you're \ + warn!( + log, + "PC at 0x{pc:x} is not part of any module. Maybe you're \ flashing an A image while a B image is running, or vice \ - versa?"); + versa?" + ); } // First pass: check only the image ID match hubris.read_image_id_from_flash(core) { Err(e) => { return Ok(ImageStateResult::DoesNotMatch( - ImageStateMismatch::FlashArchiveMismatch(e), + ImageStateMismatch::CouldNotCheckID(e), )); } Ok(id) if id != hubris.image_id() => { return Ok(ImageStateResult::DoesNotMatch( - ImageStateMismatch::FlashArchiveMismatch(anyhow!( - "image ID in archive ({:x?}) does not equal \ - image ID of target ({:x?})", - hubris.image_id(), - id, - )), + ImageStateMismatch::FlashArchiveMismatch { + target: id, + archive: hubris.image_id().to_owned(), + }, )); } _ => (), From 7bf64fc136dbb74ca9bbe8a45fe82161876ccbe9 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Mon, 13 Jul 2026 12:10:55 -0400 Subject: [PATCH 08/15] mention bootloader and ROM in error message --- humility-core/src/hubris.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index 7056c4754..00c0214b4 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2095,7 +2095,8 @@ impl HubrisArchive { core.halt()?; if let Ok((false, pc)) = self.is_pc_within_archive(core) { bail!("image ID matches but PC at 0x{pc:x} is not part of any \ - module. This is likely an incorrect A/B archive."); + module. Maybe this is an incorrect A/B archive, or \ + bootloader or ROM code is running?"); } core.run()?; } From a850276336549bd898b3353c200e3bc66d5c12d2 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Mon, 13 Jul 2026 12:49:36 -0400 Subject: [PATCH 09/15] remove redundant PC check --- humility-core/src/hubris.rs | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index 00c0214b4..eb6e714d9 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2142,17 +2142,8 @@ impl HubrisArchive { bail!("target is not yet booted (currently in Reset)"); } - // - // Check against the PC not being in any known module - // - if self.instr_mod(pc).is_none() { - bail!( - "target does not appear booted and PC 0x{:x} is \ - unknown; is system executing boot ROM or other \ - program?", - pc - ); - } + // We already checked is_pc_within_archive() during the + // `ArchiveMatch` check, so we don't need to repeat that here. } else { core.run()?; } From ef94971d44fe7bd544e7b58799cd3a3ccd0f4d60 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Mon, 13 Jul 2026 15:56:32 -0400 Subject: [PATCH 10/15] add comment about single-task dumps --- humility-core/src/hubris.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index eb6e714d9..252160a83 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2090,6 +2090,8 @@ impl HubrisArchive { } if self.task_dump().is_some() { + // Single-task dumps don't contain enough info to do the PC check + // or the `HubrisValidate::Booted` checks. return Ok(()); } else { core.halt()?; From 4c2470482234c578f65394409ad7352200c76ab3 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Mon, 13 Jul 2026 12:54:02 -0400 Subject: [PATCH 11/15] overwrite tests that just have a different error message now --- .../counters-ipc-filtered.flash-ram-mismatch.0.stderr | 2 +- .../counters-ipc-filtered.in_bootloader.0.stderr | 2 +- .../counters-ipc-full.flash-ram-mismatch.0.stderr | 2 +- .../counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr | 2 +- .../cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr | 2 +- .../tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr | 2 +- .../tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr | 2 +- .../tests/cmd/host-panic/host-panic.in_bootloader.0.stderr | 2 +- .../cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr | 2 +- .../tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr | 2 +- humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr | 2 +- .../cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr | 2 +- .../tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr | 2 +- humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.flash-ram-mismatch.0.stderr index a3c5a4879..5e5f7c5f7 100644 --- a/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.in_bootloader.0.stderr b/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.in_bootloader.0.stderr index a3c5a4879..dafe26544 100644 --- a/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.flash-ram-mismatch.0.stderr index a3c5a4879..5e5f7c5f7 100644 --- a/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr b/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr index a3c5a4879..dafe26544 100644 --- a/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr index a3c5a4879..5e5f7c5f7 100644 --- a/humility-bin/tests/cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr b/humility-bin/tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr index a3c5a4879..dafe26544 100644 --- a/humility-bin/tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr index ca2a9d884..62fb6d696 100644 --- a/humility-bin/tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility host failed: Could not find host boot variables under any known name; is this a Gimlet image? +humility host failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/host-panic/host-panic.in_bootloader.0.stderr b/humility-bin/tests/cmd/host-panic/host-panic.in_bootloader.0.stderr index ca2a9d884..fafa51b6e 100644 --- a/humility-bin/tests/cmd/host-panic/host-panic.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/host-panic/host-panic.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility host failed: Could not find host boot variables under any known name; is this a Gimlet image? +humility host failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr index 8c01ecda6..9a116aa2f 100644 --- a/humility-bin/tests/cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility sensors failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility sensors failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr b/humility-bin/tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr index 9bec5a442..7d4fed6ea 100644 --- a/humility-bin/tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility sensors failed: could not find LAST_READING +humility sensors failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr index 7c85a97c3..0cf22e628 100644 --- a/humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility spd failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility spd failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr index 9d60876da..bcd6ac4ce 100644 --- a/humility-bin/tests/cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility stackmargin failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility stackmargin failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr index 07fadb46d..f19779cb6 100644 --- a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility tasks failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility tasks failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr index 07fadb46d..f19779cb6 100644 --- a/humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility tasks failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility tasks failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? From c27ff895fabfe08ca0617db85dccea9cedabaf88 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Mon, 13 Jul 2026 12:57:12 -0400 Subject: [PATCH 12/15] overwrite flash-ram-mismatch tests that started erroring --- .../readvar-ticks.flash-ram-mismatch.0.stderr | 1 + .../readvar-ticks.flash-ram-mismatch.0.stdout | 12 -- .../readvar-ticks.flash-ram-mismatch.0.toml | 2 +- .../ringbuf-arg.flash-ram-mismatch.0.stderr | 1 + .../ringbuf-arg.flash-ram-mismatch.0.stdout | 106 --------- .../ringbuf-arg.flash-ram-mismatch.0.toml | 2 +- ...uf-full-totals.flash-ram-mismatch.0.stderr | 5 +- ...uf-full-totals.flash-ram-mismatch.0.stdout | 202 ------------------ ...gbuf-full-totals.flash-ram-mismatch.0.toml | 2 +- .../ringbuf.flash-ram-mismatch.0.stderr | 5 +- .../ringbuf.flash-ram-mismatch.0.stdout | 202 ------------------ .../ringbuf/ringbuf.flash-ram-mismatch.0.toml | 2 +- 12 files changed, 8 insertions(+), 534 deletions(-) diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stderr index da2ede4a0..0b204bcff 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility readvar failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stdout b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stdout index 976d2d20c..e69de29bb 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stdout +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stdout @@ -1,12 +0,0 @@ -kern::arch::arm_m::TICKS (0x200012b8) = [ - AtomicU32 { - v: UnsafeCell { - value: 0x20000fc0 - } - }, - AtomicU32 { - v: UnsafeCell { - value: 0x7861f - } - } -] diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.toml b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.toml index 8fe89e157..f8e1d6c6b 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.toml +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.flash-ram-mismatch.0 readvar TICKS" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stderr index da2ede4a0..2c46f9749 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility ringbuf failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stdout b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stdout index 4fae8622c..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stdout +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stdout @@ -1,106 +0,0 @@ -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 104 61 1 WriteConfig(CommandData(0x3f3d)) - 1 104 61 1 WriteConfig(CommandData(0x3f37)) - 2 104 61 1 WriteConfig(CommandData(0x3f3d)) - 3 104 61 1 WriteConfig(CommandData(0x3f37)) - 4 104 61 1 WriteConfig(CommandData(0x3f3d)) - 5 104 61 1 WriteConfig(CommandData(0x3f37)) - 6 104 61 1 WriteConfig(CommandData(0x3f3d)) - 7 104 61 1 WriteConfig(CommandData(0x3f37)) - 8 104 61 1 WriteConfig(CommandData(0x3f3d)) - 9 104 61 1 WriteConfig(CommandData(0x3f37)) - 10 104 61 1 WriteConfig(CommandData(0x3f3d)) - 11 104 61 1 WriteConfig(CommandData(0x3f37)) - 12 104 61 1 WriteConfig(CommandData(0x3f3d)) - 13 104 61 1 WriteConfig(CommandData(0x3f37)) - 14 104 61 1 WriteConfig(CommandData(0x3f3d)) - 15 104 61 1 WriteConfig(CommandData(0x3f37)) - 16 104 61 1 WriteConfig(CommandData(0x3f3d)) - 17 104 61 1 WriteConfig(CommandData(0x3f37)) - 18 104 61 1 WriteConfig(CommandData(0x3f3d)) - 19 104 61 1 WriteConfig(CommandData(0x3f37)) - 20 104 61 1 WriteConfig(CommandData(0x3f3d)) - 21 104 61 1 WriteConfig(CommandData(0x3f37)) - 22 104 61 1 WriteConfig(CommandData(0x3f3d)) - 23 104 61 1 WriteConfig(CommandData(0x3f37)) - 24 104 61 1 WriteConfig(CommandData(0x3f3d)) - 25 104 61 1 WriteConfig(CommandData(0x3f37)) - 26 104 61 1 WriteConfig(CommandData(0x3f3d)) - 27 104 61 1 WriteConfig(CommandData(0x3f37)) - 28 104 61 1 WriteConfig(CommandData(0x3f3d)) - 29 104 61 1 WriteConfig(CommandData(0x3f37)) - 30 104 61 1 WriteConfig(CommandData(0x3f3d)) - 31 104 61 1 WriteConfig(CommandData(0x3f37)) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 35 514 7114 1 WriteWaitISR(0x8020) - 36 514 7114 2 WriteWaitISR(0x8021) - 37 514 7114 1 WriteWaitISR(0x8061) - 38 576 7114 2 ReadISR(0x8021) - 39 576 7114 1 ReadISR(0x8025) - 40 576 7114 2 ReadISR(0x8021) - 41 576 7114 1 ReadISR(0x8025) - 42 611 7114 3 ReadWaitISR(0x8021) - 43 611 7114 1 ReadWaitISR(0x8061) - 44 394 7114 1 WaitISR(0x21) - 45 484 7114 1 WriteISR(0x21) - 46 484 7114 2 WriteISR(0x8021) - 47 484 7114 1 WriteISR(0x8023) - 0 514 7115 1 WriteWaitISR(0x8020) - 1 514 7115 2 WriteWaitISR(0x8021) - 2 514 7115 1 WriteWaitISR(0x8061) - 3 576 7115 2 ReadISR(0x8021) - 4 576 7115 1 ReadISR(0x8025) - 5 576 7115 2 ReadISR(0x8021) - 6 576 7115 1 ReadISR(0x8025) - 7 611 7115 3 ReadWaitISR(0x8021) - 8 611 7115 1 ReadWaitISR(0x8061) - 9 394 7115 1 WaitISR(0x21) - 10 484 7115 1 WriteISR(0x21) - 11 484 7115 2 WriteISR(0x8021) - 12 484 7115 1 WriteISR(0x8023) - 13 514 7115 1 WriteWaitISR(0x8020) - 14 514 7115 2 WriteWaitISR(0x8021) - 15 514 7115 1 WriteWaitISR(0x8061) - 16 576 7115 2 ReadISR(0x8021) - 17 576 7115 1 ReadISR(0x8025) - 18 576 7115 2 ReadISR(0x8021) - 19 576 7115 1 ReadISR(0x8025) - 20 611 7115 3 ReadWaitISR(0x8021) - 21 611 7115 1 ReadWaitISR(0x8061) - 22 394 7115 1 WaitISR(0x21) - 23 484 7115 1 WriteISR(0x21) - 24 484 7115 2 WriteISR(0x8021) - 25 484 7115 1 WriteISR(0x8023) - 26 514 7115 1 WriteWaitISR(0x8020) - 27 514 7115 2 WriteWaitISR(0x8021) - 28 514 7115 1 WriteWaitISR(0x8061) - 29 576 7115 2 ReadISR(0x8021) - 30 576 7115 1 ReadISR(0x8025) - 31 576 7115 2 ReadISR(0x8021) - 32 576 7115 1 ReadISR(0x8025) - 33 611 7115 3 ReadWaitISR(0x8021) - 34 611 7115 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 10 134 92 1 None - 11 112 92 1 Some(NoDevice) - 12 112 92 1 Some(BusLocked) - 13 134 92 1 None - 14 112 92 1 Some(NoDevice) - 15 112 92 1 Some(BusLocked) - 0 134 93 1 None - 1 112 93 1 Some(NoDevice) - 2 112 93 1 Some(BusLocked) - 3 134 93 1 None - 4 112 93 1 Some(NoDevice) - 5 112 93 1 Some(BusLocked) - 6 134 93 1 None - 7 112 93 1 Some(NoDevice) - 8 112 93 1 Some(BusLocked) - 9 134 93 1 None diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.toml b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.toml index 9bae8bb73..d71cef9ae 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.toml +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.flash-ram-mismatch.0 ringbuf i2c" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stderr index 17900c3e9..2c46f9749 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stderr @@ -1,5 +1,2 @@ humility: attached to dump -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 +humility ringbuf failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stdout b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stdout index b01ec2b4c..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stdout +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stdout @@ -1,202 +0,0 @@ -humility: ring buffer drv_gimlet_seq_server::__RINGBUF in gimlet_seq: -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 104 61 1 WriteConfig(CommandData(0x3f3d)) - 1 104 61 1 WriteConfig(CommandData(0x3f37)) - 2 104 61 1 WriteConfig(CommandData(0x3f3d)) - 3 104 61 1 WriteConfig(CommandData(0x3f37)) - 4 104 61 1 WriteConfig(CommandData(0x3f3d)) - 5 104 61 1 WriteConfig(CommandData(0x3f37)) - 6 104 61 1 WriteConfig(CommandData(0x3f3d)) - 7 104 61 1 WriteConfig(CommandData(0x3f37)) - 8 104 61 1 WriteConfig(CommandData(0x3f3d)) - 9 104 61 1 WriteConfig(CommandData(0x3f37)) - 10 104 61 1 WriteConfig(CommandData(0x3f3d)) - 11 104 61 1 WriteConfig(CommandData(0x3f37)) - 12 104 61 1 WriteConfig(CommandData(0x3f3d)) - 13 104 61 1 WriteConfig(CommandData(0x3f37)) - 14 104 61 1 WriteConfig(CommandData(0x3f3d)) - 15 104 61 1 WriteConfig(CommandData(0x3f37)) - 16 104 61 1 WriteConfig(CommandData(0x3f3d)) - 17 104 61 1 WriteConfig(CommandData(0x3f37)) - 18 104 61 1 WriteConfig(CommandData(0x3f3d)) - 19 104 61 1 WriteConfig(CommandData(0x3f37)) - 20 104 61 1 WriteConfig(CommandData(0x3f3d)) - 21 104 61 1 WriteConfig(CommandData(0x3f37)) - 22 104 61 1 WriteConfig(CommandData(0x3f3d)) - 23 104 61 1 WriteConfig(CommandData(0x3f37)) - 24 104 61 1 WriteConfig(CommandData(0x3f3d)) - 25 104 61 1 WriteConfig(CommandData(0x3f37)) - 26 104 61 1 WriteConfig(CommandData(0x3f3d)) - 27 104 61 1 WriteConfig(CommandData(0x3f37)) - 28 104 61 1 WriteConfig(CommandData(0x3f3d)) - 29 104 61 1 WriteConfig(CommandData(0x3f37)) - 30 104 61 1 WriteConfig(CommandData(0x3f3d)) - 31 104 61 1 WriteConfig(CommandData(0x3f37)) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 35 514 7114 1 WriteWaitISR(0x8020) - 36 514 7114 2 WriteWaitISR(0x8021) - 37 514 7114 1 WriteWaitISR(0x8061) - 38 576 7114 2 ReadISR(0x8021) - 39 576 7114 1 ReadISR(0x8025) - 40 576 7114 2 ReadISR(0x8021) - 41 576 7114 1 ReadISR(0x8025) - 42 611 7114 3 ReadWaitISR(0x8021) - 43 611 7114 1 ReadWaitISR(0x8061) - 44 394 7114 1 WaitISR(0x21) - 45 484 7114 1 WriteISR(0x21) - 46 484 7114 2 WriteISR(0x8021) - 47 484 7114 1 WriteISR(0x8023) - 0 514 7115 1 WriteWaitISR(0x8020) - 1 514 7115 2 WriteWaitISR(0x8021) - 2 514 7115 1 WriteWaitISR(0x8061) - 3 576 7115 2 ReadISR(0x8021) - 4 576 7115 1 ReadISR(0x8025) - 5 576 7115 2 ReadISR(0x8021) - 6 576 7115 1 ReadISR(0x8025) - 7 611 7115 3 ReadWaitISR(0x8021) - 8 611 7115 1 ReadWaitISR(0x8061) - 9 394 7115 1 WaitISR(0x21) - 10 484 7115 1 WriteISR(0x21) - 11 484 7115 2 WriteISR(0x8021) - 12 484 7115 1 WriteISR(0x8023) - 13 514 7115 1 WriteWaitISR(0x8020) - 14 514 7115 2 WriteWaitISR(0x8021) - 15 514 7115 1 WriteWaitISR(0x8061) - 16 576 7115 2 ReadISR(0x8021) - 17 576 7115 1 ReadISR(0x8025) - 18 576 7115 2 ReadISR(0x8021) - 19 576 7115 1 ReadISR(0x8025) - 20 611 7115 3 ReadWaitISR(0x8021) - 21 611 7115 1 ReadWaitISR(0x8061) - 22 394 7115 1 WaitISR(0x21) - 23 484 7115 1 WriteISR(0x21) - 24 484 7115 2 WriteISR(0x8021) - 25 484 7115 1 WriteISR(0x8023) - 26 514 7115 1 WriteWaitISR(0x8020) - 27 514 7115 2 WriteWaitISR(0x8021) - 28 514 7115 1 WriteWaitISR(0x8061) - 29 576 7115 2 ReadISR(0x8021) - 30 576 7115 1 ReadISR(0x8025) - 31 576 7115 2 ReadISR(0x8021) - 32 576 7115 1 ReadISR(0x8025) - 33 611 7115 3 ReadWaitISR(0x8021) - 34 611 7115 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 10 134 92 1 None - 11 112 92 1 Some(NoDevice) - 12 112 92 1 Some(BusLocked) - 13 134 92 1 None - 14 112 92 1 Some(NoDevice) - 15 112 92 1 Some(BusLocked) - 0 134 93 1 None - 1 112 93 1 Some(NoDevice) - 2 112 93 1 Some(BusLocked) - 3 134 93 1 None - 4 112 93 1 Some(NoDevice) - 5 112 93 1 Some(BusLocked) - 6 134 93 1 None - 7 112 93 1 Some(NoDevice) - 8 112 93 1 Some(BusLocked) - 9 134 93 1 None -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi4_driver: -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi2_driver: - NDX LINE GEN COUNT PAYLOAD - 29 468 8514 1 WaitISR(0x20012) - 30 438 8514 1 Rx(0x4a) - 31 468 8514 1 WaitISR(0x10012) - 32 438 8514 1 Rx(0x0) - 33 286 8514 1 Start(exchange, (0x2, 0x4)) - 34 404 8514 1 Tx(0x2) - 35 404 8514 1 Tx(0x70) - 36 404 8514 2 Tx(0x0) - 37 468 8514 2 WaitISR(0x40012) - 38 438 8514 1 Rx(0x0) - 39 468 8514 1 WaitISR(0x30012) - 40 438 8514 1 Rx(0x0) - 41 468 8514 1 WaitISR(0x20012) - 42 438 8514 1 Rx(0x0) - 43 468 8514 1 WaitISR(0x10012) - 44 438 8514 1 Rx(0x0) - 45 286 8514 1 Start(exchange, (0x2, 0x4)) - 46 404 8514 1 Tx(0x2) - 47 404 8514 1 Tx(0xb0) - 48 404 8514 2 Tx(0x0) - 49 468 8514 2 WaitISR(0x40012) - 50 438 8514 1 Rx(0x0) - 51 468 8514 1 WaitISR(0x30012) - 52 438 8514 1 Rx(0x0) - 53 468 8514 1 WaitISR(0x20012) - 54 438 8514 1 Rx(0xa0) - 55 468 8514 1 WaitISR(0x10012) - 56 438 8514 1 Rx(0x1) - 57 286 8514 1 Start(exchange, (0x2, 0x4)) - 58 404 8514 1 Tx(0x2) - 59 404 8514 1 Tx(0x8c) - 60 404 8514 2 Tx(0x0) - 61 468 8514 2 WaitISR(0x40012) - 62 438 8514 1 Rx(0x0) - 63 468 8514 1 WaitISR(0x30012) - 0 438 8515 1 Rx(0x0) - 1 468 8515 1 WaitISR(0x20012) - 2 438 8515 1 Rx(0x1d) - 3 468 8515 1 WaitISR(0x10012) - 4 438 8515 1 Rx(0xe) - 5 286 8515 1 Start(exchange, (0x2, 0x4)) - 6 404 8515 1 Tx(0x2) - 7 404 8515 1 Tx(0xf0) - 8 404 8515 2 Tx(0x0) - 9 468 8515 2 WaitISR(0x40012) - 10 438 8515 1 Rx(0x0) - 11 468 8515 1 WaitISR(0x30012) - 12 438 8515 1 Rx(0x0) - 13 468 8515 1 WaitISR(0x20012) - 14 438 8515 1 Rx(0xab) - 15 468 8515 1 WaitISR(0x10012) - 16 438 8515 1 Rx(0x58) - 17 286 8515 1 Start(exchange, (0x2, 0x4)) - 18 404 8515 1 Tx(0x2) - 19 404 8515 1 Tx(0xcc) - 20 404 8515 2 Tx(0x0) - 21 468 8515 2 WaitISR(0x40012) - 22 438 8515 1 Rx(0x0) - 23 468 8515 1 WaitISR(0x30012) - 24 438 8515 1 Rx(0x0) - 25 468 8515 1 WaitISR(0x20012) - 26 438 8515 1 Rx(0xc4) - 27 468 8515 1 WaitISR(0x10012) - 28 438 8515 1 Rx(0xf1) -humility: ring buffer ksz8463::__RINGBUF in net: -humility: ring buffer task_hiffy::stm32h7::__RINGBUF in hiffy: -humility: ring buffer task_jefe::external::__RINGBUF in jefe: -humility: ring buffer task_net::mgmt::__RINGBUF in net: -humility: ring buffer task_spd::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 11 124 3 1 Present(0x1, 0x5, 0xd) - 12 135 3 1 ReadBottom(0xd) - 13 124 3 1 Present(0x1, 0x6, 0xe) - 14 135 3 1 ReadBottom(0xe) - 15 124 3 1 Present(0x1, 0x7, 0xf) - 0 135 4 1 ReadBottom(0xf) - 1 173 4 1 ReadTop(0x8) - 2 173 4 1 ReadTop(0x9) - 3 173 4 1 ReadTop(0xa) - 4 173 4 1 ReadTop(0xb) - 5 173 4 1 ReadTop(0xc) - 6 173 4 1 ReadTop(0xd) - 7 173 4 1 ReadTop(0xe) - 8 173 4 1 ReadTop(0xf) - 9 253 4 1 Found(0x10) - 10 271 4 1 Ready(0x3) -humility: ring buffer task_thermal::__RINGBUF in thermal: - NDX LINE GEN COUNT PAYLOAD - 0 225 1 1 Start - 1 105 1 1 ThermalMode(Manual) -humility: ring buffer task_validate::__RINGBUF in validate: -humility: ring buffer vsc85xx::__RINGBUF in net: diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.toml b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.toml index b36c8529c..18945896f 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.toml +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.flash-ram-mismatch.0 ringbuf --full-totals" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stderr index 17900c3e9..2c46f9749 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stderr @@ -1,5 +1,2 @@ humility: attached to dump -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 +humility ringbuf failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stdout b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stdout index b01ec2b4c..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stdout +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stdout @@ -1,202 +0,0 @@ -humility: ring buffer drv_gimlet_seq_server::__RINGBUF in gimlet_seq: -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 104 61 1 WriteConfig(CommandData(0x3f3d)) - 1 104 61 1 WriteConfig(CommandData(0x3f37)) - 2 104 61 1 WriteConfig(CommandData(0x3f3d)) - 3 104 61 1 WriteConfig(CommandData(0x3f37)) - 4 104 61 1 WriteConfig(CommandData(0x3f3d)) - 5 104 61 1 WriteConfig(CommandData(0x3f37)) - 6 104 61 1 WriteConfig(CommandData(0x3f3d)) - 7 104 61 1 WriteConfig(CommandData(0x3f37)) - 8 104 61 1 WriteConfig(CommandData(0x3f3d)) - 9 104 61 1 WriteConfig(CommandData(0x3f37)) - 10 104 61 1 WriteConfig(CommandData(0x3f3d)) - 11 104 61 1 WriteConfig(CommandData(0x3f37)) - 12 104 61 1 WriteConfig(CommandData(0x3f3d)) - 13 104 61 1 WriteConfig(CommandData(0x3f37)) - 14 104 61 1 WriteConfig(CommandData(0x3f3d)) - 15 104 61 1 WriteConfig(CommandData(0x3f37)) - 16 104 61 1 WriteConfig(CommandData(0x3f3d)) - 17 104 61 1 WriteConfig(CommandData(0x3f37)) - 18 104 61 1 WriteConfig(CommandData(0x3f3d)) - 19 104 61 1 WriteConfig(CommandData(0x3f37)) - 20 104 61 1 WriteConfig(CommandData(0x3f3d)) - 21 104 61 1 WriteConfig(CommandData(0x3f37)) - 22 104 61 1 WriteConfig(CommandData(0x3f3d)) - 23 104 61 1 WriteConfig(CommandData(0x3f37)) - 24 104 61 1 WriteConfig(CommandData(0x3f3d)) - 25 104 61 1 WriteConfig(CommandData(0x3f37)) - 26 104 61 1 WriteConfig(CommandData(0x3f3d)) - 27 104 61 1 WriteConfig(CommandData(0x3f37)) - 28 104 61 1 WriteConfig(CommandData(0x3f3d)) - 29 104 61 1 WriteConfig(CommandData(0x3f37)) - 30 104 61 1 WriteConfig(CommandData(0x3f3d)) - 31 104 61 1 WriteConfig(CommandData(0x3f37)) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 35 514 7114 1 WriteWaitISR(0x8020) - 36 514 7114 2 WriteWaitISR(0x8021) - 37 514 7114 1 WriteWaitISR(0x8061) - 38 576 7114 2 ReadISR(0x8021) - 39 576 7114 1 ReadISR(0x8025) - 40 576 7114 2 ReadISR(0x8021) - 41 576 7114 1 ReadISR(0x8025) - 42 611 7114 3 ReadWaitISR(0x8021) - 43 611 7114 1 ReadWaitISR(0x8061) - 44 394 7114 1 WaitISR(0x21) - 45 484 7114 1 WriteISR(0x21) - 46 484 7114 2 WriteISR(0x8021) - 47 484 7114 1 WriteISR(0x8023) - 0 514 7115 1 WriteWaitISR(0x8020) - 1 514 7115 2 WriteWaitISR(0x8021) - 2 514 7115 1 WriteWaitISR(0x8061) - 3 576 7115 2 ReadISR(0x8021) - 4 576 7115 1 ReadISR(0x8025) - 5 576 7115 2 ReadISR(0x8021) - 6 576 7115 1 ReadISR(0x8025) - 7 611 7115 3 ReadWaitISR(0x8021) - 8 611 7115 1 ReadWaitISR(0x8061) - 9 394 7115 1 WaitISR(0x21) - 10 484 7115 1 WriteISR(0x21) - 11 484 7115 2 WriteISR(0x8021) - 12 484 7115 1 WriteISR(0x8023) - 13 514 7115 1 WriteWaitISR(0x8020) - 14 514 7115 2 WriteWaitISR(0x8021) - 15 514 7115 1 WriteWaitISR(0x8061) - 16 576 7115 2 ReadISR(0x8021) - 17 576 7115 1 ReadISR(0x8025) - 18 576 7115 2 ReadISR(0x8021) - 19 576 7115 1 ReadISR(0x8025) - 20 611 7115 3 ReadWaitISR(0x8021) - 21 611 7115 1 ReadWaitISR(0x8061) - 22 394 7115 1 WaitISR(0x21) - 23 484 7115 1 WriteISR(0x21) - 24 484 7115 2 WriteISR(0x8021) - 25 484 7115 1 WriteISR(0x8023) - 26 514 7115 1 WriteWaitISR(0x8020) - 27 514 7115 2 WriteWaitISR(0x8021) - 28 514 7115 1 WriteWaitISR(0x8061) - 29 576 7115 2 ReadISR(0x8021) - 30 576 7115 1 ReadISR(0x8025) - 31 576 7115 2 ReadISR(0x8021) - 32 576 7115 1 ReadISR(0x8025) - 33 611 7115 3 ReadWaitISR(0x8021) - 34 611 7115 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 10 134 92 1 None - 11 112 92 1 Some(NoDevice) - 12 112 92 1 Some(BusLocked) - 13 134 92 1 None - 14 112 92 1 Some(NoDevice) - 15 112 92 1 Some(BusLocked) - 0 134 93 1 None - 1 112 93 1 Some(NoDevice) - 2 112 93 1 Some(BusLocked) - 3 134 93 1 None - 4 112 93 1 Some(NoDevice) - 5 112 93 1 Some(BusLocked) - 6 134 93 1 None - 7 112 93 1 Some(NoDevice) - 8 112 93 1 Some(BusLocked) - 9 134 93 1 None -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi4_driver: -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi2_driver: - NDX LINE GEN COUNT PAYLOAD - 29 468 8514 1 WaitISR(0x20012) - 30 438 8514 1 Rx(0x4a) - 31 468 8514 1 WaitISR(0x10012) - 32 438 8514 1 Rx(0x0) - 33 286 8514 1 Start(exchange, (0x2, 0x4)) - 34 404 8514 1 Tx(0x2) - 35 404 8514 1 Tx(0x70) - 36 404 8514 2 Tx(0x0) - 37 468 8514 2 WaitISR(0x40012) - 38 438 8514 1 Rx(0x0) - 39 468 8514 1 WaitISR(0x30012) - 40 438 8514 1 Rx(0x0) - 41 468 8514 1 WaitISR(0x20012) - 42 438 8514 1 Rx(0x0) - 43 468 8514 1 WaitISR(0x10012) - 44 438 8514 1 Rx(0x0) - 45 286 8514 1 Start(exchange, (0x2, 0x4)) - 46 404 8514 1 Tx(0x2) - 47 404 8514 1 Tx(0xb0) - 48 404 8514 2 Tx(0x0) - 49 468 8514 2 WaitISR(0x40012) - 50 438 8514 1 Rx(0x0) - 51 468 8514 1 WaitISR(0x30012) - 52 438 8514 1 Rx(0x0) - 53 468 8514 1 WaitISR(0x20012) - 54 438 8514 1 Rx(0xa0) - 55 468 8514 1 WaitISR(0x10012) - 56 438 8514 1 Rx(0x1) - 57 286 8514 1 Start(exchange, (0x2, 0x4)) - 58 404 8514 1 Tx(0x2) - 59 404 8514 1 Tx(0x8c) - 60 404 8514 2 Tx(0x0) - 61 468 8514 2 WaitISR(0x40012) - 62 438 8514 1 Rx(0x0) - 63 468 8514 1 WaitISR(0x30012) - 0 438 8515 1 Rx(0x0) - 1 468 8515 1 WaitISR(0x20012) - 2 438 8515 1 Rx(0x1d) - 3 468 8515 1 WaitISR(0x10012) - 4 438 8515 1 Rx(0xe) - 5 286 8515 1 Start(exchange, (0x2, 0x4)) - 6 404 8515 1 Tx(0x2) - 7 404 8515 1 Tx(0xf0) - 8 404 8515 2 Tx(0x0) - 9 468 8515 2 WaitISR(0x40012) - 10 438 8515 1 Rx(0x0) - 11 468 8515 1 WaitISR(0x30012) - 12 438 8515 1 Rx(0x0) - 13 468 8515 1 WaitISR(0x20012) - 14 438 8515 1 Rx(0xab) - 15 468 8515 1 WaitISR(0x10012) - 16 438 8515 1 Rx(0x58) - 17 286 8515 1 Start(exchange, (0x2, 0x4)) - 18 404 8515 1 Tx(0x2) - 19 404 8515 1 Tx(0xcc) - 20 404 8515 2 Tx(0x0) - 21 468 8515 2 WaitISR(0x40012) - 22 438 8515 1 Rx(0x0) - 23 468 8515 1 WaitISR(0x30012) - 24 438 8515 1 Rx(0x0) - 25 468 8515 1 WaitISR(0x20012) - 26 438 8515 1 Rx(0xc4) - 27 468 8515 1 WaitISR(0x10012) - 28 438 8515 1 Rx(0xf1) -humility: ring buffer ksz8463::__RINGBUF in net: -humility: ring buffer task_hiffy::stm32h7::__RINGBUF in hiffy: -humility: ring buffer task_jefe::external::__RINGBUF in jefe: -humility: ring buffer task_net::mgmt::__RINGBUF in net: -humility: ring buffer task_spd::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 11 124 3 1 Present(0x1, 0x5, 0xd) - 12 135 3 1 ReadBottom(0xd) - 13 124 3 1 Present(0x1, 0x6, 0xe) - 14 135 3 1 ReadBottom(0xe) - 15 124 3 1 Present(0x1, 0x7, 0xf) - 0 135 4 1 ReadBottom(0xf) - 1 173 4 1 ReadTop(0x8) - 2 173 4 1 ReadTop(0x9) - 3 173 4 1 ReadTop(0xa) - 4 173 4 1 ReadTop(0xb) - 5 173 4 1 ReadTop(0xc) - 6 173 4 1 ReadTop(0xd) - 7 173 4 1 ReadTop(0xe) - 8 173 4 1 ReadTop(0xf) - 9 253 4 1 Found(0x10) - 10 271 4 1 Ready(0x3) -humility: ring buffer task_thermal::__RINGBUF in thermal: - NDX LINE GEN COUNT PAYLOAD - 0 225 1 1 Start - 1 105 1 1 ThermalMode(Manual) -humility: ring buffer task_validate::__RINGBUF in validate: -humility: ring buffer vsc85xx::__RINGBUF in net: diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.toml b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.toml index ec7d6e50c..80acafbff 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.toml +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.flash-ram-mismatch.0 ringbuf" - +status.code = 1 From d8bb485385f9d0956a443ee850129c013a800932 Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Mon, 13 Jul 2026 12:58:46 -0400 Subject: [PATCH 13/15] overwrite in_bootloader tests that started erroring --- .../readvar-ticks.in_bootloader.0.stderr | 1 + .../readvar-ticks.in_bootloader.0.stdout | 12 - .../readvar-ticks.in_bootloader.0.toml | 2 +- .../ringbuf-arg.in_bootloader.0.stderr | 1 + .../ringbuf-arg.in_bootloader.0.stdout | 82 -- .../ringbuf-arg.in_bootloader.0.toml | 2 +- ...ringbuf-full-totals.in_bootloader.0.stderr | 1 + ...ringbuf-full-totals.in_bootloader.0.stdout | 280 ---- .../ringbuf-full-totals.in_bootloader.0.toml | 2 +- .../ringbuf/ringbuf.in_bootloader.0.stderr | 1 + .../ringbuf/ringbuf.in_bootloader.0.stdout | 280 ---- .../cmd/ringbuf/ringbuf.in_bootloader.0.toml | 2 +- .../tests/cmd/spd/spd.in_bootloader.0.stderr | 1 + .../tests/cmd/spd/spd.in_bootloader.0.stdout | 17 - .../tests/cmd/spd/spd.in_bootloader.0.toml | 2 +- .../stackmargin.in_bootloader.0.stderr | 1 + .../stackmargin.in_bootloader.0.stdout | 19 - .../stackmargin.in_bootloader.0.toml | 2 +- .../tasks-slvr.in_bootloader.0.stderr | 1 + .../tasks-slvr.in_bootloader.0.stdout | 1136 ----------------- .../tasks-slvr.in_bootloader.0.toml | 2 +- .../cmd/tasks/tasks.in_bootloader.0.stderr | 1 + .../cmd/tasks/tasks.in_bootloader.0.stdout | 20 - .../cmd/tasks/tasks.in_bootloader.0.toml | 2 +- 24 files changed, 16 insertions(+), 1854 deletions(-) diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stderr b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stderr index da2ede4a0..791c16af1 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility readvar failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stdout b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stdout index 448db7742..e69de29bb 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stdout @@ -1,12 +0,0 @@ -kern::arch::arm_m::TICKS (0x200012b8) = [ - AtomicU32 { - v: UnsafeCell { - value: 0xed8bc - } - }, - AtomicU32 { - v: UnsafeCell { - value: 0x0 - } - } -] diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.toml b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.toml index 95c42e285..1b45eae2f 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 readvar TICKS" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stderr b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stderr index da2ede4a0..4d0b0a965 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility ringbuf failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stdout b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stdout index 90ae58ddf..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stdout @@ -1,82 +0,0 @@ -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 94 1 1 Config(CommandData(0x3f3f)) - 1 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 2 165 1 1 Coefficients(Coefficients { m: 0x297, b: 0x5000, R: 0xff }) - 3 193 1 1 Coefficients(Coefficients { m: 0x2927, b: 0x0, R: 0xfd }) - 4 94 1 1 Config(CommandData(0x3f3f)) - 5 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 6 165 1 1 Coefficients(Coefficients { m: 0x52e, b: 0x5000, R: 0xff }) - 7 193 1 1 Coefficients(Coefficients { m: 0x524e, b: 0x0, R: 0xfd }) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 39 514 12815 1 WriteWaitISR(0x8020) - 40 514 12815 2 WriteWaitISR(0x8021) - 41 514 12815 1 WriteWaitISR(0x8061) - 42 576 12815 2 ReadISR(0x8021) - 43 576 12815 1 ReadISR(0x8025) - 44 576 12815 2 ReadISR(0x8021) - 45 576 12815 1 ReadISR(0x8025) - 46 611 12815 3 ReadWaitISR(0x8021) - 47 611 12815 1 ReadWaitISR(0x8061) - 0 394 12816 1 WaitISR(0x21) - 1 484 12816 1 WriteISR(0x21) - 2 484 12816 2 WriteISR(0x8021) - 3 484 12816 1 WriteISR(0x8023) - 4 514 12816 1 WriteWaitISR(0x8020) - 5 514 12816 2 WriteWaitISR(0x8021) - 6 514 12816 1 WriteWaitISR(0x8061) - 7 576 12816 2 ReadISR(0x8021) - 8 576 12816 1 ReadISR(0x8025) - 9 576 12816 2 ReadISR(0x8021) - 10 576 12816 1 ReadISR(0x8025) - 11 611 12816 3 ReadWaitISR(0x8021) - 12 611 12816 1 ReadWaitISR(0x8061) - 13 394 12816 1 WaitISR(0x21) - 14 484 12816 1 WriteISR(0x21) - 15 484 12816 2 WriteISR(0x8021) - 16 484 12816 1 WriteISR(0x8023) - 17 514 12816 1 WriteWaitISR(0x8020) - 18 514 12816 2 WriteWaitISR(0x8021) - 19 514 12816 1 WriteWaitISR(0x8061) - 20 576 12816 2 ReadISR(0x8021) - 21 576 12816 1 ReadISR(0x8025) - 22 576 12816 2 ReadISR(0x8021) - 23 576 12816 1 ReadISR(0x8025) - 24 611 12816 3 ReadWaitISR(0x8021) - 25 611 12816 1 ReadWaitISR(0x8061) - 26 394 12816 1 WaitISR(0x21) - 27 484 12816 1 WriteISR(0x21) - 28 484 12816 2 WriteISR(0x8021) - 29 484 12816 1 WriteISR(0x8023) - 30 514 12816 1 WriteWaitISR(0x8020) - 31 514 12816 2 WriteWaitISR(0x8021) - 32 514 12816 1 WriteWaitISR(0x8061) - 33 576 12816 2 ReadISR(0x8021) - 34 576 12816 1 ReadISR(0x8025) - 35 576 12816 2 ReadISR(0x8021) - 36 576 12816 1 ReadISR(0x8025) - 37 611 12816 3 ReadWaitISR(0x8021) - 38 611 12816 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 7 134 182 1 None - 8 112 182 1 Some(NoDevice) - 9 112 182 1 Some(BusLockedMux) - 10 134 182 1 None - 11 112 182 1 Some(NoDevice) - 12 112 182 1 Some(BusLockedMux) - 13 134 182 1 None - 14 112 182 1 Some(NoDevice) - 15 112 182 1 Some(BusLockedMux) - 0 134 183 1 None - 1 112 183 1 Some(NoDevice) - 2 112 183 1 Some(BusLockedMux) - 3 134 183 1 None - 4 112 183 1 Some(NoDevice) - 5 112 183 1 Some(BusLockedMux) - 6 134 183 1 None diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.toml b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.toml index de6f8cbfa..f9b5d4d25 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 ringbuf i2c" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stderr b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stderr index da2ede4a0..4d0b0a965 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility ringbuf failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stdout b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stdout index d201aa121..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stdout @@ -1,280 +0,0 @@ -humility: ring buffer drv_gimlet_seq_server::__RINGBUF in gimlet_seq: - NDX LINE GEN COUNT PAYLOAD - 0 122 1 1 Ice40Rails(true, true) - 1 151 1 1 Ice40PowerGoodV1P2(true) - 2 172 1 1 Ice40PowerGoodV3P3(true) - 3 235 1 1 IdentValid(false) - 4 238 1 1 ChecksumValid(false) - 5 241 1 1 Reprogram(true) - 6 255 1 1 Programming - 7 284 1 1 Programmed - 8 287 1 1 RailsOff - 9 290 1 1 Ident(0xde01) - 10 296 1 1 A1Status(0x0) - 11 319 1 446 ClockConfigWrite - 12 327 1 1 ClockConfigSuccess - 13 328 1 1 A2 - 14 437 1 1934 GetState -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 94 1 1 Config(CommandData(0x3f3f)) - 1 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 2 165 1 1 Coefficients(Coefficients { m: 0x297, b: 0x5000, R: 0xff }) - 3 193 1 1 Coefficients(Coefficients { m: 0x2927, b: 0x0, R: 0xfd }) - 4 94 1 1 Config(CommandData(0x3f3f)) - 5 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 6 165 1 1 Coefficients(Coefficients { m: 0x52e, b: 0x5000, R: 0xff }) - 7 193 1 1 Coefficients(Coefficients { m: 0x524e, b: 0x0, R: 0xfd }) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 39 514 12815 1 WriteWaitISR(0x8020) - 40 514 12815 2 WriteWaitISR(0x8021) - 41 514 12815 1 WriteWaitISR(0x8061) - 42 576 12815 2 ReadISR(0x8021) - 43 576 12815 1 ReadISR(0x8025) - 44 576 12815 2 ReadISR(0x8021) - 45 576 12815 1 ReadISR(0x8025) - 46 611 12815 3 ReadWaitISR(0x8021) - 47 611 12815 1 ReadWaitISR(0x8061) - 0 394 12816 1 WaitISR(0x21) - 1 484 12816 1 WriteISR(0x21) - 2 484 12816 2 WriteISR(0x8021) - 3 484 12816 1 WriteISR(0x8023) - 4 514 12816 1 WriteWaitISR(0x8020) - 5 514 12816 2 WriteWaitISR(0x8021) - 6 514 12816 1 WriteWaitISR(0x8061) - 7 576 12816 2 ReadISR(0x8021) - 8 576 12816 1 ReadISR(0x8025) - 9 576 12816 2 ReadISR(0x8021) - 10 576 12816 1 ReadISR(0x8025) - 11 611 12816 3 ReadWaitISR(0x8021) - 12 611 12816 1 ReadWaitISR(0x8061) - 13 394 12816 1 WaitISR(0x21) - 14 484 12816 1 WriteISR(0x21) - 15 484 12816 2 WriteISR(0x8021) - 16 484 12816 1 WriteISR(0x8023) - 17 514 12816 1 WriteWaitISR(0x8020) - 18 514 12816 2 WriteWaitISR(0x8021) - 19 514 12816 1 WriteWaitISR(0x8061) - 20 576 12816 2 ReadISR(0x8021) - 21 576 12816 1 ReadISR(0x8025) - 22 576 12816 2 ReadISR(0x8021) - 23 576 12816 1 ReadISR(0x8025) - 24 611 12816 3 ReadWaitISR(0x8021) - 25 611 12816 1 ReadWaitISR(0x8061) - 26 394 12816 1 WaitISR(0x21) - 27 484 12816 1 WriteISR(0x21) - 28 484 12816 2 WriteISR(0x8021) - 29 484 12816 1 WriteISR(0x8023) - 30 514 12816 1 WriteWaitISR(0x8020) - 31 514 12816 2 WriteWaitISR(0x8021) - 32 514 12816 1 WriteWaitISR(0x8061) - 33 576 12816 2 ReadISR(0x8021) - 34 576 12816 1 ReadISR(0x8025) - 35 576 12816 2 ReadISR(0x8021) - 36 576 12816 1 ReadISR(0x8025) - 37 611 12816 3 ReadWaitISR(0x8021) - 38 611 12816 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 7 134 182 1 None - 8 112 182 1 Some(NoDevice) - 9 112 182 1 Some(BusLockedMux) - 10 134 182 1 None - 11 112 182 1 Some(NoDevice) - 12 112 182 1 Some(BusLockedMux) - 13 134 182 1 None - 14 112 182 1 Some(NoDevice) - 15 112 182 1 Some(BusLockedMux) - 0 134 183 1 None - 1 112 183 1 Some(NoDevice) - 2 112 183 1 Some(BusLockedMux) - 3 134 183 1 None - 4 112 183 1 Some(NoDevice) - 5 112 183 1 Some(BusLockedMux) - 6 134 183 1 None -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi4_driver: -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi2_driver: - NDX LINE GEN COUNT PAYLOAD - 1 438 4727 1 Rx(0x6) - 2 286 4727 1 Start(exchange, (0x2, 0x4)) - 3 404 4727 1 Tx(0x9) - 4 404 4727 1 Tx(0xf0) - 5 404 4727 2 Tx(0x0) - 6 468 4727 2 WaitISR(0x40012) - 7 438 4727 1 Rx(0x0) - 8 468 4727 1 WaitISR(0x30012) - 9 438 4727 1 Rx(0x0) - 10 468 4727 1 WaitISR(0x20012) - 11 438 4727 1 Rx(0x7) - 12 468 4727 1 WaitISR(0x10012) - 13 438 4727 1 Rx(0x6) - 14 286 4727 1 Start(write, (0x4, 0x0)) - 15 404 4727 1 Tx(0x89) - 16 404 4727 1 Tx(0xf0) - 17 404 4727 1 Tx(0x7) - 18 404 4727 1 Tx(0x46) - 19 468 4727 2 WaitISR(0x40012) - 20 438 4727 1 Rx(0x0) - 21 468 4727 1 WaitISR(0x30012) - 22 438 4727 1 Rx(0x0) - 23 468 4727 1 WaitISR(0x20012) - 24 438 4727 1 Rx(0x7) - 25 468 4727 1 WaitISR(0x10012) - 26 438 4727 1 Rx(0x6) - 27 286 4727 1 Start(exchange, (0x2, 0x4)) - 28 404 4727 1 Tx(0x0) - 29 404 4727 1 Tx(0x4c) - 30 404 4727 2 Tx(0x0) - 31 468 4727 2 WaitISR(0x40012) - 32 438 4727 1 Rx(0x0) - 33 468 4727 1 WaitISR(0x30012) - 34 438 4727 1 Rx(0x0) - 35 468 4727 1 WaitISR(0x22012) - 36 438 4727 1 Rx(0xf0) - 37 468 4727 1 WaitISR(0x10012) - 38 438 4727 1 Rx(0x0) - 39 286 4727 1 Start(write, (0x4, 0x0)) - 40 404 4727 1 Tx(0x80) - 41 404 4727 1 Tx(0x4c) - 42 404 4727 1 Tx(0xf0) - 43 404 4727 1 Tx(0x80) - 44 468 4727 2 WaitISR(0x40012) - 45 438 4727 1 Rx(0x0) - 46 468 4727 1 WaitISR(0x30012) - 47 438 4727 1 Rx(0x0) - 48 468 4727 1 WaitISR(0x20012) - 49 438 4727 1 Rx(0xf0) - 50 468 4727 1 WaitISR(0x10012) - 51 438 4727 1 Rx(0x0) - 52 286 4727 1 Start(write, (0x4, 0x0)) - 53 404 4727 1 Tx(0x80) - 54 404 4727 1 Tx(0xc) - 55 404 4727 1 Tx(0x1) - 56 404 4727 1 Tx(0x0) - 57 468 4727 2 WaitISR(0x40012) - 58 438 4727 1 Rx(0x0) - 59 468 4727 1 WaitISR(0x30012) - 60 438 4727 1 Rx(0x0) - 61 468 4727 1 WaitISR(0x20012) - 62 438 4727 1 Rx(0xf0) - 63 468 4727 1 WaitISR(0x10012) - 0 438 4728 1 Rx(0x0) -humility: ring buffer ksz8463::__RINGBUF in net: - NDX LINE GEN COUNT PAYLOAD - 7 148 4 1 Write(IACR, 0x40f) - 8 148 4 1 Write(P1VIDCR, 0x301) - 9 148 4 1 Write(P2VIDCR, 0x302) - 10 148 4 1 Write(P3VIDCR, 0x3ff) - 11 134 4 1 Read(P1CR1, 0x0) - 12 148 4 1 Write(P1CR1, 0x202) - 13 134 4 1 Read(P2CR1, 0x0) - 14 148 4 1 Write(P2CR1, 0x202) - 15 134 4 1 Read(P3CR1, 0x0) - 0 148 5 1 Write(P3CR1, 0x4) - 1 148 5 1 Write(SGCR9, 0xa) - 2 134 5 1 Read(P3CR2, 0x607) - 3 148 5 1 Write(P3CR2, 0x4607) - 4 134 5 1 Read(SGCR2, 0xf0) - 5 148 5 1 Write(SGCR2, 0x80f0) - 6 148 5 1 Write(CIDER, 0x1) -humility: ring buffer task_hiffy::stm32h7::__RINGBUF in hiffy: - NDX LINE GEN COUNT PAYLOAD - 14 609 14 1 Execute((0x2fc, DropN(0x2))) - 15 609 14 1 Execute((0x2fe, DropN(0x5))) - 16 609 14 1 Execute((0x300, Push(0x4))) - 17 609 14 1 Execute((0x302, Push(0x0))) - 18 609 14 1 Execute((0x304, PushNone)) - 19 609 14 1 Execute((0x305, PushNone)) - 20 609 14 1 Execute((0x306, Push(0x25))) - 21 609 14 1 Execute((0x308, Push(0x20))) - 22 609 14 1 Execute((0x30a, Push(0x1))) - 23 609 14 1 Execute((0x30c, Call(TargetFunction(0x2)))) - 24 609 14 1 Execute((0x30e, DropN(0x2))) - 25 609 14 1 Execute((0x310, Push(0x79))) - 26 609 14 1 Execute((0x312, Push(0x2))) - 27 609 14 1 Execute((0x314, Call(TargetFunction(0x2)))) - 28 609 14 1 Execute((0x316, DropN(0x2))) - 29 609 14 1 Execute((0x318, Push(0x88))) - 30 609 14 1 Execute((0x31a, Push(0x2))) - 31 609 14 1 Execute((0x31c, Call(TargetFunction(0x2)))) - 32 609 14 1 Execute((0x31e, DropN(0x2))) - 33 609 14 1 Execute((0x320, Push(0x8b))) - 34 609 14 1 Execute((0x322, Push(0x2))) - 35 609 14 1 Execute((0x324, Call(TargetFunction(0x2)))) - 36 609 14 1 Execute((0x326, DropN(0x2))) - 37 609 14 1 Execute((0x328, Push(0x8c))) - 38 609 14 1 Execute((0x32a, Push(0x2))) - 39 609 14 1 Execute((0x32c, Call(TargetFunction(0x2)))) - 40 609 14 1 Execute((0x32e, DropN(0x2))) - 41 609 14 1 Execute((0x330, Push(0x8d))) - 42 609 14 1 Execute((0x332, Push(0x2))) - 43 609 14 1 Execute((0x334, Call(TargetFunction(0x2)))) - 44 609 14 1 Execute((0x336, DropN(0x2))) - 45 609 14 1 Execute((0x338, DropN(0x5))) - 46 609 14 1 Execute((0x33a, Push(0x4))) - 47 609 14 1 Execute((0x33c, Push(0x0))) - 48 609 14 1 Execute((0x33e, PushNone)) - 49 609 14 1 Execute((0x33f, PushNone)) - 50 609 14 1 Execute((0x340, Push(0x67))) - 51 609 14 1 Execute((0x342, Push(0x20))) - 52 609 14 1 Execute((0x344, Push(0x1))) - 53 609 14 1 Execute((0x346, Call(TargetFunction(0x2)))) - 54 609 14 1 Execute((0x348, DropN(0x2))) - 55 609 14 1 Execute((0x34a, Push(0x79))) - 56 609 14 1 Execute((0x34c, Push(0x2))) - 57 609 14 1 Execute((0x34e, Call(TargetFunction(0x2)))) - 58 609 14 1 Execute((0x350, DropN(0x2))) - 59 609 14 1 Execute((0x352, Push(0x88))) - 60 609 14 1 Execute((0x354, Push(0x2))) - 61 609 14 1 Execute((0x356, Call(TargetFunction(0x2)))) - 62 609 14 1 Execute((0x358, DropN(0x2))) - 63 609 14 1 Execute((0x35a, Push(0x8b))) - 0 609 15 1 Execute((0x35c, Push(0x2))) - 1 609 15 1 Execute((0x35e, Call(TargetFunction(0x2)))) - 2 609 15 1 Execute((0x360, DropN(0x2))) - 3 609 15 1 Execute((0x362, Push(0x8c))) - 4 609 15 1 Execute((0x364, Push(0x2))) - 5 609 15 1 Execute((0x366, Call(TargetFunction(0x2)))) - 6 609 15 1 Execute((0x368, DropN(0x2))) - 7 609 15 1 Execute((0x36a, Push(0x8d))) - 8 609 15 1 Execute((0x36c, Push(0x2))) - 9 609 15 1 Execute((0x36e, Call(TargetFunction(0x2)))) - 10 609 15 1 Execute((0x370, DropN(0x2))) - 11 609 15 1 Execute((0x372, DropN(0x5))) - 12 609 15 1 Execute((0x374, Done)) - 13 613 15 1 Success -humility: ring buffer task_jefe::external::__RINGBUF in jefe: -humility: ring buffer task_net::mgmt::__RINGBUF in net: -humility: ring buffer task_spd::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 2 124 3 1 Present(0x1, 0x5, 0xd) - 3 135 3 1 ReadBottom(0xd) - 4 124 3 1 Present(0x1, 0x6, 0xe) - 5 135 3 1 ReadBottom(0xe) - 6 124 3 1 Present(0x1, 0x7, 0xf) - 7 135 3 1 ReadBottom(0xf) - 8 173 3 1 ReadTop(0x8) - 9 173 3 1 ReadTop(0x9) - 10 173 3 1 ReadTop(0xa) - 11 173 3 1 ReadTop(0xb) - 12 173 3 1 ReadTop(0xc) - 13 173 3 1 ReadTop(0xd) - 14 173 3 1 ReadTop(0xe) - 15 173 3 1 ReadTop(0xf) - 0 253 4 1 Found(0x10) - 1 271 4 1 Ready(0x0) -humility: ring buffer task_thermal::__RINGBUF in thermal: - NDX LINE GEN COUNT PAYLOAD - 0 225 1 1 Start - 1 105 1 1 ThermalMode(Manual) -humility: ring buffer task_validate::__RINGBUF in validate: -humility: ring buffer vsc85xx::__RINGBUF in net: - NDX LINE GEN COUNT PAYLOAD - 0 26 1 1 Vsc8562InitSgmii(0x1e) - 1 23 1 1 ViperPatch(0x1e) - 2 133 1 1 GotCrc(0xfb48) diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.toml b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.toml index 95fe902f1..b846ca24c 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 ringbuf --full-totals" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stderr b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stderr index da2ede4a0..4d0b0a965 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility ringbuf failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stdout b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stdout index d201aa121..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stdout @@ -1,280 +0,0 @@ -humility: ring buffer drv_gimlet_seq_server::__RINGBUF in gimlet_seq: - NDX LINE GEN COUNT PAYLOAD - 0 122 1 1 Ice40Rails(true, true) - 1 151 1 1 Ice40PowerGoodV1P2(true) - 2 172 1 1 Ice40PowerGoodV3P3(true) - 3 235 1 1 IdentValid(false) - 4 238 1 1 ChecksumValid(false) - 5 241 1 1 Reprogram(true) - 6 255 1 1 Programming - 7 284 1 1 Programmed - 8 287 1 1 RailsOff - 9 290 1 1 Ident(0xde01) - 10 296 1 1 A1Status(0x0) - 11 319 1 446 ClockConfigWrite - 12 327 1 1 ClockConfigSuccess - 13 328 1 1 A2 - 14 437 1 1934 GetState -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 94 1 1 Config(CommandData(0x3f3f)) - 1 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 2 165 1 1 Coefficients(Coefficients { m: 0x297, b: 0x5000, R: 0xff }) - 3 193 1 1 Coefficients(Coefficients { m: 0x2927, b: 0x0, R: 0xfd }) - 4 94 1 1 Config(CommandData(0x3f3f)) - 5 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 6 165 1 1 Coefficients(Coefficients { m: 0x52e, b: 0x5000, R: 0xff }) - 7 193 1 1 Coefficients(Coefficients { m: 0x524e, b: 0x0, R: 0xfd }) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 39 514 12815 1 WriteWaitISR(0x8020) - 40 514 12815 2 WriteWaitISR(0x8021) - 41 514 12815 1 WriteWaitISR(0x8061) - 42 576 12815 2 ReadISR(0x8021) - 43 576 12815 1 ReadISR(0x8025) - 44 576 12815 2 ReadISR(0x8021) - 45 576 12815 1 ReadISR(0x8025) - 46 611 12815 3 ReadWaitISR(0x8021) - 47 611 12815 1 ReadWaitISR(0x8061) - 0 394 12816 1 WaitISR(0x21) - 1 484 12816 1 WriteISR(0x21) - 2 484 12816 2 WriteISR(0x8021) - 3 484 12816 1 WriteISR(0x8023) - 4 514 12816 1 WriteWaitISR(0x8020) - 5 514 12816 2 WriteWaitISR(0x8021) - 6 514 12816 1 WriteWaitISR(0x8061) - 7 576 12816 2 ReadISR(0x8021) - 8 576 12816 1 ReadISR(0x8025) - 9 576 12816 2 ReadISR(0x8021) - 10 576 12816 1 ReadISR(0x8025) - 11 611 12816 3 ReadWaitISR(0x8021) - 12 611 12816 1 ReadWaitISR(0x8061) - 13 394 12816 1 WaitISR(0x21) - 14 484 12816 1 WriteISR(0x21) - 15 484 12816 2 WriteISR(0x8021) - 16 484 12816 1 WriteISR(0x8023) - 17 514 12816 1 WriteWaitISR(0x8020) - 18 514 12816 2 WriteWaitISR(0x8021) - 19 514 12816 1 WriteWaitISR(0x8061) - 20 576 12816 2 ReadISR(0x8021) - 21 576 12816 1 ReadISR(0x8025) - 22 576 12816 2 ReadISR(0x8021) - 23 576 12816 1 ReadISR(0x8025) - 24 611 12816 3 ReadWaitISR(0x8021) - 25 611 12816 1 ReadWaitISR(0x8061) - 26 394 12816 1 WaitISR(0x21) - 27 484 12816 1 WriteISR(0x21) - 28 484 12816 2 WriteISR(0x8021) - 29 484 12816 1 WriteISR(0x8023) - 30 514 12816 1 WriteWaitISR(0x8020) - 31 514 12816 2 WriteWaitISR(0x8021) - 32 514 12816 1 WriteWaitISR(0x8061) - 33 576 12816 2 ReadISR(0x8021) - 34 576 12816 1 ReadISR(0x8025) - 35 576 12816 2 ReadISR(0x8021) - 36 576 12816 1 ReadISR(0x8025) - 37 611 12816 3 ReadWaitISR(0x8021) - 38 611 12816 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 7 134 182 1 None - 8 112 182 1 Some(NoDevice) - 9 112 182 1 Some(BusLockedMux) - 10 134 182 1 None - 11 112 182 1 Some(NoDevice) - 12 112 182 1 Some(BusLockedMux) - 13 134 182 1 None - 14 112 182 1 Some(NoDevice) - 15 112 182 1 Some(BusLockedMux) - 0 134 183 1 None - 1 112 183 1 Some(NoDevice) - 2 112 183 1 Some(BusLockedMux) - 3 134 183 1 None - 4 112 183 1 Some(NoDevice) - 5 112 183 1 Some(BusLockedMux) - 6 134 183 1 None -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi4_driver: -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi2_driver: - NDX LINE GEN COUNT PAYLOAD - 1 438 4727 1 Rx(0x6) - 2 286 4727 1 Start(exchange, (0x2, 0x4)) - 3 404 4727 1 Tx(0x9) - 4 404 4727 1 Tx(0xf0) - 5 404 4727 2 Tx(0x0) - 6 468 4727 2 WaitISR(0x40012) - 7 438 4727 1 Rx(0x0) - 8 468 4727 1 WaitISR(0x30012) - 9 438 4727 1 Rx(0x0) - 10 468 4727 1 WaitISR(0x20012) - 11 438 4727 1 Rx(0x7) - 12 468 4727 1 WaitISR(0x10012) - 13 438 4727 1 Rx(0x6) - 14 286 4727 1 Start(write, (0x4, 0x0)) - 15 404 4727 1 Tx(0x89) - 16 404 4727 1 Tx(0xf0) - 17 404 4727 1 Tx(0x7) - 18 404 4727 1 Tx(0x46) - 19 468 4727 2 WaitISR(0x40012) - 20 438 4727 1 Rx(0x0) - 21 468 4727 1 WaitISR(0x30012) - 22 438 4727 1 Rx(0x0) - 23 468 4727 1 WaitISR(0x20012) - 24 438 4727 1 Rx(0x7) - 25 468 4727 1 WaitISR(0x10012) - 26 438 4727 1 Rx(0x6) - 27 286 4727 1 Start(exchange, (0x2, 0x4)) - 28 404 4727 1 Tx(0x0) - 29 404 4727 1 Tx(0x4c) - 30 404 4727 2 Tx(0x0) - 31 468 4727 2 WaitISR(0x40012) - 32 438 4727 1 Rx(0x0) - 33 468 4727 1 WaitISR(0x30012) - 34 438 4727 1 Rx(0x0) - 35 468 4727 1 WaitISR(0x22012) - 36 438 4727 1 Rx(0xf0) - 37 468 4727 1 WaitISR(0x10012) - 38 438 4727 1 Rx(0x0) - 39 286 4727 1 Start(write, (0x4, 0x0)) - 40 404 4727 1 Tx(0x80) - 41 404 4727 1 Tx(0x4c) - 42 404 4727 1 Tx(0xf0) - 43 404 4727 1 Tx(0x80) - 44 468 4727 2 WaitISR(0x40012) - 45 438 4727 1 Rx(0x0) - 46 468 4727 1 WaitISR(0x30012) - 47 438 4727 1 Rx(0x0) - 48 468 4727 1 WaitISR(0x20012) - 49 438 4727 1 Rx(0xf0) - 50 468 4727 1 WaitISR(0x10012) - 51 438 4727 1 Rx(0x0) - 52 286 4727 1 Start(write, (0x4, 0x0)) - 53 404 4727 1 Tx(0x80) - 54 404 4727 1 Tx(0xc) - 55 404 4727 1 Tx(0x1) - 56 404 4727 1 Tx(0x0) - 57 468 4727 2 WaitISR(0x40012) - 58 438 4727 1 Rx(0x0) - 59 468 4727 1 WaitISR(0x30012) - 60 438 4727 1 Rx(0x0) - 61 468 4727 1 WaitISR(0x20012) - 62 438 4727 1 Rx(0xf0) - 63 468 4727 1 WaitISR(0x10012) - 0 438 4728 1 Rx(0x0) -humility: ring buffer ksz8463::__RINGBUF in net: - NDX LINE GEN COUNT PAYLOAD - 7 148 4 1 Write(IACR, 0x40f) - 8 148 4 1 Write(P1VIDCR, 0x301) - 9 148 4 1 Write(P2VIDCR, 0x302) - 10 148 4 1 Write(P3VIDCR, 0x3ff) - 11 134 4 1 Read(P1CR1, 0x0) - 12 148 4 1 Write(P1CR1, 0x202) - 13 134 4 1 Read(P2CR1, 0x0) - 14 148 4 1 Write(P2CR1, 0x202) - 15 134 4 1 Read(P3CR1, 0x0) - 0 148 5 1 Write(P3CR1, 0x4) - 1 148 5 1 Write(SGCR9, 0xa) - 2 134 5 1 Read(P3CR2, 0x607) - 3 148 5 1 Write(P3CR2, 0x4607) - 4 134 5 1 Read(SGCR2, 0xf0) - 5 148 5 1 Write(SGCR2, 0x80f0) - 6 148 5 1 Write(CIDER, 0x1) -humility: ring buffer task_hiffy::stm32h7::__RINGBUF in hiffy: - NDX LINE GEN COUNT PAYLOAD - 14 609 14 1 Execute((0x2fc, DropN(0x2))) - 15 609 14 1 Execute((0x2fe, DropN(0x5))) - 16 609 14 1 Execute((0x300, Push(0x4))) - 17 609 14 1 Execute((0x302, Push(0x0))) - 18 609 14 1 Execute((0x304, PushNone)) - 19 609 14 1 Execute((0x305, PushNone)) - 20 609 14 1 Execute((0x306, Push(0x25))) - 21 609 14 1 Execute((0x308, Push(0x20))) - 22 609 14 1 Execute((0x30a, Push(0x1))) - 23 609 14 1 Execute((0x30c, Call(TargetFunction(0x2)))) - 24 609 14 1 Execute((0x30e, DropN(0x2))) - 25 609 14 1 Execute((0x310, Push(0x79))) - 26 609 14 1 Execute((0x312, Push(0x2))) - 27 609 14 1 Execute((0x314, Call(TargetFunction(0x2)))) - 28 609 14 1 Execute((0x316, DropN(0x2))) - 29 609 14 1 Execute((0x318, Push(0x88))) - 30 609 14 1 Execute((0x31a, Push(0x2))) - 31 609 14 1 Execute((0x31c, Call(TargetFunction(0x2)))) - 32 609 14 1 Execute((0x31e, DropN(0x2))) - 33 609 14 1 Execute((0x320, Push(0x8b))) - 34 609 14 1 Execute((0x322, Push(0x2))) - 35 609 14 1 Execute((0x324, Call(TargetFunction(0x2)))) - 36 609 14 1 Execute((0x326, DropN(0x2))) - 37 609 14 1 Execute((0x328, Push(0x8c))) - 38 609 14 1 Execute((0x32a, Push(0x2))) - 39 609 14 1 Execute((0x32c, Call(TargetFunction(0x2)))) - 40 609 14 1 Execute((0x32e, DropN(0x2))) - 41 609 14 1 Execute((0x330, Push(0x8d))) - 42 609 14 1 Execute((0x332, Push(0x2))) - 43 609 14 1 Execute((0x334, Call(TargetFunction(0x2)))) - 44 609 14 1 Execute((0x336, DropN(0x2))) - 45 609 14 1 Execute((0x338, DropN(0x5))) - 46 609 14 1 Execute((0x33a, Push(0x4))) - 47 609 14 1 Execute((0x33c, Push(0x0))) - 48 609 14 1 Execute((0x33e, PushNone)) - 49 609 14 1 Execute((0x33f, PushNone)) - 50 609 14 1 Execute((0x340, Push(0x67))) - 51 609 14 1 Execute((0x342, Push(0x20))) - 52 609 14 1 Execute((0x344, Push(0x1))) - 53 609 14 1 Execute((0x346, Call(TargetFunction(0x2)))) - 54 609 14 1 Execute((0x348, DropN(0x2))) - 55 609 14 1 Execute((0x34a, Push(0x79))) - 56 609 14 1 Execute((0x34c, Push(0x2))) - 57 609 14 1 Execute((0x34e, Call(TargetFunction(0x2)))) - 58 609 14 1 Execute((0x350, DropN(0x2))) - 59 609 14 1 Execute((0x352, Push(0x88))) - 60 609 14 1 Execute((0x354, Push(0x2))) - 61 609 14 1 Execute((0x356, Call(TargetFunction(0x2)))) - 62 609 14 1 Execute((0x358, DropN(0x2))) - 63 609 14 1 Execute((0x35a, Push(0x8b))) - 0 609 15 1 Execute((0x35c, Push(0x2))) - 1 609 15 1 Execute((0x35e, Call(TargetFunction(0x2)))) - 2 609 15 1 Execute((0x360, DropN(0x2))) - 3 609 15 1 Execute((0x362, Push(0x8c))) - 4 609 15 1 Execute((0x364, Push(0x2))) - 5 609 15 1 Execute((0x366, Call(TargetFunction(0x2)))) - 6 609 15 1 Execute((0x368, DropN(0x2))) - 7 609 15 1 Execute((0x36a, Push(0x8d))) - 8 609 15 1 Execute((0x36c, Push(0x2))) - 9 609 15 1 Execute((0x36e, Call(TargetFunction(0x2)))) - 10 609 15 1 Execute((0x370, DropN(0x2))) - 11 609 15 1 Execute((0x372, DropN(0x5))) - 12 609 15 1 Execute((0x374, Done)) - 13 613 15 1 Success -humility: ring buffer task_jefe::external::__RINGBUF in jefe: -humility: ring buffer task_net::mgmt::__RINGBUF in net: -humility: ring buffer task_spd::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 2 124 3 1 Present(0x1, 0x5, 0xd) - 3 135 3 1 ReadBottom(0xd) - 4 124 3 1 Present(0x1, 0x6, 0xe) - 5 135 3 1 ReadBottom(0xe) - 6 124 3 1 Present(0x1, 0x7, 0xf) - 7 135 3 1 ReadBottom(0xf) - 8 173 3 1 ReadTop(0x8) - 9 173 3 1 ReadTop(0x9) - 10 173 3 1 ReadTop(0xa) - 11 173 3 1 ReadTop(0xb) - 12 173 3 1 ReadTop(0xc) - 13 173 3 1 ReadTop(0xd) - 14 173 3 1 ReadTop(0xe) - 15 173 3 1 ReadTop(0xf) - 0 253 4 1 Found(0x10) - 1 271 4 1 Ready(0x0) -humility: ring buffer task_thermal::__RINGBUF in thermal: - NDX LINE GEN COUNT PAYLOAD - 0 225 1 1 Start - 1 105 1 1 ThermalMode(Manual) -humility: ring buffer task_validate::__RINGBUF in validate: -humility: ring buffer vsc85xx::__RINGBUF in net: - NDX LINE GEN COUNT PAYLOAD - 0 26 1 1 Vsc8562InitSgmii(0x1e) - 1 23 1 1 ViperPatch(0x1e) - 2 133 1 1 GotCrc(0xfb48) diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.toml b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.toml index cff32f635..7322459fb 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 ringbuf" - +status.code = 1 diff --git a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stderr b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stderr index da2ede4a0..7ac96d936 100644 --- a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility spd failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stdout b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stdout index 0eba36fdf..e69de29bb 100644 --- a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stdout @@ -1,17 +0,0 @@ -ADDR MANUFACTURER PART WEEK YEAR - 0 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 1 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 2 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 3 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 4 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 5 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 6 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 7 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 8 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 9 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 10 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 11 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 12 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 13 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 14 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 15 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 diff --git a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.toml b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.toml index f4c97ad74..0f8d67000 100644 --- a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 spd" - +status.code = 1 diff --git a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stderr b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stderr index da2ede4a0..bc0b43de3 100644 --- a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility stackmargin failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stdout b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stdout index 259f7efe4..e69de29bb 100644 --- a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stdout @@ -1,19 +0,0 @@ -ID TASK STACKBASE STACKSIZE MAXDEPTH MARGIN - 0 jefe 0x2001b000 1536 344 1192 - 1 net 0x20004000 4640 3632 1008 - 2 sys 0x2001e000 896 216 680 - 3 spi4_driver 0x2001b800 872 288 584 - 4 spi2_driver 0x2001c000 872 520 352 - 5 i2c_driver 0x2001c800 896 576 320 - 6 spd 0x20010000 896 448 448 - 7 thermal 0x20002000 4504 3504 1000 - 8 power 0x20016000 2048 1360 688 - 9 hiffy 0x20008000 1024 752 272 -10 gimlet_seq 0x20017000 1600 712 888 -11 hash_driver 0x20018000 2048 992 1056 -12 hf 0x2001d000 1920 664 1256 -13 sensor 0x2001d800 1920 1408 512 -14 udpecho 0x20014000 4096 648 3448 -15 udpbroadcast 0x20019000 2048 280 1768 -16 validate 0x2001a000 1000 192 808 -17 idle 0x2001e400 256 104 152 diff --git a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.toml b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.toml index b2a5c60e3..1d49d773f 100644 --- a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 stackmargin" - +status.code = 1 diff --git a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stderr b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stderr index da2ede4a0..691e63afc 100644 --- a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility tasks failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stdout b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stdout index c8d5d92f7..e69de29bb 100644 --- a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stdout @@ -1,1136 +0,0 @@ -system time = 972988 -ID TASK GEN PRI STATE - 0 jefe 0 0 recv, notif: bit0 bit1(T+12) - | - +---> 0x2001b530 0x0806561c userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001b600 0x080642ea userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001b600 0x080642ea idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x2001b600 0x080642ea main - | @ /hubris/task/jefe/src/main.rs:143:9 - | - | - +---> R0 = 0x2001b598 R1 = 0x00000008 R2 = 0x00000003 R3 = 0x2001b5dc - | R4 = 0x2001b598 R5 = 0x00000008 R6 = 0x00000003 R7 = 0x00000000 - | R8 = 0x00000004 R9 = 0x00000002 R10 = 0x2001b63c R11 = 0x00000001 - | R12 = 0x2001b594 SP = 0x2001b510 LR = 0x080642eb PC = 0x0806561c - | PSR = 0x61000000 - | - +-----------> 0x20000410 Task { - save: SavedState { - r4: 0x2001b598, - r5: 0x8, - r6: 0x3, - r7: 0x0, - r8: 0x4, - r9: 0x2, - r10: 0x2001b63c, - r11: 0x1, - psp: 0x2001b4a8, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0xffffffff - }, - priority: Priority(0x0), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: Some(Timestamp(0xed8c8)), - to_post: NotificationSet(0x2) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001070 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004f70 (&abi::TaskDesc) - } - - 1 net 0 5 recv, notif: bit0(irq61) bit1(T+18) - | - +---> 0x20004b58 0x08030666 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20005220 0x08025dc8 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20005220 0x08025dc8 idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x20005220 0x08025dc8 main - | @ /hubris/task/net/src/main.rs:184:13 - | - | - +---> R0 = 0x20004fb0 R1 = 0x00000020 R2 = 0x00000003 R3 = 0x200050f8 - | R4 = 0x20004fb0 R5 = 0x00000020 R6 = 0x00000003 R7 = 0x00000000 - | R8 = 0x00000400 R9 = 0x20007a38 R10 = 0x00000040 R11 = 0x00000001 - | R12 = 0x20004fd0 SP = 0x20004b38 LR = 0x08025dc9 PC = 0x08030666 - | PSR = 0x41000000 - | - +-----------> 0x200004c0 Task { - save: SavedState { - r4: 0x20004fb0, - r5: 0x20, - r6: 0x3, - r7: 0x0, - r8: 0x400, - r9: 0x20007a38, - r10: 0x40, - r11: 0x1, - psp: 0x20004ad0, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x5), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: Some(Timestamp(0xed8ce)), - to_post: NotificationSet(0x2) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001090 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004f84 (&abi::TaskDesc) - } - - 2 sys 0 1 recv - | - +---> 0x2001e330 0x0806c6dc userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001e380 0x0806c1b0 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001e380 0x0806c1b0 idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001e380 0x0806c1b0 main - | @ /hubris/drv/stm32xx-sys/src/main.rs:140:9 - | - | - +---> R0 = 0x2001e368 R1 = 0x00000005 R2 = 0x00000000 R3 = 0x2001e340 - | R4 = 0x2001e368 R5 = 0x00000005 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x5802447c R9 = 0x2001e377 R10 = 0x00000010 R11 = 0x00000001 - | R12 = 0x00000000 SP = 0x2001e310 LR = 0x0806c1b1 PC = 0x0806c6dc - | PSR = 0x41000000 - | - +-----------> 0x20000570 Task { - save: SavedState { - r4: 0x2001e368, - r5: 0x5, - r6: 0x0, - r7: 0x0, - r8: 0x5802447c, - r9: 0x2001e377, - r10: 0x10, - r11: 0x1, - psp: 0x2001e2a8, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x1), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200010b0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004f98 (&abi::TaskDesc) - } - - 3 spi4_driver 0 3 recv - | - +---> 0x2001bb08 0x08041ff2 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001bb68 0x080405de userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001bb68 0x080405de idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001bb68 0x080405de main - | @ /hubris/drv/stm32h7-spi-server/src/main.rs:119:9 - | - | - +---> R0 = 0x2001bb1a R1 = 0x00000002 R2 = 0x00000000 R3 = 0x2001bb1c - | R4 = 0x2001bb1a R5 = 0x00000002 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x2001bb1a R9 = 0x00000000 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x08042560 SP = 0x2001bae8 LR = 0x080405df PC = 0x08041ff2 - | PSR = 0x61000000 - | - +-----------> 0x20000620 Task { - save: SavedState { - r4: 0x2001bb1a, - r5: 0x2, - r6: 0x0, - r7: 0x0, - r8: 0x2001bb1a, - r9: 0x0, - r10: 0x0, - r11: 0x1, - psp: 0x2001ba80, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x3), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200010d0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004fac (&abi::TaskDesc) - } - - 4 spi2_driver 0 3 recv - | - +---> 0x2001c300 0x08046126 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001c368 0x080445aa userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001c368 0x080445aa idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001c368 0x080445aa main - | @ /hubris/drv/stm32h7-spi-server/src/main.rs:119:9 - | - | - +---> R0 = 0x2001c31a R1 = 0x00000002 R2 = 0x00000000 R3 = 0x2001c31c - | R4 = 0x2001c31a R5 = 0x00000002 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x2001c31a R9 = 0x00000001 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x2001c290 SP = 0x2001c2e0 LR = 0x080445ab PC = 0x08046126 - | PSR = 0x61000000 - | - +-----------> 0x200006d0 Task { - save: SavedState { - r4: 0x2001c31a, - r5: 0x2, - r6: 0x0, - r7: 0x0, - r8: 0x2001c31a, - r9: 0x1, - r10: 0x0, - r11: 0x1, - psp: 0x2001c278, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x3), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200010f0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004fc0 (&abi::TaskDesc) - } - - 5 i2c_driver 0 3 recv - | - +---> 0x2001ca48 0x0804a5ca userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001cb80 0x0804867c userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001cb80 0x0804867c userlib::sys_recv_open - | @ /hubris/sys/userlib/src/lib.rs:242:11 - | 0x2001cb80 0x0804867c userlib::hl::recv - | @ /hubris/sys/userlib/src/hl.rs:93:14 - | 0x2001cb80 0x0804867c userlib::hl::recv_without_notification - | @ /hubris/sys/userlib/src/hl.rs:126:5 - | 0x2001cb80 0x0804867c main - | @ /hubris/drv/stm32h7-i2c-server/src/main.rs:175:9 - | - | - +---> R0 = 0x2001cb44 R1 = 0x00000004 R2 = 0x00000000 R3 = 0x2001cb58 - | R4 = 0x2001cb44 R5 = 0x00000004 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x0000ffff R9 = 0x2001cb44 R10 = 0x00008061 R11 = 0x00000001 - | R12 = 0x2001cab5 SP = 0x2001ca28 LR = 0x0804867d PC = 0x0804a5ca - | PSR = 0x41000000 - | - +-----------> 0x20000780 Task { - save: SavedState { - r4: 0x2001cb44, - r5: 0x4, - r6: 0x0, - r7: 0x0, - r8: 0xffff, - r9: 0x2001cb44, - r10: 0x8061, - r11: 0x1, - psp: 0x2001c9c0, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x3), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001110 (), - length: 0x8 - }, - notifications: 0xe, - descriptor: 0x8004fd4 (&abi::TaskDesc) - } - - 6 spd 0 2 notif: bit0(irq31/irq32) - | - +---> 0x20010258 0x0804e610 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20010278 0x0804c814 core::ops::function::FnOnce::call_once - | @ /rustc/4d6d601c8a83284d6b23c253a3e2a060fd197316/library/core/src/ops/function.rs:248:5 - | 0x200102a8 0x0804c112 core::ptr::read_volatile - | @ /rustc/4d6d601c8a83284d6b23c253a3e2a060fd197316/library/core/src/ptr/mod.rs:1472:9 - | 0x200102a8 0x0804c112 vcell::VolatileCell::get - | @ /crates.io/vcell-0.1.3/src/lib.rs:33:18 - | 0x200102a8 0x0804c112 stm32h7::generic::Reg::modify - | @ /crates.io/stm32h7-0.14.0/src/generic.rs:163:20 - | 0x200102a8 0x0804c112 drv_stm32h7_i2c::I2cController::operate_as_target - | @ /hubris/drv/stm32h7-i2c/src/lib.rs:791:17 - | 0x20010380 0x0804d03a main - | @ /hubris/task/spd/src/main.rs:407:5 - | - | - +---> R0 = 0x0804eda8 R1 = 0x00000000 R2 = 0x00000001 R3 = 0x2001025c - | R4 = 0x0804eda8 R5 = 0x00000000 R6 = 0x00000001 R7 = 0x8000ffff - | R8 = 0x00000000 R9 = 0x0804c821 R10 = 0x0804c801 R11 = 0x00000001 - | R12 = 0x00000000 SP = 0x20010238 LR = 0x0804c815 PC = 0x0804e610 - | PSR = 0x41000000 - | - +-----------> 0x20000830 Task { - save: SavedState { - r4: 0x804eda8, - r5: 0x0, - r6: 0x1, - r7: 0x8000ffff, - r8: 0x0, - r9: 0x804c821, - r10: 0x804c801, - r11: 0x1, - psp: 0x200101d0, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x2), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001130 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004fe8 (&abi::TaskDesc) - } - - 7 thermal 0 5 recv, notif: bit0(T+879) - | - +---> 0x200025b8 0x0805279c userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20003198 0x08050de6 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20003198 0x08050de6 idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x20003198 0x08050de6 main - | @ /hubris/task/thermal/src/main.rs:244:9 - | - | - +---> R0 = 0x20003000 R1 = 0x00000002 R2 = 0x00000001 R3 = 0x20003080 - | R4 = 0x20003000 R5 = 0x00000002 R6 = 0x00000001 R7 = 0x00000000 - | R8 = 0x00000000 R9 = 0x0000ffff R10 = 0x0000ffff R11 = 0x00000001 - | R12 = 0x00000001 SP = 0x20002598 LR = 0x08050de7 PC = 0x0805279c - | PSR = 0x61000000 - | - +-----------> 0x200008e0 Task { - save: SavedState { - r4: 0x20003000, - r5: 0x2, - r6: 0x1, - r7: 0x0, - r8: 0x0, - r9: 0xffff, - r10: 0xffff, - r11: 0x1, - psp: 0x20002530, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x5), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: Some(Timestamp(0xedc2b)), - to_post: NotificationSet(0x1) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001150 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004ffc (&abi::TaskDesc) - } - - 8 power 0 6 notif: bit31(T+174) - | - +---> 0x200163c0 0x08056844 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20016800 0x080543fa userlib::sys_get_timer - | @ /hubris/sys/userlib/src/lib.rs:1062:9 - | 0x20016800 0x080543fa userlib::hl::sleep_until - | @ /hubris/sys/userlib/src/hl.rs:615:12 - | 0x20016800 0x080543fa userlib::hl::sleep_for - | @ /hubris/sys/userlib/src/hl.rs:637:5 - | 0x20016800 0x080543fa main - | @ /hubris/task/power/src/main.rs:311:9 - | - | - +---> R0 = 0x080571a8 R1 = 0x00000000 R2 = 0x80000000 R3 = 0x200167d8 - | R4 = 0x080571a8 R5 = 0x00000000 R6 = 0x80000000 R7 = 0x8000ffff - | R8 = 0x200167d0 R9 = 0x200163d2 R10 = 0x000ed96a R11 = 0x00000001 - | R12 = 0x00000007 SP = 0x200163a0 LR = 0x080543fb PC = 0x08056844 - | PSR = 0x41000000 - | - +-----------> 0x20000990 Task { - save: SavedState { - r4: 0x80571a8, - r5: 0x0, - r6: 0x80000000, - r7: 0x8000ffff, - r8: 0x200167d0, - r9: 0x200163d2, - r10: 0xed96a, - r11: 0x1, - psp: 0x20016338, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x6), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: Some(Timestamp(0xed96a)), - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001170 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005010 (&abi::TaskDesc) - } - - 9 hiffy 0 5 notif: bit31(T+143) - | - +---> 0x20008200 0x0800bfd0 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20008240 0x0800c04a userlib::sys_get_timer - | @ /hubris/sys/userlib/src/lib.rs:1062:9 - | 0x20008240 0x0800c04a userlib::hl::sleep_until - | @ /hubris/sys/userlib/src/hl.rs:615:12 - | 0x20008240 0x0800c04a userlib::hl::sleep_for - | @ /hubris/sys/userlib/src/hl.rs:637:5 - | 0x20008400 0x08009432 core::sync::atomic::atomic_sub - | @ /rustc/4d6d601c8a83284d6b23c253a3e2a060fd197316/library/core/src/sync/atomic.rs:3057:23 - | 0x20008400 0x08009432 core::sync::atomic::AtomicU32::fetch_sub - | @ /rustc/4d6d601c8a83284d6b23c253a3e2a060fd197316/library/core/src/sync/atomic.rs:2399:26 - | 0x20008400 0x08009432 main - | @ /hubris/task/hiffy/src/main.rs:127:9 - | - | - +---> R0 = 0x0800d0d0 R1 = 0x00000000 R2 = 0x80000000 R3 = 0x20008208 - | R4 = 0x0800d0d0 R5 = 0x00000000 R6 = 0x80000000 R7 = 0x8000ffff - | R8 = 0x0800d0d0 R9 = 0x8000ffff R10 = 0x2000ea1c R11 = 0x00000001 - | R12 = 0x0000000d SP = 0x200081e0 LR = 0x0800c04b PC = 0x0800bfd0 - | PSR = 0x41000000 - | - +-----------> 0x20000a40 Task { - save: SavedState { - r4: 0x800d0d0, - r5: 0x0, - r6: 0x80000000, - r7: 0x8000ffff, - r8: 0x800d0d0, - r9: 0x8000ffff, - r10: 0x2000ea1c, - r11: 0x1, - psp: 0x20008178, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x5), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: Some(Timestamp(0xed94b)), - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001190 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005024 (&abi::TaskDesc) - } - -10 gimlet_seq 0 4 recv, notif: bit0 - | - +---> 0x200174d8 0x08013de0 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20017640 0x08010a98 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20017640 0x08010a98 idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x20017640 0x08010a98 main - | @ /hubris/drv/gimlet-seq-server/src/main.rs:343:9 - | - | - +---> R0 = 0x20017507 R1 = 0x00000001 R2 = 0x00000001 R3 = 0x20017520 - | R4 = 0x20017507 R5 = 0x00000001 R6 = 0x00000001 R7 = 0x00000000 - | R8 = 0x20017520 R9 = 0x20017510 R10 = 0x00000001 R11 = 0x00000001 - | R12 = 0x00000000 SP = 0x200174b8 LR = 0x08010a99 PC = 0x08013de0 - | PSR = 0x41000000 - | - +-----------> 0x20000af0 Task { - save: SavedState { - r4: 0x20017507, - r5: 0x1, - r6: 0x1, - r7: 0x0, - r8: 0x20017520, - r9: 0x20017510, - r10: 0x1, - r11: 0x1, - psp: 0x20017450, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x4), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200011b0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005038 (&abi::TaskDesc) - } - -11 hash_driver 0 2 recv - | - +---> 0x20018530 0x08059994 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20018800 0x08058260 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20018800 0x08058260 idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x20018800 0x08058260 main - | @ /hubris/drv/stm32h7-hash-server/src/main.rs:53:9 - | - | - +---> R0 = 0x20018550 R1 = 0x00000004 R2 = 0x00000000 R3 = 0x200187d4 - | R4 = 0x20018550 R5 = 0x00000004 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x0000fe02 R9 = 0x200187d4 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x200187ac SP = 0x20018510 LR = 0x08058261 PC = 0x08059994 - | PSR = 0x41000000 - | - +-----------> 0x20000ba0 Task { - save: SavedState { - r4: 0x20018550, - r5: 0x4, - r6: 0x0, - r7: 0x0, - r8: 0xfe02, - r9: 0x200187d4, - r10: 0x0, - r11: 0x1, - psp: 0x200184a8, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x2), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200011d0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x800504c (&abi::TaskDesc) - } - -12 hf 0 3 recv - | - +---> 0x2001d5d8 0x0805df82 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001d780 0x0805c374 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001d780 0x0805c374 idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001d780 0x0805c374 main - | @ /hubris/drv/gimlet-hf-server/src/main.rs:145:9 - | - | - +---> R0 = 0x2001d610 R1 = 0x00000008 R2 = 0x00000000 R3 = 0x2001d730 - | R4 = 0x2001d610 R5 = 0x00000008 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x00000006 R9 = 0x00000020 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x2001d72c SP = 0x2001d5b8 LR = 0x0805c375 PC = 0x0805df82 - | PSR = 0x41000000 - | - +-----------> 0x20000c50 Task { - save: SavedState { - r4: 0x2001d610, - r5: 0x8, - r6: 0x0, - r7: 0x0, - r8: 0x6, - r9: 0x20, - r10: 0x0, - r11: 0x1, - psp: 0x2001d550, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x3), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200011f0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005060 (&abi::TaskDesc) - } - -13 sensor 0 4 recv, notif: bit0(T+12) - | - +---> 0x2001da88 0x080670ec userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001df80 0x080660ba userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001df80 0x080660ba idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x2001df80 0x080660ba main - | @ /hubris/task/sensor/src/main.rs:111:9 - | - | - +---> R0 = 0x2001df68 R1 = 0x00000008 R2 = 0x00000001 R3 = 0x2001dd00 - | R4 = 0x2001df68 R5 = 0x00000008 R6 = 0x00000001 R7 = 0x00000000 - | R8 = 0x2001da90 R9 = 0x2001df74 R10 = 0x080675dc R11 = 0x00000001 - | R12 = 0x00000264 SP = 0x2001da68 LR = 0x080660bb PC = 0x080670ec - | PSR = 0x61000000 - | - +-----------> 0x20000d00 Task { - save: SavedState { - r4: 0x2001df68, - r5: 0x8, - r6: 0x1, - r7: 0x0, - r8: 0x2001da90, - r9: 0x2001df74, - r10: 0x80675dc, - r11: 0x1, - psp: 0x2001da00, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x4), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: Some(Timestamp(0xed8c8)), - to_post: NotificationSet(0x1) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001210 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005074 (&abi::TaskDesc) - } - -14 udpecho 0 6 notif: bit0 - | - +---> 0x20014e00 0x080697a0 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20015000 0x0806816c userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20015000 0x0806816c userlib::sys_recv_closed - | @ /hubris/sys/userlib/src/lib.rs:268:5 - | 0x20015000 0x0806816c main - | @ /hubris/task/udpecho/src/main.rs:52:17 - | - | - +---> R0 = 0x08069e0c R1 = 0x00000000 R2 = 0x00000001 R3 = 0x20014f9c - | R4 = 0x08069e0c R5 = 0x00000000 R6 = 0x00000001 R7 = 0x8000ffff - | R8 = 0x20014f9c R9 = 0x00000000 R10 = 0x20014fa5 R11 = 0x00000001 - | R12 = 0x20014fb8 SP = 0x20014de0 LR = 0x0806816d PC = 0x080697a0 - | PSR = 0x21000000 - | - +-----------> 0x20000db0 Task { - save: SavedState { - r4: 0x8069e0c, - r5: 0x0, - r6: 0x1, - r7: 0x8000ffff, - r8: 0x20014f9c, - r9: 0x0, - r10: 0x20014fa5, - r11: 0x1, - psp: 0x20014d78, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x6), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001230 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005088 (&abi::TaskDesc) - } - -15 udpbroadcast 0 6 notif: bit31(T+454) - | - +---> 0x20019770 0x0806b20c userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20019800 0x0806a0f8 userlib::sys_get_timer - | @ /hubris/sys/userlib/src/lib.rs:1062:9 - | 0x20019800 0x0806a0f8 userlib::hl::sleep_until - | @ /hubris/sys/userlib/src/hl.rs:615:12 - | 0x20019800 0x0806a0f8 userlib::hl::sleep_for - | @ /hubris/sys/userlib/src/hl.rs:637:5 - | 0x20019800 0x0806a0f8 main - | @ /hubris/task/udpbroadcast/src/main.rs:38:9 - | - | - +---> R0 = 0x0806b784 R1 = 0x00000000 R2 = 0x80000000 R3 = 0x200197ac - | R4 = 0x0806b784 R5 = 0x00000000 R6 = 0x80000000 R7 = 0x8000ffff - | R8 = 0x20019795 R9 = 0x00000301 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x200197cc SP = 0x20019750 LR = 0x0806a0f9 PC = 0x0806b20c - | PSR = 0x41000000 - | - +-----------> 0x20000e60 Task { - save: SavedState { - r4: 0x806b784, - r5: 0x0, - r6: 0x80000000, - r7: 0x8000ffff, - r8: 0x20019795, - r9: 0x301, - r10: 0x0, - r11: 0x1, - psp: 0x200196e8, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x6), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: Some(Timestamp(0xeda82)), - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001250 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x800509c (&abi::TaskDesc) - } - -16 validate 0 5 recv - | - +---> 0x2001a3b0 0x08061a78 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001a3e8 0x08060270 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001a3e8 0x08060270 idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001a3e8 0x08060270 main - | @ /hubris/task/validate/src/main.rs:61:9 - | - | - +---> R0 = 0x2001a3b4 R1 = 0x00000004 R2 = 0x00000000 R3 = 0x2001a3b8 - | R4 = 0x2001a3b4 R5 = 0x00000004 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x08061d58 R9 = 0x2001a3e8 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x00000000 SP = 0x2001a390 LR = 0x08060271 PC = 0x08061a78 - | PSR = 0x61000000 - | - +-----------> 0x20000f10 Task { - save: SavedState { - r4: 0x2001a3b4, - r5: 0x4, - r6: 0x0, - r7: 0x0, - r8: 0x8061d58, - r9: 0x2001a3e8, - r10: 0x0, - r11: 0x1, - psp: 0x2001a328, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x5), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001270 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x80050b0 (&abi::TaskDesc) - } - -17 idle 0 7 RUNNING - | - +---> 0x2001e500 0x0806c850 cortex_m::asm::inline::__nop - | @ /crates.io/cortex-m-0.7.5/src/../asm/inline.rs:122:5 - | 0x2001e500 0x0806c850 cortex_m::asm::nop - | @ /crates.io/cortex-m-0.7.5/src/asm.rs:35:5 - | 0x2001e500 0x0806c850 main - | @ /hubris/task/idle/src/main.rs:24:13 - | - | - +---> R0 = 0x2001e500 R1 = 0x2001e500 R2 = 0x00000000 R3 = 0x00000000 - | R4 = 0x00000000 R5 = 0x00000000 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x00000000 R9 = 0x00000000 R10 = 0x00000000 R11 = 0x00000000 - | R12 = 0x00000000 SP = 0x2001e500 LR = 0x0806c84f PC = 0x0806c850 - | PSR = 0x61000000 - | - +-----------> 0x20000fc0 Task { - save: SavedState { - r4: 0x0, - r5: 0x0, - r6: 0x0, - r7: 0x0, - r8: 0x0, - r9: 0x0, - r10: 0x0, - r11: 0x0, - psp: 0x2001e498, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x7), - state: Healthy(Runnable), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001290 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x80050c4 (&abi::TaskDesc) - } - diff --git a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.toml b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.toml index 37f3363fa..8d5fe3c66 100644 --- a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 tasks -slvr --guess" - +status.code = 1 diff --git a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stderr b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stderr index da2ede4a0..691e63afc 100644 --- a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility tasks failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stdout b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stdout index 5023882fc..e69de29bb 100644 --- a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stdout @@ -1,20 +0,0 @@ -system time = 972988 -ID TASK GEN PRI STATE - 0 jefe 0 0 recv, notif: bit0 bit1(T+12) - 1 net 0 5 recv, notif: bit0(irq61) bit1(T+18) - 2 sys 0 1 recv - 3 spi4_driver 0 3 recv - 4 spi2_driver 0 3 recv - 5 i2c_driver 0 3 recv - 6 spd 0 2 notif: bit0(irq31/irq32) - 7 thermal 0 5 recv, notif: bit0(T+879) - 8 power 0 6 notif: bit31(T+174) - 9 hiffy 0 5 notif: bit31(T+143) -10 gimlet_seq 0 4 recv, notif: bit0 -11 hash_driver 0 2 recv -12 hf 0 3 recv -13 sensor 0 4 recv, notif: bit0(T+12) -14 udpecho 0 6 notif: bit0 -15 udpbroadcast 0 6 notif: bit31(T+454) -16 validate 0 5 recv -17 idle 0 7 RUNNING diff --git a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.toml b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.toml index 35f5862c8..6b218c602 100644 --- a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 tasks" - +status.code = 1 From 681ac5b3ae977ede342efd151047f26daad4337f Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Mon, 13 Jul 2026 17:01:08 -0400 Subject: [PATCH 14/15] don't leave core halted if PC check fails --- humility-core/src/hubris.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index 252160a83..1981ba912 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2095,12 +2095,13 @@ impl HubrisArchive { return Ok(()); } else { core.halt()?; - if let Ok((false, pc)) = self.is_pc_within_archive(core) { + let result = self.is_pc_within_archive(core); + core.run()?; + if let Ok((false, pc)) = result { bail!("image ID matches but PC at 0x{pc:x} is not part of any \ module. Maybe this is an incorrect A/B archive, or \ bootloader or ROM code is running?"); } - core.run()?; } if criteria == HubrisValidate::ArchiveMatch { From 970d18e0c8449826ce4f89d935a50a970ed014db Mon Sep 17 00:00:00 2001 From: evan-oxide Date: Mon, 13 Jul 2026 17:01:47 -0400 Subject: [PATCH 15/15] refactor is_pc_within_archive using PcResult --- humility-core/src/hubris.rs | 18 ++++++++++++++---- humility-flash/src/lib.rs | 5 +++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index 1981ba912..8e0866b0c 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2097,7 +2097,7 @@ impl HubrisArchive { core.halt()?; let result = self.is_pc_within_archive(core); core.run()?; - if let Ok((false, pc)) = result { + if let Ok(PcResult::NotInArchive { pc }) = result { bail!("image ID matches but PC at 0x{pc:x} is not part of any \ module. Maybe this is an incorrect A/B archive, or \ bootloader or ROM code is running?"); @@ -2182,12 +2182,12 @@ impl HubrisArchive { pub fn is_pc_within_archive( &self, core: &mut dyn crate::core::Core, - ) -> Result<(bool, u32)> { + ) -> Result { let pc = core.read_reg(ARMRegister::PC)?; if self.instr_mod(pc).is_none() { - Ok((false, pc)) + Ok(PcResult::NotInArchive { pc }) } else { - Ok((true, pc)) + Ok(PcResult::InArchive) } } @@ -6450,6 +6450,16 @@ pub enum HubrisValidate { Booted, } +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum PcResult { + /// The program counter is within the range of instruction addresses + /// defined by this archive + InArchive, + /// The program counter is NOT within the range of instruction addresses + /// defined by this archive, and is instead at the given address + NotInArchive { pc: u32 }, +} + // // We want to track our external regions because we want to be able to identify // them, but this requires us knowing what addresses our external regions map diff --git a/humility-flash/src/lib.rs b/humility-flash/src/lib.rs index fe4f71c2d..993fa2efe 100644 --- a/humility-flash/src/lib.rs +++ b/humility-flash/src/lib.rs @@ -7,7 +7,7 @@ use humility::{ core::Core, - hubris::HubrisArchive, + hubris::{HubrisArchive, PcResult}, log::{Logger, info, warn}, }; use humility_auxflash::{AuxFlashHandler, AuxFlashWriter}; @@ -104,7 +104,8 @@ pub fn get_image_state( ) -> Result { core.halt().map_err(ImageStateError::HaltFailed)?; - if let Ok((false, pc)) = hubris.is_pc_within_archive(core) { + if let Ok(PcResult::NotInArchive { pc }) = hubris.is_pc_within_archive(core) + { warn!( log, "PC at 0x{pc:x} is not part of any module. Maybe you're \