Hi Boqun, […] >> + IrqRequest { dev, irq } >> + } >> + >> + /// Returns the IRQ number of an [`IrqRequest`]. >> + pub fn irq(&self) -> u32 { >> + self.irq >> + } >> +} >> + >> +/// A registration of an IRQ handler for a given IRQ line. >> +/// >> +/// # Examples >> +/// >> +/// The following is an example of using `Registration`. It uses a >> +/// [`AtomicU32`](core::sync::AtomicU32) to provide the interior mutability. > > We are going to remove all usage of core::sync::Atomic* when the LKMM > atomics [1] land. You can probably use `Completion` here (handler does > complete_all(), and registration uses wait_for_completion()) because > `Completion` is irq-safe. And this brings my next comment.. How are completions equivalent to atomics? I am trying to highlight interior mutability in this example. Is the LKMM atomic series getting merged during the upcoming merge window? Because my understanding was that the IRQ series was ready to go in 6.17, pending a reply from Thomas and some minor comments that have been mentioned in v7. If the LKMM series is not ready yet, my proposal is to leave the Atomics->Completion change for a future patch (or really, to just use the new Atomic types introduced by your series, because again, I don't think Completion is the right thing to have there). — Daniel