Greg Steuck <gne...@openbsd.org> wrote: > Mark Kettenis <mark.kette...@xs4all.nl> writes: > > > Anyway, I think you're right in thinking that nvme_intr() needs some > > belt and suspenders. In nvme_shutdown() we delete the "normal" > > command queue, but nvme_intr() inconditionally looks at both of them. > > Now nvme_shutdown() masks the interrupt and nvme_resume() unmasks it > > only after it re-creates the "normal" command queue. But I think > > there are scenarios where we can get a spurious interrupt and it would > > check a queue that isn't there. So I think something like the diff > > below would make sense. > > > > Greg, does this fix your crash? > > I applied this on top of -current. Sadly I'm still getting the same > crashes in sd_buf_done.
Can you add some printf's to track what happens to sc_q ?