Re: [PATCH 2/2] nvme-apple: Prevent tag collision across queues even if tag space is shared

From: Sven Peter

Date: Sat Jun 06 2026 - 12:13:27 EST


On 06.06.26 15:25, Nick Chan wrote:
From: Yuriy Havrylyuk <yhavry@xxxxxxxxx>

Apple NVMe controllers require tags of pending commands to not be shared
across admin and IO queues. However, on Apple A11 without linear SQ, it is
not possible for either queue to skip over some tags and must go from 0 to
the configured maximum before wrapping around.

If a pending command tag is duplicated across queues, the firmware
crashes with: "duplicate tag error for tag N", with N being the tag.

Instead of partitioning the tag space, which is not possible without
linear SQ,

Isn't that just what the pci.c driver does with NVME_QUIRK_SHARED_TAGS for the T2 macs or what we do in this driver with
if (anv->hw->has_lsq_nvmmu)
anv->tagset.reserved_tags = APPLE_NVME_AQ_DEPTH;
?


Sven