Index: sys/dev/nvme/nvme_private.h =================================================================== --- sys/dev/nvme/nvme_private.h +++ sys/dev/nvme/nvme_private.h @@ -469,7 +469,13 @@ nvme_completion_poll(struct nvme_completion_poll_status *status) { int sanity = hz * 10; + int sanity2 = 1000 * max(1, (1000 / hz)); + /* + * Adaptively spin for the first ~ms + */ + while (!atomic_load_acq_int(&status->done) && --sanity2 > 0) + DELAY(1); while (!atomic_load_acq_int(&status->done) && --sanity > 0) pause("nvme", 1); if (sanity <= 0)