pub struct Stall {
pub cycles: u32,
pub cause: Interlock,
}Expand description
A stall request: how long, and what caused it.
ADR 0007 describes an interlock as (cycles, resume_stage). The resume
half is deliberately absent until it can be load-bearing. Today
Pipeline::advance always runs the full cascade when not stalled, so a
stored resume would be read by nothing — and a field that looks like it
carries information while carrying none is the exact hazard
docs/engineering-lessons.md §3.2 is about. Bus::poll_irq_at_phase was
removed for the same reason rather than left in place looking wired.
It lands with T-11-002, when stages can stall independently and a partial resume becomes meaningful.
Fields§
§cycles: u32PCycles remaining.
cause: InterlockWhich documented interlock caused it.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Stall
impl<'de> Deserialize<'de> for Stall
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl Copy for Stall
impl Eq for Stall
impl StructuralPartialEq for Stall
Auto Trait Implementations§
impl Freeze for Stall
impl RefUnwindSafe for Stall
impl Send for Stall
impl Sync for Stall
impl Unpin for Stall
impl UnsafeUnpin for Stall
impl UnwindSafe for Stall
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more