From nobody Sat Apr 09 05:06:07 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 D63761A841FC; Sat, 9 Apr 2022 05:06:07 +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 4Kb33z3prtz4Ryl; Sat, 9 Apr 2022 05:06:07 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1649480767; 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=qQT6+wARraQUkr7ZdQ7TLyBoBOXmSJtLyXRv4s3Ew6w=; b=A3IK4yuMgYrZEULu8nuDF7CckUBKqiHfD3FYhtNjZPzMuH38myxznTFK3tzcPO2UQf3goi 0eB9XsH5LCn2eN1teG25fuDpLm5UT+5ltlWRbu/yas3cWDR9M/ME4FbjncIicR3kq/yeLs 5ZspjwkMwho8fSr/xfA9tYz022SCYuDBopyTzFZttPmk2yORXD/4HoJDJM2Y93fvpE6L2U 1+cr255mdAC+b4834f3B6fCg613ArXLOu5vGFB9ukKYfL9HvwmEHG0qgxUaCJBFVZF+Jif NVfRZSVNuiMzMpapKlODqmOanhfjlQwrp5tzdze/xQwPO1K5VHHQbwO+uc7Nfw== 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 5920D13962; Sat, 9 Apr 2022 05:06:07 +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 2395679q038414; Sat, 9 Apr 2022 05:06:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 239567Ag038413; Sat, 9 Apr 2022 05:06:07 GMT (envelope-from git) Date: Sat, 9 Apr 2022 05:06:07 GMT Message-Id: <202204090506.239567Ag038413@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 214df80a9cb3 - main - nvme: new define for size of host memory buffer sizes 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: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 214df80a9cb3e95a140b13af7d19deec2bbfae76 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1649480767; 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=qQT6+wARraQUkr7ZdQ7TLyBoBOXmSJtLyXRv4s3Ew6w=; b=kFmub9WjL60xTzBQhZ43VnIG/sPTYPH7cHHlWIQFFLvAxcjf7SD1tOMsJ36Y4ohoFQKL9W h17YOaJBc5mxi1AS2IzXbbJANXbbAYn+HT1hmpBJ5b18bgs+n386LQrJ0DKhgM9oJdQvnF tmoy9V1z09exmrg+o0eqr07AclJ9nFsbnAETNKJRxOd6WMXN2kqU5yu+DEZqNBWtCDcuIk of1ATdctIY1MMZr7vTe0DsYh4F1ffUF3SDHNNNqGudRDv+qVRfpbLFfdkglFVZg3au+Q56 vlkb6jfT7fz7Oq4+HuuxMp1O7AxefviK1+GU06pu5IcsBV6krkhRzDKUnS3Q3g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1649480767; a=rsa-sha256; cv=none; b=wOxyM+moE65e9ZgzGbxCYKIIVfHTqvlwcewAjaHSUIpwQNP9nk9OkeDIw3GEK3Knn0aV5B qxemHYWmm+XTPhUkFPQA1GI44jc1UB6fGpIUvwf2k9YnYrFEYVnNRLz7H35MP/s+OLpmuJ t1lxUCORg+C7p1nPp/+XFYZyzeqLfpHmIH5ub9BZuYMvmNSUmRHhBBMNW1JBwogKz8Tdra 1YZdLH/p0n6Da0d06mzi3WK8Pk860Mo00kP9wGqbu/ramC/bty/tz8TMKyrNbWfMeqrQWD JWgj5owDAZD361fLMj+vrYk/dD/ylQfyWQGHtildwD68/aaZDVE9sZaKD09Bxg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=214df80a9cb3e95a140b13af7d19deec2bbfae76 commit 214df80a9cb3e95a140b13af7d19deec2bbfae76 Author: Warner Losh AuthorDate: 2022-04-09 05:01:06 +0000 Commit: Warner Losh CommitDate: 2022-04-09 05:05:25 +0000 nvme: new define for size of host memory buffer sizes The nvme spec defines the various fields that specify sizes for host memory buffers in terms of 4096 chunks. So, rather than use a bare 4096 here, use NVME_HMB_UNITS. This is explicitly not the host page size of 4096, nor the default memory page size (mps) of the NVMe drive, but its own thing and needs its own define. No functional change is intended, only the logical spelling of 4k. Sponsored by: Netflix --- sys/dev/nvme/nvme.h | 3 +++ sys/dev/nvme/nvme_ctrlr.c | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sys/dev/nvme/nvme.h b/sys/dev/nvme/nvme.h index f2ef2467c9b1..55e94c40dd2c 100644 --- a/sys/dev/nvme/nvme.h +++ b/sys/dev/nvme/nvme.h @@ -62,6 +62,9 @@ /* Cap transfers by the maximum addressable by page-sized PRP (4KB -> 2MB). */ #define NVME_MAX_XFER_SIZE MIN(maxphys, (PAGE_SIZE/8*PAGE_SIZE)) +/* Host memory buffer sizes are always in 4096 byte chunks */ +#define NVME_HMB_UNITS 4096 + /* Register field definitions */ #define NVME_CAP_LO_REG_MQES_SHIFT (0) #define NVME_CAP_LO_REG_MQES_MASK (0xFFFF) diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c index 95a2b5c4285d..6996b3151b0d 100644 --- a/sys/dev/nvme/nvme_ctrlr.c +++ b/sys/dev/nvme/nvme_ctrlr.c @@ -936,11 +936,11 @@ nvme_ctrlr_hmb_alloc(struct nvme_controller *ctrlr) max = (uint64_t)physmem * PAGE_SIZE / 20; TUNABLE_UINT64_FETCH("hw.nvme.hmb_max", &max); - min = (long long unsigned)ctrlr->cdata.hmmin * 4096; + min = (long long unsigned)ctrlr->cdata.hmmin * NVME_HMB_UNITS; if (max == 0 || max < min) return; - pref = MIN((long long unsigned)ctrlr->cdata.hmpre * 4096, max); - minc = MAX(ctrlr->cdata.hmminds * 4096, PAGE_SIZE); + pref = MIN((long long unsigned)ctrlr->cdata.hmpre * NVME_HMB_UNITS, max); + minc = MAX(ctrlr->cdata.hmminds * NVME_HMB_UNITS, PAGE_SIZE); if (min > 0 && ctrlr->cdata.hmmaxd > 0) minc = MAX(minc, min / ctrlr->cdata.hmmaxd); ctrlr->hmb_chunk = pref; @@ -1023,7 +1023,7 @@ again: for (i = 0; i < ctrlr->hmb_nchunks; i++) { ctrlr->hmb_desc_vaddr[i].addr = htole64(ctrlr->hmb_chunks[i].hmbc_paddr); - ctrlr->hmb_desc_vaddr[i].size = htole32(ctrlr->hmb_chunk / 4096); + ctrlr->hmb_desc_vaddr[i].size = htole32(ctrlr->hmb_chunk / NVME_HMB_UNITS); } bus_dmamap_sync(ctrlr->hmb_desc_tag, ctrlr->hmb_desc_map, BUS_DMASYNC_PREWRITE);