Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp7125233yba; Thu, 2 May 2019 04:50:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqzPNf+XEdJdVcbuZjb3gbzK5jLWj6drezf1ZxcHzxbxPV6N9lQW8S3fv+976sVXp3ikHGSd X-Received: by 2002:a63:1d26:: with SMTP id d38mr3374102pgd.357.1556797808900; Thu, 02 May 2019 04:50:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556797808; cv=none; d=google.com; s=arc-20160816; b=wdGpswbQ2ljjbjGSQNMg9jJO8PxKkTCLOKKIJGG5doVAXqIGj3BPLmBE7e2K8R+Nq3 +uvg2uoMuNTGzNl9Ap16VyPWnzuHBAHqX12LwIQx1fHnwaDIWAXILB+g7XTrHPwUfT6s Ixu2kNUrsxR6kO57sXKcd/bydLF1XiWlNhKZoUe2ze2hZrykxxWhXQVbenB0E7Ci7JUo SV2N5GVf3/rYj+8YonjjWd/5pnPkIbMSLc0mm8QwVGTi8U2xEwVVj+akHcs0N5yKADOT DfVjirnjs0O2FzEaIFn3/heKiJp5kTOOFfhkDrbIYYBm7cMw5wXrNIIIckW7QFyyeWJX uNqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=kFMTp7t6W4pp3G/LuaIyzHwYaCYJVkYoPb0r4XqvYkU=; b=PGB7JIDXo72tk8MGU94ei5v2JDC62/ZYhVAoPSp/HbOgWiOvoLkPGoXxXucwgYoqH/ Va3b7Q4XZDY/o4zkse4g6P/s0M9mA6BKkDimVJkFMxqD14fKQSnyu8uT0XTxH9wG+J8z XvSR6EhpKV472c2sUE3d4MIRYpwLgUXhAaXWDnPk7O/vuHMOJDBgUtG5+NS6EvckszBG hXyTctybLDXgUqK7ogUOL9uRCXzgWzBz2ubpzHFH02D4W42eSF/FoRt+jCEdSf+nh5id iU9YNigqbVHymY5jduDNHXXL9Llhz1+gu4satc6EoyZmNZL6/AjdcwnqA6Buy0rGI/Gb 5afg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t16si26226095pfh.45.2019.05.02.04.49.54; Thu, 02 May 2019 04:50:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726525AbfEBLss (ORCPT + 99 others); Thu, 2 May 2019 07:48:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56146 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726473AbfEBLsr (ORCPT ); Thu, 2 May 2019 07:48:47 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9112C3087925; Thu, 2 May 2019 11:48:46 +0000 (UTC) Received: from maximlenovopc.usersys.redhat.com (unknown [10.35.206.58]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9248D8AD86; Thu, 2 May 2019 11:48:39 +0000 (UTC) From: Maxim Levitsky To: linux-nvme@lists.infradead.org Cc: Maxim Levitsky , linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Jens Axboe , Alex Williamson , Keith Busch , Christoph Hellwig , Sagi Grimberg , Kirti Wankhede , "David S . Miller" , Mauro Carvalho Chehab , Greg Kroah-Hartman , Wolfram Sang , Nicolas Ferre , "Paul E . McKenney " , Paolo Bonzini , Liang Cunming , Liu Changpeng , Fam Zheng , Amnon Ilan , John Ferlan Subject: [PATCH v2 03/10] nvme/core: add some more values from the spec Date: Thu, 2 May 2019 14:47:54 +0300 Message-Id: <20190502114801.23116-4-mlevitsk@redhat.com> In-Reply-To: <20190502114801.23116-1-mlevitsk@redhat.com> References: <20190502114801.23116-1-mlevitsk@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.45]); Thu, 02 May 2019 11:48:46 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This adds few defines from the spec, that will be used in the nvme-mdev driver Signed-off-by: Maxim Levitsky --- include/linux/nvme.h | 88 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 68 insertions(+), 20 deletions(-) diff --git a/include/linux/nvme.h b/include/linux/nvme.h index c40720cb59ac..653c22baedb1 100644 --- a/include/linux/nvme.h +++ b/include/linux/nvme.h @@ -144,32 +144,42 @@ enum { #define NVME_NVM_IOCQES 4 enum { - NVME_CC_ENABLE = 1 << 0, - NVME_CC_CSS_NVM = 0 << 4, NVME_CC_EN_SHIFT = 0, + NVME_CC_ENABLE = 1 << NVME_CC_EN_SHIFT, + NVME_CC_CSS_SHIFT = 4, + NVME_CC_CSS_NVM = 0 << NVME_CC_CSS_SHIFT, + NVME_CC_MPS_SHIFT = 7, + NVME_CC_MPS_MASK = 0xF << NVME_CC_MPS_SHIFT, + NVME_CC_AMS_SHIFT = 11, - NVME_CC_SHN_SHIFT = 14, - NVME_CC_IOSQES_SHIFT = 16, - NVME_CC_IOCQES_SHIFT = 20, NVME_CC_AMS_RR = 0 << NVME_CC_AMS_SHIFT, NVME_CC_AMS_WRRU = 1 << NVME_CC_AMS_SHIFT, NVME_CC_AMS_VS = 7 << NVME_CC_AMS_SHIFT, + NVME_CC_AMS_MASK = 0x7 << NVME_CC_AMS_SHIFT, + + NVME_CC_SHN_SHIFT = 14, NVME_CC_SHN_NONE = 0 << NVME_CC_SHN_SHIFT, NVME_CC_SHN_NORMAL = 1 << NVME_CC_SHN_SHIFT, NVME_CC_SHN_ABRUPT = 2 << NVME_CC_SHN_SHIFT, NVME_CC_SHN_MASK = 3 << NVME_CC_SHN_SHIFT, + + NVME_CC_IOSQES_SHIFT = 16, + NVME_CC_IOCQES_SHIFT = 20, NVME_CC_IOSQES = NVME_NVM_IOSQES << NVME_CC_IOSQES_SHIFT, NVME_CC_IOCQES = NVME_NVM_IOCQES << NVME_CC_IOCQES_SHIFT, + NVME_CSTS_RDY = 1 << 0, NVME_CSTS_CFS = 1 << 1, NVME_CSTS_NSSRO = 1 << 4, NVME_CSTS_PP = 1 << 5, - NVME_CSTS_SHST_NORMAL = 0 << 2, - NVME_CSTS_SHST_OCCUR = 1 << 2, - NVME_CSTS_SHST_CMPLT = 2 << 2, - NVME_CSTS_SHST_MASK = 3 << 2, + + NVME_CSTS_SHST_SHIFT = 2, + NVME_CSTS_SHST_NORMAL = 0 << NVME_CSTS_SHST_SHIFT, + NVME_CSTS_SHST_OCCUR = 1 << NVME_CSTS_SHST_SHIFT, + NVME_CSTS_SHST_CMPLT = 2 << NVME_CSTS_SHST_SHIFT, + NVME_CSTS_SHST_MASK = 3 << NVME_CSTS_SHST_SHIFT, }; struct nvme_id_power_state { @@ -396,6 +406,20 @@ enum { NVME_NIDT_UUID = 0x03, }; +struct nvme_err_log_entry { + __u8 err_count[8]; + __le16 sqid; + __le16 cid; + __le16 status; + __le16 location; + __u8 lba[8]; + __le32 ns; + __u8 vnd; + __u8 rsvd1[3]; + __u8 cmd_specific[8]; + __u8 rsvd2[24]; +}; + struct nvme_smart_log { __u8 critical_warning; __u8 temperature[2]; @@ -483,13 +507,30 @@ enum { NVME_AER_VS = 7, }; -enum { - NVME_AER_NOTICE_NS_CHANGED = 0x00, - NVME_AER_NOTICE_FW_ACT_STARTING = 0x01, - NVME_AER_NOTICE_ANA = 0x03, - NVME_AER_NOTICE_DISC_CHANGED = 0xf0, +enum nvme_async_event_type { + NVME_AER_TYPE_ERROR = 0, + NVME_AER_TYPE_SMART = 1, + NVME_AER_TYPE_NOTICE = 2, + NVME_AER_TYPE_MAX = 7, }; +enum nvme_async_event { + NVME_AER_ERROR_INVALID_DB_REG = 0, + NVME_AER_ERROR_INVALID_DB_VALUE = 1, + NVME_AER_ERROR_DIAG_FAILURE = 2, + NVME_AER_ERROR_PERSISTENT_INT_ERR = 3, + NVME_AER_ERROR_TRANSIENT_INT_ERR = 4, + NVME_AER_ERROR_FW_IMAGE_LOAD_ERR = 5, + + NVME_AER_SMART_SUBSYS_RELIABILITY = 0, + NVME_AER_SMART_TEMP_THRESH = 1, + NVME_AER_SMART_SPARE_BELOW_THRESH = 2, + + NVME_AER_NOTICE_NS_CHANGED = 0, + NVME_AER_NOTICE_FW_ACT_STARTING = 1, + NVME_AER_NOTICE_ANA = 3, + NVME_AER_NOTICE_DISC_CHANGED = 0xf0, +}; enum { NVME_AEN_BIT_NS_ATTR = 8, NVME_AEN_BIT_FW_ACT = 9, @@ -540,12 +581,6 @@ struct nvme_reservation_status { } regctl_ds[]; }; -enum nvme_async_event_type { - NVME_AER_TYPE_ERROR = 0, - NVME_AER_TYPE_SMART = 1, - NVME_AER_TYPE_NOTICE = 2, -}; - /* I/O commands */ enum nvme_opcode { @@ -697,10 +732,19 @@ enum { NVME_RW_DSM_LATENCY_LOW = 3 << 4, NVME_RW_DSM_SEQ_REQ = 1 << 6, NVME_RW_DSM_COMPRESSED = 1 << 7, + + NVME_WZ_DEAC = 1 << 9, NVME_RW_PRINFO_PRCHK_REF = 1 << 10, NVME_RW_PRINFO_PRCHK_APP = 1 << 11, NVME_RW_PRINFO_PRCHK_GUARD = 1 << 12, NVME_RW_PRINFO_PRACT = 1 << 13, + + NVME_RW_PRINFO = + NVME_RW_PRINFO_PRCHK_REF | + NVME_RW_PRINFO_PRCHK_APP | + NVME_RW_PRINFO_PRCHK_GUARD | + NVME_RW_PRINFO_PRACT, + NVME_RW_DTYPE_STREAMS = 1 << 4, }; @@ -801,6 +845,7 @@ enum { NVME_SQ_PRIO_HIGH = (1 << 1), NVME_SQ_PRIO_MEDIUM = (2 << 1), NVME_SQ_PRIO_LOW = (3 << 1), + NVME_SQ_PRIO_MASK = (3 << 1), NVME_FEAT_ARBITRATION = 0x01, NVME_FEAT_POWER_MGMT = 0x02, NVME_FEAT_LBA_RANGE = 0x03, @@ -1143,6 +1188,7 @@ struct streams_directive_params { struct nvme_command { union { + __le32 dwords[16]; struct nvme_common_command common; struct nvme_rw_command rw; struct nvme_identify identify; @@ -1214,6 +1260,8 @@ enum { NVME_SC_SGL_INVALID_METADATA = 0x10, NVME_SC_SGL_INVALID_TYPE = 0x11, + NVME_SC_PRP_OFFSET_INVALID = 0x13, + NVME_SC_SGL_INVALID_OFFSET = 0x16, NVME_SC_SGL_INVALID_SUBTYPE = 0x17, -- 2.17.2