From nobody Mon Jun 8 04:25:14 2026 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 64B15213254 for ; Sun, 7 Jun 2026 06:11:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780812720; cv=none; b=Z9moS7U2cBK6gezh3Lvb546uU9FyNQw0nvLjAAkymT4kdWvc45m8u1aH8gh6R7oP7sNBrp3VplbjYZ9wAfgV9/2HCKKHGhvBsYwm9PH+T0GX3QZp73SuMQBthhVI5XweOceOukKWcHzzsXLZ5Isje3aeqlqSTa8eYVzioEcQz1M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780812720; c=relaxed/simple; bh=sD96oirqm4ckkhaWc1fQu9F2uL78837hDwpVhGdgQ3s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=qx2EaGxtTjX3xaK1s8Kg+ldr+jpP5fQGqQidSy1xVbFEzD9CaHok1YK5cCGT39f2XELdWGds/FpuUE4Nr/xTIZ8G8TPIc8q9DgJUzOCrW96mUyUjzbGlxnxVr2KNOoG4Q7uxEc7uRGt2ApGk6I7nKRsKS0N7eXy/lUyIAAJlgTo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=A++5Q4WK; arc=none smtp.client-ip=209.85.216.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="A++5Q4WK" Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-36bcf3d2565so2292737a91.3 for ; Sat, 06 Jun 2026 23:11:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780812718; x=1781417518; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=n4CzgW3/VXNfJs9yhqU/zZT2TtJnYVsjAwImG97RFLc=; b=A++5Q4WKAaID793h8me4/CjKVacqzTgYKtBb/4NlArBFITk9TtbGqZZ5tnRQbNN02k Rz3MMhbohDwYs/lBJQ5yk5PnVNPxjfOjgh0SgPGaqrzjLOK+XB8YyPEsdU01EpNrD3YH VsDfQBfJXuVZQMQNosUZ9XqVzvW4J2LG5N6GQNrKajV2Dg3Fl/z+7+NnZflFXf17Kc/b JJnPH1DHgMk/nqfhq0ZO5Z8MINlrHU5QOVNz+S4ZG0XtQl+3lFMuTjCTWHhiT7s+OGut H6lrmsFfNZi3Fkbc1b6T3O1uHUiEkLeduXCwijVI9TJLfCqf5hFovn+QL8cC/HVr8/Fz 7BZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780812718; x=1781417518; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=n4CzgW3/VXNfJs9yhqU/zZT2TtJnYVsjAwImG97RFLc=; b=Atdsf+riiJ7Qq0exZBR47d4ICxJ4jN8goo+XJTOqLiQ2bbftXybHjtp2EBYMMbwxY+ Hp4EJ3UTAgzGne2aqCGmeUNRVxLSXHoEsSXQor24T6P7MP7+ZmeqqozEpFd0Ia76s2Qn Ai4FulOaGILdjY5Y5htpWYeIOmJmJL51rRni+6ML5wJPhga5ZNR5TRfw2+4CfelS6gpo z7E6g/UJJqgLvBCO7y7oWx1ggsLwaD4rC2svyCmOMPfFcbj4NHDomlIPNm7Z2kvOMTkh IhCTUBNhFRfp5IIWM32j3acPM8SOKNM+f4xYUbEwQIxQTnJL++My5wLjieztxTdBt/qp dT+g== X-Forwarded-Encrypted: i=1; AFNElJ9wtisEfxcx/M5aDW5svEzC/jHoOTw+EKKJmS95FENWZjVUC44Lj1nr6hWrEszko+mYyVcCmNu8K46E3zo=@vger.kernel.org X-Gm-Message-State: AOJu0YxjyGH+vjmtlevk01AnwweomEq8V2tYdS0NTNsNet1xQfVB7dVy l0zi9zRvp8s7Kph8gvTAfSo85Mr8BqBJQtTf8pqqxFhP1AOQho02xTGMag9YSmcH X-Gm-Gg: Acq92OEUSkQDJD35HbzyjoFAaoaivFh55zDCz2jHMOdSL65f4df7YtHTJd29ryQA8Q7 fJTAbBLNaX/nCPEQdxBdZw3ILdjnumJr7NDqzfodgPGpifcxbQMEghv6iFV1I1bHaWzoIuBO195 tMyHUNPsy/HXEzyjP39YiMqQu5epzz4E4YILmTkIDx/ZQlPZENcV8vFfURy8X8l1EHN/zzzjYcA TNmFN2tUZgOq0ILuoQk69iQ3dY43AzgJT0TEfBwmoM8kxF90dC4ZI49ohEZrH10TLxWBCxQGG11 ybtNVRU+RxDjsdugS9m/db8p+9Gy3NcxhglzTq4pepaIw5D7Dvm+1d2hOtgni7R8otwYy55IOqq LWcupk+VUj5GbvQJTWkfS4Dp6fe8i2Cdydwo3VyUH+BrX+qzcq/GE5nMwDvN+6lscuxYw3dQmiU O9IieTixfgu5ym29pRTz85HsXdy34xz2kzEDv3 X-Received: by 2002:a05:6a21:134b:b0:3b4:b216:2b1f with SMTP id adf61e73a8af0-3b4ccf80159mr13680216637.28.1780812717650; Sat, 06 Jun 2026 23:11:57 -0700 (PDT) Received: from [127.0.1.1] ([223.122.38.120]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-c85df0a4afdsm14265308a12.19.2026.06.06.23.11.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 23:11:57 -0700 (PDT) From: Nick Chan Date: Sun, 07 Jun 2026 14:10:58 +0800 Subject: [PATCH v2] nvme-apple: Prevent shared tags across queues on Apple A11 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260607-prevent-tag-collision-t8015-v2-1-dc4ef4fb42bc@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/42NQQ6CMBBFr0Jm7Zi2gEFX3sOwqMMAkwA1tCEa0 rs7cgIzq/fz/5sdIq/CEW7FDitvEiUsCu5UAI1+GRilUwZn3MXo4UtbvCRMfkAK03QsMDXG1mi p8d2zdGXVMahBu728D/ujVR4lprB+jmeb/aX/eTeLBq8lUV8x+bo292H2Mp0pzNDmnL9xWMvex gAAAA== X-Change-ID: 20260606-prevent-tag-collision-t8015-1c8adb3234de To: Sven Peter , Janne Grunau , Neal Gompa , Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg Cc: asahi@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Nick Chan X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2577; i=towinchenmi@gmail.com; h=from:subject:message-id; bh=sD96oirqm4ckkhaWc1fQu9F2uL78837hDwpVhGdgQ3s=; b=owEBbQKS/ZANAwAKAQHKCLemxQgkAcsmYgBqJQuj5X7yX0st4BSLbvwlG4Y23Krqmjcv8kUJK eJmcCRztTuJAjMEAAEKAB0WIQRLUnh4XJes95w8aIMBygi3psUIJAUCaiULowAKCRABygi3psUI JAj2D/9pVvXx4a209XoxNjr9ggO6sjnN9gdaSZUU6WD/bPUTGFUyk2mhMNzxfWJ2wIQQ89SnX6W pJGIZH55vvdXeN3NI6t9RwdBoS98XmqHS9nGZFb9Wqb7dFhkxTGMVVOuSEn9661DibNck167UDu boT1wYaIcB+T8RCR2QkqfaKq603iB1OizXUU+OQEqVCkIH5MigRf2S5/+AwzcqHYDh/epJyCk3Z B6PSTSWNm7puzXwLDXdH3+o5WP8VWoPisatGyzTt70KMTs3wrFNIqK4aQ3rq06GXPC5f5RCWS+D d6XVaiIIHuB60G7mJXVaETbfMIyhJZ/rEJb2BChuQXl9jv7O0vduj1977TUgaAG5LIHqY0EVDRD SbIgcxt4EIYW6+JZJC2l6EFajmHi1wicQq9199JbTkLav7ZS1dTbuQDeEl6pLLqjI8Av16OoIkw G3F1xlvBUoEEFi4h2cEFa4EqWFOmE6bNVqCpou1qHZq6zfovkqiRlmNi85ZcHg1+h66Tq+LZpZ1 BgdcHV89lsGc1vpmhWbRhnCD2CfWnKgiWdqU1u3rXXcNOD4IJeCFV3ejOk+xxfl9b9KhmbH36PQ Ev6rU6o2iuHBvAzxFinW4zH3znRlCBPoZ6FYiClWNy1EbJUYGMiR2J9GK6PiFvOD/7x+D2eVKcp Fa8BpKVdI21En8g== X-Developer-Key: i=towinchenmi@gmail.com; a=openpgp; fpr=4B5278785C97ACF79C3C688301CA08B7A6C50824 On Apple A11, tags of pending commands must be unique across the admin and IO queues, else the firmware crashes with "duplicate tag error for tag N", with N being the tag. Apply the existing workaround for M1 of reserving two tags for the admin queue to A11. Cc: stable@vger.kernel.org Fixes: 04d8ecf37b5e ("nvme: apple: Add Apple A11 support") Signed-off-by: Nick Chan Reviewed-by: Sven Peter --- Changes in v2: - Complete rewrite to use the existing workaround for M1. - Link to v1: https://lore.kernel.org/r/20260606-prevent-tag-collision-t801= 5-v1-0-93ccf4eca550@gmail.com --- drivers/nvme/host/apple.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/nvme/host/apple.c b/drivers/nvme/host/apple.c index c692fc73babf..da6e983e2005 100644 --- a/drivers/nvme/host/apple.c +++ b/drivers/nvme/host/apple.c @@ -225,7 +225,7 @@ static unsigned int apple_nvme_queue_depth(struct apple= _nvme_queue *q) { struct apple_nvme *anv =3D queue_to_apple_nvme(q); =20 - if (q->is_adminq && anv->hw->has_lsq_nvmmu) + if (q->is_adminq) return APPLE_NVME_AQ_DEPTH; =20 return anv->hw->max_queue_depth; @@ -303,7 +303,7 @@ static void apple_nvme_submit_cmd_t8015(struct apple_nv= me_queue *q, memcpy((void *)q->sqes + (q->sq_tail << APPLE_NVME_IOSQES), cmd, sizeof(*cmd)); =20 - if (++q->sq_tail =3D=3D anv->hw->max_queue_depth) + if (++q->sq_tail =3D=3D apple_nvme_queue_depth(q)) q->sq_tail =3D 0; =20 writel(q->sq_tail, q->sq_db); @@ -1139,10 +1139,7 @@ static void apple_nvme_reset_work(struct work_struct= *work) } =20 /* Setup the admin queue */ - if (anv->hw->has_lsq_nvmmu) - aqa =3D APPLE_NVME_AQ_DEPTH - 1; - else - aqa =3D anv->hw->max_queue_depth - 1; + aqa =3D APPLE_NVME_AQ_DEPTH - 1; aqa |=3D aqa << 16; writel(aqa, anv->mmio_nvme + NVME_REG_AQA); writeq(anv->adminq.sq_dma_addr, anv->mmio_nvme + NVME_REG_ASQ); @@ -1325,8 +1322,7 @@ static int apple_nvme_alloc_tagsets(struct apple_nvme= *anv) * both queues. The admin queue gets the first APPLE_NVME_AQ_DEPTH which * must be marked as reserved in the IO queue. */ - if (anv->hw->has_lsq_nvmmu) - anv->tagset.reserved_tags =3D APPLE_NVME_AQ_DEPTH; + anv->tagset.reserved_tags =3D APPLE_NVME_AQ_DEPTH; anv->tagset.queue_depth =3D anv->hw->max_queue_depth - 1; anv->tagset.timeout =3D NVME_IO_TIMEOUT; anv->tagset.numa_node =3D NUMA_NO_NODE; --- base-commit: e43ffb69e0438cddd72aaa30898b4dc446f664f8 change-id: 20260606-prevent-tag-collision-t8015-1c8adb3234de Best regards, --=20 Nick Chan