From nobody Fri Jan 21 02:27:06 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 2F107196938F; Fri, 21 Jan 2022 02:27:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Jg3DX0JK3z4p89; Fri, 21 Jan 2022 02:27:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1642732029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BKbevJ1492sG2/TyMUa+JjG5GqNoCqhdu62in4kGQJ8=; b=ApmWWiAZW1sMi7ZbWRomtSCIww3x+e+Gz5Gnz1sh+4fZDgeqKuiwnRX4n+0w1PzLRta6pK XOnGcryx4CbJ9MVa5FGASQl1AT4yJIM9sufBAv8JLO/NnYdJ4yjhKb3U3JXnsCjEAelGYt 3GKvphO4jGCStESMknsF6lsD9X2uVYoK7FNtrAeNH+syvVu+itIE6/opl111TOmm3VqmDE 27kDUZZywG/He7Hq0UYNa28wPR/3GAHiN9RDTY5j1pVj4k2XbeCurq30/l9Dmv8g703+ix f6EDAeo1wTMfNCJ92FMiRLgaz5R4ZCGsTZeJpnq3Jw+lcB5mLN2keMmW6yqcyQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5CB5A13CB1; Fri, 21 Jan 2022 02:27:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 20L2R6ta001534; Fri, 21 Jan 2022 02:27:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 20L2R6TP001533; Fri, 21 Jan 2022 02:27:06 GMT (envelope-from git) Date: Fri, 21 Jan 2022 02:27:06 GMT Message-Id: <202201210227.20L2R6TP001533@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: 2b2925d1e872 - stable/13 - nvme: Move to a quirk for the Intel alignment data List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 2b2925d1e8726af3d393c74c9eb25d1fb048c3dc Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1642732029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BKbevJ1492sG2/TyMUa+JjG5GqNoCqhdu62in4kGQJ8=; b=WLpvLK13/dY6zDmivm7TNn0lBsT4cQDNVq7tZg8AxwMMrYsXQOBVlCgvytEodXlpz2N+Gv 98GVcIHUTfT/wiQkbda0KCaryx5F8lhknc8cq8ZdyDJAig7Wzen0gEyvI92poOYnwSPEps yanPEb2rVdv4ThtODyjFoclcZMtJw9wJpX4Kijk6cdoYPbTrYDWcA+5/Tp1JWaNfecH3AG G3nDTJCejN86EckBbJ8rKzduDC4yTppGKPSe6Fvjqer4MKxGZbzLXEhZg7V+Lg851v0S02 uX2K/2CoWbowKnwW0pVvVfd9D2/hAnu2Et5hKQZX6FwaJkYnAxCBIn+9GeiBKg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1642732029; a=rsa-sha256; cv=none; b=k80TTqe5WCXfMDW9LuAWlj4q3wuPGUxvUbNB7gw5H0SLPtq4WuB0KM7ug1NokFyvju6hBR 4+IRXCpM3plC6Hvsg7vSA1Ox+sw2VMs0GT/3xLYj5DnBG9VekShtXYKvNfAE8oquILUT/0 mMXPqYACReoy7T0IeCYk2fEX2m6dj14irakHq+o6P80fy8k7nMIjwH/VkB+no0stt6n+RK gUoLoPce7QilDgF9WL5yIRsuXFYJKj7wgP+UgzJLG4hijHIRXT3EV1d1Z9IKLkKyAQsvNi jUHXW9D+GW7PblaP2jljcHf0aJE2CMXmHCFuCArNeA/bPtCjaWLbfRQKY4bRIA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=2b2925d1e8726af3d393c74c9eb25d1fb048c3dc commit 2b2925d1e8726af3d393c74c9eb25d1fb048c3dc Author: Warner Losh AuthorDate: 2021-12-06 17:22:50 +0000 Commit: Alexander Motin CommitDate: 2022-01-21 02:07:31 +0000 nvme: Move to a quirk for the Intel alignment data Prior to NVMe 1.3, Intel produced a series of drives that had performance alignment data in the vendor specific space since no standard had been defined. Move testing the versions to a quick so the NVMe NS code doesn't know about PCI device info. Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D33284 (cherry picked from commit 053f8ed6ebf2355a92cb1798a9701f701610771c) --- sys/dev/nvme/nvme_ns.c | 10 ++-------- sys/dev/nvme/nvme_pci.c | 4 ++++ sys/dev/nvme/nvme_private.h | 1 + 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/sys/dev/nvme/nvme_ns.c b/sys/dev/nvme/nvme_ns.c index 8f97b08b88f4..ba6960e476f8 100644 --- a/sys/dev/nvme/nvme_ns.c +++ b/sys/dev/nvme/nvme_ns.c @@ -571,20 +571,14 @@ nvme_ns_construct(struct nvme_namespace *ns, uint32_t id, * that improves performance. If present use for the stripe size. NVMe * 1.3 standardized this as NOIOB, and newer Intel drives use that. */ - switch (pci_get_devid(ctrlr->dev)) { - case 0x09538086: /* Intel DC PC3500 */ - case 0x0a538086: /* Intel DC PC3520 */ - case 0x0a548086: /* Intel DC PC4500 */ - case 0x0a558086: /* Dell Intel P4600 */ + if ((ctrlr->quirks & QUIRK_INTEL_ALIGNMENT) != 0) { if (ctrlr->cdata.vs[3] != 0) ns->boundary = (1 << ctrlr->cdata.vs[3]) * ctrlr->min_page_size; else ns->boundary = 0; - break; - default: + } else { ns->boundary = ns->data.noiob * nvme_ns_get_sector_size(ns); - break; } if (nvme_ctrlr_has_dataset_mgmt(&ctrlr->cdata)) diff --git a/sys/dev/nvme/nvme_pci.c b/sys/dev/nvme/nvme_pci.c index e87860bde7e6..20ffe6574dce 100644 --- a/sys/dev/nvme/nvme_pci.c +++ b/sys/dev/nvme/nvme_pci.c @@ -85,6 +85,10 @@ static struct _pcsid { 0x09538086, 1, 0x3705, "DC P3500 SSD [2.5\" SFF]" }, { 0x09538086, 1, 0x3709, "DC P3600 SSD [Add-in Card]" }, { 0x09538086, 1, 0x370a, "DC P3600 SSD [2.5\" SFF]" }, + { 0x09538086, 0, 0, "Intel DC PC3500", QUIRK_INTEL_ALIGNMENT }, + { 0x0a538086, 0, 0, "Intel DC PC3520", QUIRK_INTEL_ALIGNMENT }, + { 0x0a548086, 0, 0, "Intel DC PC4500", QUIRK_INTEL_ALIGNMENT }, + { 0x0a558086, 0, 0, "Dell Intel P4600", QUIRK_INTEL_ALIGNMENT }, { 0x00031c58, 0, 0, "HGST SN100", QUIRK_DELAY_B4_CHK_RDY }, { 0x00231c58, 0, 0, "WDC SN200", QUIRK_DELAY_B4_CHK_RDY }, { 0x05401c5f, 0, 0, "Memblaze Pblaze4", QUIRK_DELAY_B4_CHK_RDY }, diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h index 9c7c1b46eab4..3f89f12cf8fd 100644 --- a/sys/dev/nvme/nvme_private.h +++ b/sys/dev/nvme/nvme_private.h @@ -240,6 +240,7 @@ struct nvme_controller { uint32_t quirks; #define QUIRK_DELAY_B4_CHK_RDY 1 /* Can't touch MMIO on disable */ #define QUIRK_DISABLE_TIMEOUT 2 /* Disable broken completion timeout feature */ +#define QUIRK_INTEL_ALIGNMENT 4 /* Pre NVMe 1.3 performance alignment */ bus_space_tag_t bus_tag; bus_space_handle_t bus_handle;