From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.17311.1675232833766586042 for ; Tue, 31 Jan 2023 22:27:14 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=MdrY3roj; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: weipu.zhu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1675232833; x=1706768833; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=+9dISpwI4CCqh3sdMkd63O6L2EXZxbNUaMxdfljvO4k=; b=MdrY3roj605NSEAkr4xYfO8t594ME9k0EtPnDkQ6Wl0a3RsJZAfCrKuI UHpqMqgpJA23E9Zmm9rowBgxfRzsa+fpxbqtvb/46QqGb0y3MfJQ/kB91 gkutwX1dltpu8V6aVnl84a+IjkFGjBN/jUBcSBaNXUviSyRxR1Ub9UXpM W9/vRU3PWS4hYH9KA9bog95wRnpkUFHTXtMuC+Se6+DehCp+Jdnj3ariU l8Su96GN2G+Ob6op76GP8HGPo1Gy89bq14iycq5W4qJKFaEJzWGPwodEe 0+GK3X1y0XlTVm64KgaLpl3kkbDbQBBbgIyD7CBbNiAKuo6PMjS1f4YXb A==; X-IronPort-AV: E=McAfee;i="6500,9779,10607"; a="329354429" X-IronPort-AV: E=Sophos;i="5.97,263,1669104000"; d="scan'208";a="329354429" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jan 2023 22:27:13 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10607"; a="658203685" X-IronPort-AV: E=Sophos;i="5.97,263,1669104000"; d="scan'208";a="658203685" Received: from weipuzhu.ccr.corp.intel.com ([10.239.49.144]) by orsmga007.jf.intel.com with ESMTP; 31 Jan 2023 22:27:12 -0800 From: "Weipu Zhu" To: devel@edk2.groups.io Cc: Weipu Zhu Subject: [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe Date: Wed, 1 Feb 2023 14:26:36 +0800 Message-Id: <2e4c3646b03b7660b7e6430b202ea01ee3cee0be.1673939866.git.weipu.zhu@intel.com> X-Mailer: git-send-email 2.37.1.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4303 Add RPMB(Replay Protected Memory Block) access commands, result and DCB(Device Configuration Block) definition for NVMe according to the NVMe spec 2.0. Signed-off-by: Weipu Zhu --- MdePkg/Include/IndustryStandard/Nvme.h | 46 +++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/MdePkg/Include/IndustryStandard/Nvme.h b/MdePkg/Include/IndustryStandard/Nvme.h index 4a1d92c45d..c37cd762b9 100644 --- a/MdePkg/Include/IndustryStandard/Nvme.h +++ b/MdePkg/Include/IndustryStandard/Nvme.h @@ -2,12 +2,13 @@ Definitions based on NVMe spec. version 1.1. (C) Copyright 2016 Hewlett Packard Enterprise Development LP
- Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.
+ Copyright (c) 2017 - 2023, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent @par Specification Reference: NVMe Specification 1.1 NVMe Specification 1.4 + NVMe Specification 2.0 **/ @@ -502,6 +503,49 @@ typedef struct { // UINT8 *Data; /* Data to be written or read by signed access where M = 512 * Sector Count. */ } NVME_RPMB_DATA_FRAME; +// +// RPMB Device Configuration Block Data Structure. +// (ref. NVMe Base spec. v2.0 Figure 460). +// +typedef struct { + UINT8 BPPEnable; /* Boot Partition Protection Enabled */ + UINT8 BPLock; /* Boot Partition Lock */ + UINT8 NameSpaceWrP; /* Namespace Write Protection */ + UINT8 Rsvd1[509]; /* Reserved as of Nvm Express 2.0 Spec */ +} RPMB_DCB; + +// +// RPMB Request and Response Message Types. +// (ref. NVMe Base spec. v2.0 Figure 461). +// +#define RPMB_AUTHKEY_PROGRAM 0x0001 +#define RPMB_COUNTER_READ 0x0002 +#define RPMB_AUTHDATA_WRITE 0x0003 +#define RPMB_AUTHDATA_READ 0x0004 +#define RPMB_RESULT_READ 0x0005 +#define RPMB_DCB_WRITE 0x0006 +#define RPMB_DCB_READ 0x0007 +#define RPMB_AUTHKEY_PROGRAM_RESPONSE 0x0100 +#define RPMB_COUNTER_READ_RESPONSE 0x0200 +#define RPMB_AUTHDATA_WRITE_RESPONSE 0x0300 +#define RPMB_AUTHDATA_READ_RESPONSE 0x0400 +#define RPMB_DCB_WRITE_RESPONSE 0x0600 +#define RPMB_DCB_READ_RESPONSE 0x0700 + +// +// RPMB Operation Result. +// (ref. NVMe Base spec. v2.0 Figure 462). +// +#define RPMB_RESULT_SUCCESS 0x00 +#define RPMB_RESULT_GENERAL_FAILURE 0x01 +#define RPMB_RESULT_AHTHENTICATION_FAILURE 0x02 +#define RPMB_RESULT_COUNTER_FAILURE 0x03 +#define RPMB_RESULT_ADDRESS_FAILURE 0x04 +#define RPMB_RESULT_WRITE_FAILURE 0x05 +#define RPMB_RESULT_READ_FAILURE 0x06 +#define RPMB_RESULT_AUTHKEY_NOT_PROGRAMMED 0x07 +#define RPMB_RESULT_INVALID_DCB 0x08 + // // NvmExpress Admin Identify Cmd // -- 2.37.1.windows.1