Download raw body.
nvme: use I/O submission queue entry size reported by controller
> Date: Sun, 17 May 2026 12:25:57 -0500
> From: joshua stein <jcs@jcs.org>
>
> On at least the Apple T2 NVMe, 128-byte submission queue entries on
> I/O queues are required instead of the standard 64 bytes.
>
> This gets NVMe working on the 2018 Mac Mini. Also tested on a
> non-Apple NVMe but more tests would be helpful.
Unfortunately this breaks the NVMe on my 2023 Mac mini. It advertises
128-byte submission queue entries, but only works with 64-byte ones.
ok?
Index: dev/ic/nvme.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/nvme.c,v
diff -u -p -r1.127 nvme.c
--- dev/ic/nvme.c 27 May 2026 15:04:14 -0000 1.127
+++ dev/ic/nvme.c 28 May 2026 21:37:35 -0000
@@ -1288,10 +1288,12 @@ nvme_identify(struct nvme_softc *sc, u_i
sc->sc_nn = lemtoh32(&identify->nn);
- /* use maximum I/O SQE size reported */
- sc->sc_sqe_size = 1 << (identify->sqes >> 4);
- if (sc->sc_sqe_size < sizeof(struct nvme_sqe))
- sc->sc_sqe_size = sizeof(struct nvme_sqe);
+ if (sc->sc_sqe_size == 0) {
+ /* use maximum I/O SQE size reported */
+ sc->sc_sqe_size = 1 << (identify->sqes >> 4);
+ if (sc->sc_sqe_size < sizeof(struct nvme_sqe))
+ sc->sc_sqe_size = sizeof(struct nvme_sqe);
+ }
/*
* At least one Apple NVMe device presents a second, bogus disk that is
Index: arch/arm64/dev/aplns.c
===================================================================
RCS file: /cvs/src/sys/arch/arm64/dev/aplns.c,v
diff -u -p -r1.17 aplns.c
--- arch/arm64/dev/aplns.c 11 Jan 2026 12:47:48 -0000 1.17
+++ arch/arm64/dev/aplns.c 28 May 2026 21:37:35 -0000
@@ -234,6 +234,7 @@ nvme_ans_attach(struct device *parent, s
sc->sc_ios = faa->fa_reg[0].size;
sc->sc_ops = &nvme_ans_ops;
sc->sc_openings = 1;
+ sc->sc_sqe_size = sizeof(struct nvme_sqe);
if (nvme_attach(sc) != 0) {
/* error printed by nvme_attach() */
nvme: use I/O submission queue entry size reported by controller