]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/Nvme.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Nvme.h
index 4a1d92c45d688b97961ac1d91d8f32ede050aa12..8b8a1bb7f3d3b818e6872b580715514166274847 100644 (file)
@@ -2,12 +2,13 @@
   Definitions based on NVMe spec. version 1.1.\r
 \r
   (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
-  Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2017 - 2023, Intel Corporation. All rights reserved.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
   @par Specification Reference:\r
   NVMe Specification 1.1\r
   NVMe Specification 1.4\r
+  NVMe Specification 2.0\r
 \r
 **/\r
 \r
@@ -502,6 +503,62 @@ typedef struct {
   // UINT8    *Data;                         /* Data to be written or read by signed access where M = 512 * Sector Count. */\r
 } NVME_RPMB_DATA_FRAME;\r
 \r
+//\r
+// RPMB Device Configuration Block Data Structure.\r
+// (ref. NVMe Base spec. v2.0 Figure 460).\r
+//\r
+typedef struct {\r
+  UINT8    BPPEnable;     /* Boot Partition Protection Enabled */\r
+  UINT8    BPLock;        /* Boot Partition Lock */\r
+  UINT8    NameSpaceWrP;  /* Namespace Write Protection */\r
+  UINT8    Rsvd1[509];    /* Reserved as of Nvm Express 2.0 Spec */\r
+} NVME_RPMB_DCB;\r
+\r
+//\r
+// RPMB Request and Response Message Types.\r
+// (ref. NVMe Base spec. v2.0 Figure 461).\r
+//\r
+#define NVME_RPMB_AUTHKEY_PROGRAM           0x0001\r
+#define NVME_RPMB_COUNTER_READ              0x0002\r
+#define NVME_RPMB_AUTHDATA_WRITE            0x0003\r
+#define NVME_RPMB_AUTHDATA_READ             0x0004\r
+#define NVME_RPMB_RESULT_READ               0x0005\r
+#define NVME_RPMB_DCB_WRITE                 0x0006\r
+#define NVME_RPMB_DCB_READ                  0x0007\r
+#define NVME_RPMB_AUTHKEY_PROGRAM_RESPONSE  0x0100\r
+#define NVME_RPMB_COUNTER_READ_RESPONSE     0x0200\r
+#define NVME_RPMB_AUTHDATA_WRITE_RESPONSE   0x0300\r
+#define NVME_RPMB_AUTHDATA_READ_RESPONSE    0x0400\r
+#define NVME_RPMB_DCB_WRITE_RESPONSE        0x0600\r
+#define NVME_RPMB_DCB_READ_RESPONSE         0x0700\r
+\r
+//\r
+// RPMB Operation Result.\r
+// (ref. NVMe Base spec. v2.0 Figure 462).\r
+//\r
+#define NVME_RPMB_RESULT_SUCCESS                 0x00\r
+#define NVME_RPMB_RESULT_GENERAL_FAILURE         0x01\r
+#define NVME_RPMB_RESULT_AHTHENTICATION_FAILURE  0x02\r
+#define NVME_RPMB_RESULT_COUNTER_FAILURE         0x03\r
+#define NVME_RPMB_RESULT_ADDRESS_FAILURE         0x04\r
+#define NVME_RPMB_RESULT_WRITE_FAILURE           0x05\r
+#define NVME_RPMB_RESULT_READ_FAILURE            0x06\r
+#define NVME_RPMB_RESULT_AUTHKEY_NOT_PROGRAMMED  0x07\r
+#define NVME_RPMB_RESULT_INVALID_DCB             0x08\r
+\r
+//\r
+// Get Log Page - Boot Partition Log Header.\r
+// (ref. NVMe Base spec. v2.0 Figure 262).\r
+//\r
+typedef struct {\r
+  UINT8     LogIdentifier;   /* Log Identifier, shall be set to 15h */\r
+  UINT8     Rsvd1[3];\r
+  UINT32    Bpsz  : 15;      /* Boot Partition Size */\r
+  UINT32    Rsvd2 : 16;\r
+  UINT32    Abpid : 1;       /* Active Boot Partition ID */\r
+  UINT8     Rsvd3[8];\r
+} NVME_BOOT_PARTITION_HEADER;\r
+\r
 //\r
 // NvmExpress Admin Identify Cmd\r
 //\r