public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe
@ 2023-02-01  6:26 Weipu Zhu
  2023-02-01  6:27 ` [PATCH 2/2] MdePkg: Add NVMe boot partition header definition Weipu Zhu
  2023-02-02  2:40 ` [edk2-devel] [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe Wu, Hao A
  0 siblings, 2 replies; 5+ messages in thread
From: Weipu Zhu @ 2023-02-01  6:26 UTC (permalink / raw)
  To: devel; +Cc: Weipu Zhu

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 <weipu.zhu@intel.com>
---
 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<BR>
-  Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2017 - 2023, Intel Corporation. All rights reserved.<BR>
   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


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] MdePkg: Add NVMe boot partition header definition
  2023-02-01  6:26 [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe Weipu Zhu
@ 2023-02-01  6:27 ` Weipu Zhu
  2023-02-02  2:41   ` [edk2-devel] " Wu, Hao A
  2023-02-02  2:40 ` [edk2-devel] [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe Wu, Hao A
  1 sibling, 1 reply; 5+ messages in thread
From: Weipu Zhu @ 2023-02-01  6:27 UTC (permalink / raw)
  To: devel; +Cc: Weipu Zhu

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4304

Add NVMe boot partition header definition to NVMe.h
according to NVMe spec 2.0.

Signed-off-by: Weipu Zhu <weipu.zhu@intel.com>
---
 MdePkg/Include/IndustryStandard/Nvme.h | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/MdePkg/Include/IndustryStandard/Nvme.h b/MdePkg/Include/IndustryStandard/Nvme.h
index c37cd762b9..41d40edbba 100644
--- a/MdePkg/Include/IndustryStandard/Nvme.h
+++ b/MdePkg/Include/IndustryStandard/Nvme.h
@@ -546,6 +546,17 @@ typedef struct {
 #define RPMB_RESULT_AUTHKEY_NOT_PROGRAMMED  0x07
 #define RPMB_RESULT_INVALID_DCB             0x08
 
+//
+// Get Log Page - Boot Partition Log Header.
+// (ref. NVMe Base spec. v2.0 Figure 262).
+//
+typedef struct {
+  UINT8          LogIdentifier; /* Log Identifier, shall be set to 15h */
+  UINT8          Rsvd1[3];      /* Reserved as of Nvm Express 2.0 Spec */
+  NVME_BPINFO    BpInfo;        /* Boot Partition Information, Brs in NVME_BPINFO is not available here */
+  UINT8          Rsvd2[8];      /* Reserved as of Nvm Express 2.0 Spec */
+} NVME_BOOT_PARTITION_HEADER;
+
 //
 // NvmExpress Admin Identify Cmd
 //
-- 
2.37.1.windows.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [edk2-devel] [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe
  2023-02-01  6:26 [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe Weipu Zhu
  2023-02-01  6:27 ` [PATCH 2/2] MdePkg: Add NVMe boot partition header definition Weipu Zhu
@ 2023-02-02  2:40 ` Wu, Hao A
  1 sibling, 0 replies; 5+ messages in thread
From: Wu, Hao A @ 2023-02-02  2:40 UTC (permalink / raw)
  To: devel@edk2.groups.io, Zhu, Weipu
  Cc: Kinney, Michael D, Gao, Liming, Liu, Zhiguang

Add MdePkg maintainers & reviewers.

One general level comment, could you help to add 'NVME_' prefix to the name of
all newly added structure and macro definitions (like most existing ones in
Nvme.h)?

Best Regards,
Hao Wu

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Weipu
> Zhu
> Sent: Wednesday, February 1, 2023 2:27 PM
> To: devel@edk2.groups.io
> Cc: Zhu, Weipu <weipu.zhu@intel.com>
> Subject: [edk2-devel] [PATCH 1/2] MdePkg: Add RPMB related commands
> and DCB definition for NVMe
> 
> 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 <weipu.zhu@intel.com>
> ---
>  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<BR>
> -  Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
> +  Copyright (c) 2017 - 2023, Intel Corporation. All rights reserved.<BR>
>    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
> 
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [edk2-devel] [PATCH 2/2] MdePkg: Add NVMe boot partition header definition
  2023-02-01  6:27 ` [PATCH 2/2] MdePkg: Add NVMe boot partition header definition Weipu Zhu
@ 2023-02-02  2:41   ` Wu, Hao A
  2023-02-07  1:45     ` 回复: " gaoliming
  0 siblings, 1 reply; 5+ messages in thread
From: Wu, Hao A @ 2023-02-02  2:41 UTC (permalink / raw)
  To: devel@edk2.groups.io, Zhu, Weipu
  Cc: Kinney, Michael D, Gao, Liming, Liu, Zhiguang

Add MdePkg maintainers & reviewers.

One inline comment below:


> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Weipu
> Zhu
> Sent: Wednesday, February 1, 2023 2:27 PM
> To: devel@edk2.groups.io
> Cc: Zhu, Weipu <weipu.zhu@intel.com>
> Subject: [edk2-devel] [PATCH 2/2] MdePkg: Add NVMe boot partition header
> definition
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4304
> 
> Add NVMe boot partition header definition to NVMe.h
> according to NVMe spec 2.0.
> 
> Signed-off-by: Weipu Zhu <weipu.zhu@intel.com>
> ---
>  MdePkg/Include/IndustryStandard/Nvme.h | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/MdePkg/Include/IndustryStandard/Nvme.h
> b/MdePkg/Include/IndustryStandard/Nvme.h
> index c37cd762b9..41d40edbba 100644
> --- a/MdePkg/Include/IndustryStandard/Nvme.h
> +++ b/MdePkg/Include/IndustryStandard/Nvme.h
> @@ -546,6 +546,17 @@ typedef struct {
>  #define RPMB_RESULT_AUTHKEY_NOT_PROGRAMMED  0x07
>  #define RPMB_RESULT_INVALID_DCB             0x08
> 
> +//
> +// Get Log Page - Boot Partition Log Header.
> +// (ref. NVMe Base spec. v2.0 Figure 262).
> +//
> +typedef struct {
> +  UINT8          LogIdentifier; /* Log Identifier, shall be set to 15h */
> +  UINT8          Rsvd1[3];      /* Reserved as of Nvm Express 2.0 Spec */
> +  NVME_BPINFO    BpInfo;        /* Boot Partition Information, Brs in
> NVME_BPINFO is not available here */


I suggest to not directly use NVME_BPINFO here.

Since the 'Boot Partition Information' within 'Boot Partition Header' is not
exactly the same with the one defined for controller properties (no BRS field
like you mentioned in the comment).

How about adding field definition for 'ABPID' & 'BPSZ' instead?

Best Regards,
Hao Wu


> +  UINT8          Rsvd2[8];      /* Reserved as of Nvm Express 2.0 Spec */
> +} NVME_BOOT_PARTITION_HEADER;
> +
>  //
>  // NvmExpress Admin Identify Cmd
>  //
> --
> 2.37.1.windows.1
> 
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* 回复: [edk2-devel] [PATCH 2/2] MdePkg: Add NVMe boot partition header definition
  2023-02-02  2:41   ` [edk2-devel] " Wu, Hao A
@ 2023-02-07  1:45     ` gaoliming
  0 siblings, 0 replies; 5+ messages in thread
From: gaoliming @ 2023-02-07  1:45 UTC (permalink / raw)
  To: devel, hao.a.wu, 'Zhu, Weipu'
  Cc: 'Kinney, Michael D', 'Liu, Zhiguang'

Hao and Weipu:
  I have no other comments for this change.

Thanks
Liming
> -----邮件原件-----
> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Wu, Hao A
> 发送时间: 2023年2月2日 10:41
> 收件人: devel@edk2.groups.io; Zhu, Weipu <weipu.zhu@intel.com>
> 抄送: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming
> <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>
> 主题: Re: [edk2-devel] [PATCH 2/2] MdePkg: Add NVMe boot partition
> header definition
> 
> Add MdePkg maintainers & reviewers.
> 
> One inline comment below:
> 
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Weipu
> > Zhu
> > Sent: Wednesday, February 1, 2023 2:27 PM
> > To: devel@edk2.groups.io
> > Cc: Zhu, Weipu <weipu.zhu@intel.com>
> > Subject: [edk2-devel] [PATCH 2/2] MdePkg: Add NVMe boot partition
> header
> > definition
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4304
> >
> > Add NVMe boot partition header definition to NVMe.h
> > according to NVMe spec 2.0.
> >
> > Signed-off-by: Weipu Zhu <weipu.zhu@intel.com>
> > ---
> >  MdePkg/Include/IndustryStandard/Nvme.h | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/MdePkg/Include/IndustryStandard/Nvme.h
> > b/MdePkg/Include/IndustryStandard/Nvme.h
> > index c37cd762b9..41d40edbba 100644
> > --- a/MdePkg/Include/IndustryStandard/Nvme.h
> > +++ b/MdePkg/Include/IndustryStandard/Nvme.h
> > @@ -546,6 +546,17 @@ typedef struct {
> >  #define RPMB_RESULT_AUTHKEY_NOT_PROGRAMMED  0x07
> >  #define RPMB_RESULT_INVALID_DCB             0x08
> >
> > +//
> > +// Get Log Page - Boot Partition Log Header.
> > +// (ref. NVMe Base spec. v2.0 Figure 262).
> > +//
> > +typedef struct {
> > +  UINT8          LogIdentifier; /* Log Identifier, shall be set to 15h
*/
> > +  UINT8          Rsvd1[3];      /* Reserved as of Nvm Express 2.0
> Spec */
> > +  NVME_BPINFO    BpInfo;        /* Boot Partition Information, Brs
> in
> > NVME_BPINFO is not available here */
> 
> 
> I suggest to not directly use NVME_BPINFO here.
> 
> Since the 'Boot Partition Information' within 'Boot Partition Header' is
not
> exactly the same with the one defined for controller properties (no BRS
field
> like you mentioned in the comment).
> 
> How about adding field definition for 'ABPID' & 'BPSZ' instead?
> 
> Best Regards,
> Hao Wu
> 
> 
> > +  UINT8          Rsvd2[8];      /* Reserved as of Nvm Express 2.0
> Spec */
> > +} NVME_BOOT_PARTITION_HEADER;
> > +
> >  //
> >  // NvmExpress Admin Identify Cmd
> >  //
> > --
> > 2.37.1.windows.1
> >
> >
> >
> >
> >
> 
> 
> 
> 
> 




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-02-07  1:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-01  6:26 [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe Weipu Zhu
2023-02-01  6:27 ` [PATCH 2/2] MdePkg: Add NVMe boot partition header definition Weipu Zhu
2023-02-02  2:41   ` [edk2-devel] " Wu, Hao A
2023-02-07  1:45     ` 回复: " gaoliming
2023-02-02  2:40 ` [edk2-devel] [PATCH 1/2] MdePkg: Add RPMB related commands and DCB definition for NVMe Wu, Hao A

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox