From nobody Fri Apr 1 03:17:57 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 D89D71A4CF5E; Fri, 1 Apr 2022 03:17:57 +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 4KV52s5bXhz4gtR; Fri, 1 Apr 2022 03:17:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1648783077; 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=7Jz9OfBmmqBpujufsSmtQ9GKj5MGKgRpwDevPMkE6Wk=; b=jL0262OPSId1t9IbVKU6mnFiIBA4Yh2T+0R+nWjaXcQBwPeXAtTt97i99BRPcXkJ0vG36z kcNZEG7KmsmhOYzk20Jr+41yrafkK0V0dHZ2vwfOuJ7Rll3QDA8aNZKaJqNIwj19h6aPeF uA+qZUnxjAUtHQoeG+2xibuM0wOn3UBqweKuOcSpdQ6wdpLBgJFwOXovXDXpvKJgYHGoh+ 5gsLssGZ2ZHL3Z86x+yLliKoFQgWKDK7UsKB8gyZZFhhGo2hhyb00w5fnmZ+qMXBhEtbFr Ws02jinZkH8BHRjQEYO4NQ4NZDmhz9soqri5F621MYiVPbCVIhvctzSh79QtzQ== 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 A12924701; Fri, 1 Apr 2022 03:17:57 +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 2313HvcB003238; Fri, 1 Apr 2022 03:17:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2313Hv6S003237; Fri, 1 Apr 2022 03:17:57 GMT (envelope-from git) Date: Fri, 1 Apr 2022 03:17:57 GMT Message-Id: <202204010317.2313Hv6S003237@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: a70b5660f379 - main - nvme: MPS is a power of two, not a size / 8k 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: a70b5660f379d6400d8238cbdec6309d2990a0f9 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1648783077; 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=7Jz9OfBmmqBpujufsSmtQ9GKj5MGKgRpwDevPMkE6Wk=; b=RyWdXfAmOXAsAMn4j1gkjIEXHbi/M/ChHZxcmdivDvP0HAbXoyQvjcHm+6jqGh77BFQG7w 3P4+ZS91kz6l2J7b7Sn0VX3CS3Mv3lZ6GsF5H3+F4vAKjG6+dKgsorzWXr4kjiie0g1aJf 5UGH9Xn4dEeSNl92ogth3RXHX1r41CLi7LCoPPRB3LI5SPxU9JqzOnsg6LjZcWd3JbsCPx 9cm5JctQnKXWpuQFnQ96O5z1ZkAZ0k2f+xEB787loorZXBU8+LkAixO8+UWrJvikmsR792 1hGSMWkdO6bkiQA2C9LWNcS7xB7JPqKmW0uLLf2jGfGzhaikq/4k1BM7bd85IA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1648783077; a=rsa-sha256; cv=none; b=qZx5Me3+bRyGi8EirIcGSAtysQrkaXfN7rBHvfsF2tE8p7e88azSzQZ68/eyL332dIZn0W KapZR7ZKj/WlPBrdW9otmC1gP6YXGmuo0iO8GiudOpEZl/R8tpdSdCIEpUewTZQuZGDNvl NrhicVCtCv0bF9VtIQOI0ofblzodqXWjvYvDFiXClzTzJ/7lJtlsoZdXaYR5kHxARWX/lZ i4cyzWN5Lxjp3W20TBuZQ4BeEUd3mrReVwsQ+ELxcvm+BoQroEb8UYJTtn9TqRQGeCJkjl Goh2FFca3BTYHAUulLWmCZN/qYNF+AWbzrKzZ4RJ0bNkJSDvgE4UHG6LRXiVlQ== 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=a70b5660f379d6400d8238cbdec6309d2990a0f9 commit a70b5660f379d6400d8238cbdec6309d2990a0f9 Author: Warner Losh AuthorDate: 2022-03-29 19:21:55 +0000 Commit: Warner Losh CommitDate: 2022-04-01 03:12:38 +0000 nvme: MPS is a power of two, not a size / 8k Setting MPS in the CC should be a power of 2 number (it specifies the page size of the host is 2^(12+MPS)), so adjust the calcuation. There is no functional change because we do not support any architecutres != 4k pages (yet). Other changes are needed for architectures with 16k or 64k pages, especially when the underlying NVMe drive doesn't support that page size (Most drives support a range that's small, and many only support 4k), but let's at least do this calculation correctly. 12 - 12 is just as much 0 as 4096 >> 13 is :) Sponsored by: Netflix Reviewed by: mav Differential Revision: https://reviews.freebsd.org/D34707 --- sys/dev/nvme/nvme_ctrlr.c | 2 +- sys/dev/nvme/nvme_private.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c index aa41c8fe5540..a632d7fb68e9 100644 --- a/sys/dev/nvme/nvme_ctrlr.c +++ b/sys/dev/nvme/nvme_ctrlr.c @@ -389,7 +389,7 @@ nvme_ctrlr_enable(struct nvme_controller *ctrlr) cc |= 4 << NVME_CC_REG_IOCQES_SHIFT; /* CQ entry size == 16 == 2^4 */ /* This evaluates to 0, which is according to spec. */ - cc |= (PAGE_SIZE >> 13) << NVME_CC_REG_MPS_SHIFT; + cc |= (PAGE_SHIFT - NVME_BASE_SHIFT) << NVME_CC_REG_MPS_SHIFT; nvme_ctrlr_barrier(ctrlr, BUS_SPACE_BARRIER_WRITE); nvme_mmio_write_4(ctrlr, cc, cc); diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h index c889246f9350..977cc2c8d30d 100644 --- a/sys/dev/nvme/nvme_private.h +++ b/sys/dev/nvme/nvme_private.h @@ -96,6 +96,11 @@ MALLOC_DECLARE(M_NVME); /* Maximum log page size to fetch for AERs. */ #define NVME_MAX_AER_LOG_SIZE (4096) +/* + * Page size parameters + */ +#define NVME_BASE_SHIFT 12 /* Several parameters (MSP) are 2^(12+x) */ + /* * Define CACHE_LINE_SIZE here for older FreeBSD versions that do not define * it.