* [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