From nobody Sat Jan 29 23:15:49 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 4F268197B5AA; Sat, 29 Jan 2022 23:15:52 +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 4JmVYf33vLz3sd9; Sat, 29 Jan 2022 23:15:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1643498151; 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=PQbaDOSsmIryD0+tW4ELUfICroemzCrcaBbXhc00o3w=; b=Ga395ucqbT/lWoQBl79GJ+mT/9C8xIDfLS8GlvaUBzumnAI/naEC3/sDJG8B7tAgblCuJ8 HdD6yT3LdFBlQ2wUNkTed5l9Ly3bue1UGmBfcpJUqc9rXBJwgG1o0q9Qlzk3Enpm+89AiI OaD+OfXh/SW5P7U1OHMYpTHNnuawkczNYqfpJYHDX/iCCLt9M7xgOvkgLpphDmXRDB60UX 8srwl5zbdYFQM8qXIPHRPhXMVMCxF/Aw7NgFfFJfeZiOIZcBHjdmrKpsTI6ZG0CqOvPEgm oW76dvIf0/GjXaQs9Rq2qSAvKTfhHxjMXdHIzV1ZIsgBH5gJ9YOdykR5plHBNg== 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 E0C631E32C; Sat, 29 Jan 2022 23:15:49 +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 20TNFnrg008407; Sat, 29 Jan 2022 23:15:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 20TNFnCT008406; Sat, 29 Jan 2022 23:15:49 GMT (envelope-from git) Date: Sat, 29 Jan 2022 23:15:49 GMT Message-Id: <202201292315.20TNFnCT008406@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Chuck Tuffli Subject: git: fa263c532bee - main - bhyve nvme: Fix Set Features, AEN 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: chuck X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: fa263c532beec68eb3b36f676aa0a072ffbe593f Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1643498151; 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=PQbaDOSsmIryD0+tW4ELUfICroemzCrcaBbXhc00o3w=; b=oKnTq+VCj07ECjRqpg/yORd3P/MrcxeAQo3E33juX/5yx88pEp4MC2ltRpCXKUBnw81JcQ JB/6YoKiiZ5TNYNC/gDzIrKZVzfc+aUt6193UMjJUmSSywqaE8NP9tMwyso++o3WglChcm V3bPxLcy1F83i1zrsI9DgB14934zO0BpdGzneNKS4/gL3XeDQ/mmQHcuD2qs8KXCZ6q6tb SmL/amlUVwQT3I7LvhHE7XRAW/0Y8T0woWKcyEZ2NjyISyHiE6N6xMh6b7MresxlbuEqEy o4SRQruJ23YOt4isQ+6PAER9TMl9TO6vtWQbTwAfj3CxQR19E8BDAt7AKJingQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1643498151; a=rsa-sha256; cv=none; b=oJEtmWxKf4D+ciHVFWnBC3JCwPOL3Rs8TWJty3htHqYHzzK7qYYvhkl2IdLkUB2RVNkn7R yQ7qP5r5ZI0rZh3HqzzPO1x6RjE1QeXZxFeY0EEhkcJCrPftV4WQCcVuqVU0wzvlCqMszo /LVOjCF4KS93GYi5lXw8LyQ3GA0J/HQVQZAvUePQTXrLIzgVdCNsUBM14mK19ekFJK4/zV jT6T/6YiyDh7cXmgw87FqwIJuhxLz8uHRpJjkEmQxfGA3EDR3e0DCgki5V1rbxKL2gER3Y vLr8tfjPTts9VwYV1eocy3VRFzVWK4JzeybXKPlnrauBzLOMsh6phiu3XRfL3A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by chuck: URL: https://cgit.FreeBSD.org/src/commit/?id=fa263c532beec68eb3b36f676aa0a072ffbe593f commit fa263c532beec68eb3b36f676aa0a072ffbe593f Author: Chuck Tuffli AuthorDate: 2022-01-30 07:10:59 +0000 Commit: Chuck Tuffli CommitDate: 2022-01-30 07:10:59 +0000 bhyve nvme: Fix Set Features, AEN NVMe Controllers which do not support Endurance Groups must return an error when the Endurance Group Event Aggregate Log Change Notices bit is set in Set Features, Asynchronous Event Configuration. Fixes UNH IOL Test 3.12, Case 8 Tested by: jason@tubnor.net MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D33577 --- usr.sbin/bhyve/pci_nvme.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/usr.sbin/bhyve/pci_nvme.c b/usr.sbin/bhyve/pci_nvme.c index e2837e6c7069..1034fe532892 100644 --- a/usr.sbin/bhyve/pci_nvme.c +++ b/usr.sbin/bhyve/pci_nvme.c @@ -287,6 +287,13 @@ struct pci_nvme_aen { bool posted; }; +/* + * By default, enable all Asynchrnous Event Notifications: + * SMART / Health Critical Warnings + * Namespace Attribute Notices + */ +#define PCI_NVME_AEN_DEFAULT_MASK 0x11f + typedef enum { NVME_CNTRLTYPE_IO = 1, NVME_CNTRLTYPE_DISCOVERY = 2, @@ -413,6 +420,10 @@ static void nvme_feature_iv_config(struct pci_nvme_softc *, struct nvme_feature_obj *, struct nvme_command *, struct nvme_completion *); +static void nvme_feature_async_event(struct pci_nvme_softc *, + struct nvme_feature_obj *, + struct nvme_command *, + struct nvme_completion *); static void *aen_thr(void *arg); @@ -710,8 +721,9 @@ pci_nvme_init_features(struct pci_nvme_softc *sc) sc->feat[fid].set = nvme_feature_iv_config; break; case NVME_FEAT_ASYNC_EVENT_CONFIGURATION: + sc->feat[fid].set = nvme_feature_async_event; /* Enable all AENs by default */ - sc->feat[fid].cdw11 = 0x31f; + sc->feat[fid].cdw11 = PCI_NVME_AEN_DEFAULT_MASK; break; default: sc->feat[fid].set = nvme_feature_invalid_cb; @@ -1657,6 +1669,18 @@ nvme_feature_iv_config(struct pci_nvme_softc *sc, } } +#define NVME_ASYNC_EVENT_ENDURANCE_GROUP (0x4000) +static void +nvme_feature_async_event(struct pci_nvme_softc *sc, + struct nvme_feature_obj *feat, + struct nvme_command *command, + struct nvme_completion *compl) +{ + + if (command->cdw11 & NVME_ASYNC_EVENT_ENDURANCE_GROUP) + pci_nvme_status_genc(&compl->status, NVME_SC_INVALID_FIELD); +} + #define NVME_TEMP_THRESH_OVER 0 #define NVME_TEMP_THRESH_UNDER 1 static void