From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atlmailgw2.ami.com (atlmailgw2.ami.com [63.147.10.42]) by mx.groups.io with SMTP id smtpd.web12.1949.1587588126949111628 for ; Wed, 22 Apr 2020 13:42:07 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: ami.com, ip: 63.147.10.42, mailfrom: oleksiyy@ami.com) X-AuditID: ac10606f-049ff70000001b62-45-5ea0ac1c2ba9 Received: from atlms2.us.megatrends.com (atlms2.us.megatrends.com [172.16.96.152]) (using TLS with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client did not present a certificate) by atlmailgw2.ami.com (Symantec Messaging Gateway) with SMTP id D9.4C.07010.C1CA0AE5; Wed, 22 Apr 2020 16:42:04 -0400 (EDT) Received: from ATLMS1.us.megatrends.com ([fe80::8c55:daf0:ef05:5605]) by atlms2.us.megatrends.com ([fe80::29dc:a91e:ea0c:cdeb%12]) with mapi id 14.03.0468.000; Wed, 22 Apr 2020 16:41:29 -0400 From: "Oleksiy Yakovlev" To: "Liu, Zhiguang" , "devel@edk2.groups.io" CC: "Feng, Bob C" , "Gao, Liming" , "Kinney, Michael D" , Felix Polyudov Subject: Re: [edk2-devel] [PATCH v1 7/7] MdePkg: UEFI JSON Capsule Support Thread-Topic: [edk2-devel] [PATCH v1 7/7] MdePkg: UEFI JSON Capsule Support Thread-Index: AQHWDq0V5IwFU0zOS0KHhQs2WEJqC6iFK/wAgAB/deA= Date: Wed, 22 Apr 2020 20:41:28 +0000 Message-ID: <6BD875C24FFE2A4E8D6EFC142C67836F03FF656FB5@atlms1.us.megatrends.com> References: <20200409202550.35116-1-oleksiyy@ami.com> <20200409202550.35116-8-oleksiyy@ami.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.16.97.158] MIME-Version: 1.0 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKKsWRmVeSWpSXmKPExsWyRiBhhq7MmgVxBvvfK1r8OjqPzaJ9wmw2 ixX3NrBbdHT8Y7LYNf8JkwOrx/bvFxg9Fu95yRTAFNXAaJOYl5dfkliSqpCSWpxsqxRQlFmW mFyppJCZYqtkqKRQkJOYnJqbmldiq5RYUJCal6Jkx6WAAWyAyjLzFFLzkvNTMvPSbZU8g/11 LSxMLXUNlexCMlIVMvPS8otyE0sy8/MUkvPzSoCqU1OAogoJ3ZwZ99YvYiroPMdYsar3OnsD 4+qNjF2MnBwSAiYSCxcvZeti5OIQEtjFJLFnfwMThHOYUaL1YC8zSBWbgKbEm3MvWEBsEYFY iZs3+phBipgFljJKnDh6kQkkISzgJTFjUSdrFyMHUJG3xJfTHBD1VhIdT66wgtgsAqoSHz7P BJvJKxAo8fzpdnaIZVsYJVa+vsAOkuAEWvDxeQ/YMkYBMYnvp9aAzWcWEJe49WQ+E8TZAhJL 9pxnhrBFJV4+/scKYStKPP3wgh2iPl/i+6/9rBDLBCVOznzCMoFRZBaSUbOQlM1CUgYR15FY sPsTG4StLbFs4WtmGPvMgcdMyOILGNlXMQolluTkJmbmpJcb6SXmZuol5+duYoSkmfwdjB8/ mh9iZOJgPMQowcGsJMK74eG8OCHelMTKqtSi/Pii0pzU4kOMTsAQmsgsxQ2KPGBqiDc2MJAS hXEMTcxMzI3MDS1NzI2NlcR56/V94oQE0oGpKjs1tSC1CGYIEwenVAPj+R/rWAuOxSk8KJ55 55bvjqccT1SXTKgWSmWuki7VdbVe/Eb7/Iwl+3Uc9Zd6rsx5+iNnlsW7a9vPfX5honRMdvKC ydfnlW5Z7iG55PyGHSEzttq3phppeCjqNcZrG0fFaazx4GCe+N5544ord44wMiU4zCu6oPxJ /v6KicpHBfLSdRyNej8qKrEUZyQaajEXFScCADDjsptIAwAA Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_6BD875C24FFE2A4E8D6EFC142C67836F03FF656FB5atlms1usmegat_" --_000_6BD875C24FFE2A4E8D6EFC142C67836F03FF656FB5atlms1usmegat_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Zhiguang. Thank you for your feedback. Using definition from Spec: typedef struct { UINT32 ConfigDataLength; UINT8 ConfigData[ConfigDataLength]; } EFI_JSON_CONFIG_DATA_ITEM; will result in build error. You can't use structure field to define array= size. I addressed this issue by commenting out ConfigData, because 3 additional = structures, introduced by same mantis use this approach for arrays of unkno= wn size. But discussing it further with my colleagues here at AMI, we decided that = commenting out arrays of unknown size in structures make them harder to use= . So I proposed another approach - use UINT8 ConfigData[]; for this structur= e and for additional 3 structures introduced by this JSON capsule update fe= ature. See here: Mantis 2096 Regards, Oleksiy. -----Original Message----- From: Liu, Zhiguang [mailto:zhiguang.liu@intel.com] Sent: Wednesday, April 22, 2020 4:51 AM To: devel@edk2.groups.io; Oleksiy Yakovlev Cc: Feng, Bob C; Gao, Liming; Kinney, Michael D; Felix Polyudov Subject: RE: [edk2-devel] [PATCH v1 7/7] MdePkg: UEFI JSON Capsule Support Hi Oleksiy, The definition of EFI_JSON_CONFIG_DATA_ITEM doesn't totally follow the spe= c. It is as below in spec without commenting ConfigData. typedef struct { UINT32 ConfigDataLength; UINT8 ConfigData[ConfigDataLength]; } EFI_JSON_CONFIG_DATA_ITEM; Can you explain why? Thanks Zhiguang -----Original Message----- From: devel@edk2.groups.io On Behalf Of Oleksiy Yak= ovlev Sent: Friday, April 10, 2020 4:26 AM To: devel@edk2.groups.io Cc: Feng, Bob C ; Gao, Liming = ; Kinney, Michael D ; Felixp@ami.com; oleksiyy@= ami.com Subject: [edk2-devel] [PATCH v1 7/7] MdePkg: UEFI JSON Capsule Support Added Guids and structures, that defines the work flow to perform capsule update using JSON objects. (UEFI 2.8 mantis 1935) Signed-off-by: Oleksiy Yakovlev --- MdePkg/Include/Guid/CapsuleReport.h | 32 +++++++++++- MdePkg/Include/Guid/JsonCapsule.h | 99 ++++++++++++++++++++++++++++++++= +++++ MdePkg/Include/Uefi/UefiSpec.h | 1 + MdePkg/MdePkg.dec | 12 +++++ 4 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 MdePkg/Include/Guid/JsonCapsule.h diff --git a/MdePkg/Include/Guid/CapsuleReport.h b/MdePkg/Include/Guid/Cap= suleReport.h index 93d2bb7..bdaf275 100644 --- a/MdePkg/Include/Guid/CapsuleReport.h +++ b/MdePkg/Include/Guid/CapsuleReport.h @@ -93,7 +93,37 @@ typedef struct { /// } EFI_CAPSULE_RESULT_VARIABLE_FMP; - +typedef struct { + + /// + /// Version of this structure, currently 0x00000001 + /// + UINT32 Version; + + /// + /// The unique identifier of the capsule whose processing result is rec= orded in this variable. + /// 0x00000000 b 0xEFFFFFFF b Implementation Reserved + /// 0xF0000000 b 0xFFFFFFFF b Specification Reserved + /// #define REDFISH_DEFINED_JSON_SCHEMA 0xF000000 + /// The JSON payload shall conform to a Redfish-defined JSON schema, se= e DMTF-Redfish + /// Specification. + /// + UINT32 CapsuleId; + + /// + /// The length of Resp in bytes. + /// + UINT32 RespLength; + + /// + /// Variable length buffer containing the replied JSON payload to the c= aller who delivered JSON + /// capsule to system. The definition of the JSON schema used in the re= plied payload is beyond + /// the scope of this specification. + /// + /// UINT8 Resp[]; + /// + } EFI_CAPSULE_RESULT_VARIABLE_JSON; + extern EFI_GUID gEfiCapsuleReportGuid; #endif diff --git a/MdePkg/Include/Guid/JsonCapsule.h b/MdePkg/Include/Guid/JsonC= apsule.h new file mode 100644 index 0000000..eaa126f --- /dev/null +++ b/MdePkg/Include/Guid/JsonCapsule.h @@ -0,0 +1,99 @@ +/** @file +Guid & data structure for tables defined for reporting firmware configura= tion data to EFI +Configuration Tables and also for processing JSON payload capsule. + + +Copyright (c) 2020, American Megatrends International LLC. All rights res= erved.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef _JSON_CAPSULE_GUID_H__ +#define _JSON_CAPSULE_GUID_H__ + +// +// The address reported in the table entry identified by EFI_JSON_CAPSULE= _DATA_TABLE_GUID will be +// referenced as physical and will not be fixed up when transition from p= reboot to runtime phase. The +// addresses reported in these table entries identified by EFI_JSON_CONFI= G_DATA_TABLE_GUID and +// EFI_JSON_CAPSULE_RESULT_TABLE_GUID will be referenced as virtual and w= ill be fixed up when +// transition from preboot to runtime phase. +// +#define EFI_JSON_CONFIG_DATA_TABLE_GUID \ + {0x87367f87, 0x1119, 0x41ce, \ + {0xaa, 0xec, 0x8b, 0xe0, 0x11, 0x1f, 0x55, 0x8a }} +#define EFI_JSON_CAPSULE_DATA_TABLE_GUID \ + {0x35e7a725, 0x8dd2, 0x4cac, \ + {0x80, 0x11, 0x33, 0xcd, 0xa8, 0x10, 0x90, 0x56 }} +#define EFI_JSON_CAPSULE_RESULT_TABLE_GUID \ + {0xdbc461c3, 0xb3de, 0x422a,\ + {0xb9, 0xb4, 0x98, 0x86, 0xfd, 0x49, 0xa1, 0xe5 }} +#define EFI_JSON_CAPSULE_ID_GUID \ + {0x67d6f4cd, 0xd6b8, 0x4573, \ + {0xbf, 0x4a, 0xde, 0x5e, 0x25, 0x2d, 0x61, 0xae }} + + + + +#pragma pack(1) + +typedef struct { + /// + /// Version of the structure, initially 0x00000001. + /// + UINT32 Version; + + /// + /// The unique identifier of this capsule. + /// + UINT32 CapsuleId; + + /// + /// The length of the JSON payload immediately following this header, i= n bytes. + /// + UINT32 PayloadLength; + + /// + /// Variable length buffer containing the JSON payload that should be p= arsed and applied to the system. The + /// definition of the JSON schema used in the payload is beyond the sco= pe of this specification. + /// UINT8 Payload[]; +} EFI_JSON_CAPSULE_HEADER; + +typedef struct { + /// + /// The length of the following ConfigData, in bytes. + /// + UINT32 ConfigDataLength; + + /// + /// Variable length buffer containing the JSON payload that describes o= ne group of configuration data within + /// current system. The definition of the JSON schema used in this payl= oad is beyond the scope of this specification. + /// + ///UINT8 ConfigData[ConfigDataLength]; +} EFI_JSON_CONFIG_DATA_ITEM; + +typedef struct { + /// + /// Version of the structure, initially 0x00000001. + /// + UINT32 Version; + + /// + ////The total length of EFI_JSON_CAPSULE_CONFIG_DATA, in bytes. + /// + UINT32 TotalLength; + + /// + /// Array of configuration data groups. + /// + /// EFI_JSON_CONFIG_DATA_ITEM ConfigDataList[]; +} EFI_JSON_CAPSULE_CONFIG_DATA; + +#pragma pack() + +extern EFI_GUID gEfiJsonConfigDataTableGuid; +extern EFI_GUID gEfiJsonCapsuleDataTableGuid; +extern EFI_GUID gEfiJsonCapsuleResultTableGuid; +extern EFI_GUID gEfiJsonCapsuleIdGuid; + + +#endif diff --git a/MdePkg/Include/Uefi/UefiSpec.h b/MdePkg/Include/Uefi/UefiSpec= .h index c6d306d..ce1b624 100644 --- a/MdePkg/Include/Uefi/UefiSpec.h +++ b/MdePkg/Include/Uefi/UefiSpec.h @@ -1781,6 +1781,7 @@ EFI_STATUS #define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED 0x00000000000= 00008 #define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED 0x00000000000= 00010 #define EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY 0x00000000000= 00040 +#define EFI_OS_INDICATIONS_JSON_CONFIG_DATA_REFRESH 0x00000000000= 00080 // // EFI Runtime Services Table diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index ac1f533..77c573e 100644 --- a/MdePkg/MdePkg.dec +++ b/MdePkg/MdePkg.dec @@ -646,6 +646,18 @@ gEfiBttAbstractionGuid =3D { 0x18633bfc, 0x1735, 0x4217, { 0x8a= , 0xc9, 0x17, 0x23, 0x92, 0x82, 0xd3, 0xf8 }} # + # GUIDs defined in UEFI2.8 + # + ## Include/Guid/JsonCapsule.h + gEfiJsonConfigDataTableGuid =3D { 0x87367f87, 0x1119, 0x41ce, = { 0xaa, 0xec, 0x8b, 0xe0, 0x11, 0x1f, 0x55, 0x8a }} + gEfiJsonCapsuleDataTableGuid =3D { 0x35e7a725, 0x8dd2, 0x4cac, = { 0x80, 0x11, 0x33, 0xcd, 0xa8, 0x10, 0x90, 0x56 }} + gEfiJsonCapsuleResultTableGuid =3D { 0xdbc461c3, 0xb3de, 0x422a, = { 0xb9, 0xb4, 0x98, 0x86, 0xfd, 0x49, 0xa1, 0xe5 }} + gEfiJsonCapsuleIdGuid =3D { 0x67d6f4cd, = 0xd6b8, 0x4573, { 0xbf, 0x4a, 0xde, 0x5e, 0x25, 0x2d, 0x61, 0xae }} + + ## Include\Guid\HiiPlatformSetupFormset.h + gEfiHiiResetStyleFormsetGuid =3D { 0x790217bd, 0xbecf, 0x485b, { 0= x91, 0x70, 0x5f, 0xf7, 0x11, 0x31, 0x8b, 0x27 }} + + # # GUID defined in PI1.0 # ## Include/Guid/AprioriFileName.h -- 2.9.0.windows.1 Please consider the environment before printing this email. The information contained in this message may be confidential and propriet= ary to American Megatrends (AMI). This communication is intended to be rea= d only by the individual or entity to whom it is addressed or by their desi= gnee. If the reader of this message is not the intended recipient, you are = on notice that any distribution of this message, in any form, is strictly p= rohibited. Please promptly notify the sender by reply e-mail or by telepho= ne at 770-246-8600, and then delete or destroy all copies of the transmissi= on. Please consider the environment before printing this email. The information contained in this message may be confidential and propriet= ary to American Megatrends (AMI). This communication is intended to be rea= d only by the individual or entity to whom it is addressed or by their desi= gnee. If the reader of this message is not the intended recipient, you are = on notice that any distribution of this message, in any form, is strictly p= rohibited. Please promptly notify the sender by reply e-mail or by telepho= ne at 770-246-8600, and then delete or destroy all copies of the transmissi= on. --_000_6BD875C24FFE2A4E8D6EFC142C67836F03FF656FB5atlms1usmegat_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable
Hi Zhiguang.
 
Thank you for your feedback.
 
Using definition from Spec:
typedef struct {
UINT32 ConfigDataLength;
UINT8 ConfigData[ConfigDataLength];
} EFI_JSON_CONFIG_DATA_ITEM;
will result in build error. You can't use structure field to define = array size.
I addressed this issue by commenting out ConfigData, because 3 additi= onal structures, introduced by same mantis use this approach for arrays of = unknown size.
 
But discussing it further with my colleagues here at AMI, we decided = that commenting out arrays of unknown size in structures make them harder t= o use.
So I proposed another approach - use UINT8 ConfigData[]; for this str= ucture and for additional 3 structures introduced by this JSON capsule upda= te feature.
 
See here:
 
 
Regards, Oleksiy.
 
-----Original Message-----
From: Liu, Zhiguang [mailto= :zhiguang.liu@intel.com]
Sent: Wednesday, April 22, 2020 4:51 AM
To: devel@edk2.groups.io; Oleksiy Yakovlev
Cc: Feng, Bob C; Gao, Liming; Kinney, Michael D; Felix Polyudov
Subject: RE: [edk2-devel] [PATCH v1 7/7] MdePkg: UEFI JSON Capsule Su= pport
 
Hi Oleksiy,
 
The definition of EFI_JSON_CONFIG_DATA_ITEM doesn't totally follow th= e spec.
It is as below in spec without commenting ConfigData.
 
typedef struct {
UINT32 ConfigDataLength;
UINT8 ConfigData[ConfigDataLength];
} EFI_JSON_CONFIG_DATA_ITEM;
 
Can you explain why?
 
Thanks
Zhiguang
 
-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of = Oleksiy Yakovlev
Sent: Friday, April 10, 2020 4:26 AM
To: devel@edk2.groups.io
Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <liming.= gao@intel.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Fe= lixp@ami.com; oleksiyy@ami.com
Subject: [edk2-devel] [PATCH v1 7/7] MdePkg: UEFI JSON Capsule Suppor= t
 
Added Guids and structures, that defines the work flow to perform cap= sule
update using JSON objects.
(UEFI 2.8 mantis 1935)
 
Signed-off-by: Oleksiy Yakovlev <oleksiyy@ami.com>
---
MdePkg/Include/Guid/CapsuleReport.h | 32 +++++&#= 43;+++++-
MdePkg/Include/Guid/JsonCapsule.h   | 99 +++&#= 43;++++++++++++++&#= 43;++++++++++++++&#= 43;+++
MdePkg/Include/Uefi/UefiSpec.h      | = 1 +
MdePkg/MdePkg.dec        &nb= sp;          | 12 ++&#= 43;++
4 files changed, 143 insertions(+), 1 deletion(-)
create mode 100644 MdePkg/Include/Guid/JsonCapsule.h
 
diff --git a/MdePkg/Include/Guid/CapsuleReport.h b/MdePkg/Include/Gui= d/CapsuleReport.h
index 93d2bb7..bdaf275 100644
--- a/MdePkg/Include/Guid/CapsuleReport.h
+++ b/MdePkg/Include/Guid/CapsuleReport.h
@@ -93,7 +93,37 @@ typedef struct {
   ///
} EFI_CAPSULE_RESULT_VARIABLE_FMP;
 
-
+typedef struct {
+
+  ///
+  /// Version of this structure, currently 0x00000001
+  ///
+  UINT32        Version;=
+
+  ///
+  /// The unique identifier of the capsule whose processing= result is recorded in this variable.
+  /// 0x00000000 b  0xEFFFFFFF b  Implementation = Reserved
+  /// 0xF0000000 b  0xFFFFFFFF b  Specification R= eserved
+  /// #define REDFISH_DEFINED_JSON_SCHEMA 0xF000000
+  /// The JSON payload shall conform to a Redfish-defined J= SON schema, see DMTF-Redfish
+  /// Specification.
+  ///
+  UINT32 CapsuleId;
+
+  ///
+  /// The length of Resp in bytes.
+  ///
+  UINT32 RespLength;
+
+  ///
+  /// Variable length buffer containing the replied JSON pa= yload to the caller who delivered JSON
+  /// capsule to system. The definition of the JSON schema = used in the replied payload is beyond
+  /// the scope of this specification.
+  ///
+  /// UINT8 Resp[];
+  ///
+ } EFI_CAPSULE_RESULT_VARIABLE_JSON;
+
extern EFI_GUID gEfiCapsuleReportGuid;
 
#endif
diff --git a/MdePkg/Include/Guid/JsonCapsule.h b/MdePkg/Include/Guid/= JsonCapsule.h
new file mode 100644
index 0000000..eaa126f
--- /dev/null
+++ b/MdePkg/Include/Guid/JsonCapsule.h
@@ -0,0 +1,99 @@
+/** @file
+Guid & data structure for tables defined for reporting firmw= are configuration data to EFI
+Configuration Tables and also for processing JSON payload capsul= e.
+
+
+Copyright (c) 2020, American Megatrends International LLC. All r= ights reserved.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef _JSON_CAPSULE_GUID_H__
+#define _JSON_CAPSULE_GUID_H__
+
+//
+// The address reported in the table entry identified by EFI_JSO= N_CAPSULE_DATA_TABLE_GUID will be
+// referenced as physical and will not be fixed up when transiti= on from preboot to runtime phase. The
+// addresses reported in these table entries identified by EFI_J= SON_CONFIG_DATA_TABLE_GUID and
+// EFI_JSON_CAPSULE_RESULT_TABLE_GUID will be referenced as virt= ual and will be fixed up when
+// transition from preboot to runtime phase.
+//
+#define EFI_JSON_CONFIG_DATA_TABLE_GUID \
+       {0x87367f87, 0x1119, 0x41ce= , \
+       {0xaa, 0xec, 0x8b, 0xe0, 0x= 11, 0x1f, 0x55, 0x8a }}
+#define EFI_JSON_CAPSULE_DATA_TABLE_GUID \
+       {0x35e7a725, 0x8dd2, 0x4cac= , \
+       {0x80, 0x11, 0x33, 0xcd, 0x= a8, 0x10, 0x90, 0x56 }}
+#define EFI_JSON_CAPSULE_RESULT_TABLE_GUID \
+       {0xdbc461c3, 0xb3de, 0x422a= ,\
+       {0xb9, 0xb4, 0x98, 0x86, 0x= fd, 0x49, 0xa1, 0xe5 }}
+#define EFI_JSON_CAPSULE_ID_GUID \
+       {0x67d6f4cd, 0xd6b8,  = 0x4573, \
+       {0xbf, 0x4a, 0xde, 0x5e, 0x= 25, 0x2d, 0x61, 0xae }}
+
+
+
+
+#pragma pack(1)
+
+typedef struct {
+  ///
+  /// Version of the structure, initially 0x00000001.
+  ///
+  UINT32 Version;
+
+  ///
+  /// The unique identifier of this capsule.
+  ///
+  UINT32 CapsuleId;
+
+  ///
+  /// The length of the JSON payload immediately following = this header, in bytes.
+  ///
+  UINT32 PayloadLength;
+
+  ///
+  /// Variable length buffer containing the JSON payload th= at should be parsed and applied to the system. The
+  /// definition of the JSON schema used in the payload is = beyond the scope of this specification.
+  /// UINT8 Payload[];
+} EFI_JSON_CAPSULE_HEADER;
+
+typedef struct {
+  ///
+  /// The length of the following ConfigData, in bytes.
+  ///
+  UINT32 ConfigDataLength;
+
+  ///
+  /// Variable length buffer containing the JSON payload th= at describes one group of configuration data within
+  /// current system. The definition of the JSON schema use= d in this payload is beyond the scope of this specification.
+  ///
+  ///UINT8 ConfigData[ConfigDataLength];
+} EFI_JSON_CONFIG_DATA_ITEM;
+
+typedef struct {
+  ///
+  /// Version of the structure, initially 0x00000001.
+  ///
+  UINT32 Version;
+
+  ///
+  ////The total length of EFI_JSON_CAPSULE_CONFIG_DATA, in = bytes.
+  ///
+  UINT32 TotalLength;
+
+  ///
+  /// Array of configuration data groups.
+  ///
+  /// EFI_JSON_CONFIG_DATA_ITEM ConfigDataList[];
+} EFI_JSON_CAPSULE_CONFIG_DATA;
+
+#pragma pack()
+
+extern EFI_GUID gEfiJsonConfigDataTableGuid;
+extern EFI_GUID gEfiJsonCapsuleDataTableGuid;
+extern EFI_GUID gEfiJsonCapsuleResultTableGuid;
+extern EFI_GUID gEfiJsonCapsuleIdGuid;
+
+
+#endif
diff --git a/MdePkg/Include/Uefi/UefiSpec.h b/MdePkg/Include/Uefi/Uef= iSpec.h
index c6d306d..ce1b624 100644
--- a/MdePkg/Include/Uefi/UefiSpec.h
+++ b/MdePkg/Include/Uefi/UefiSpec.h
@@ -1781,6 +1781,7 @@ EFI_STATUS
#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED   &n= bsp;        0x0000000000000008
#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED  &= nbsp;  0x0000000000000010
#define EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY   =        0x0000000000000040
+#define EFI_OS_INDICATIONS_JSON_CONFIG_DATA_REFRESH  &= nbsp;      0x0000000000000080
 
//
// EFI Runtime Services Table
diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
index ac1f533..77c573e 100644
--- a/MdePkg/MdePkg.dec
+++ b/MdePkg/MdePkg.dec
@@ -646,6 +646,18 @@
   gEfiBttAbstractionGuid     &nbs= p;   =3D { 0x18633bfc, 0x1735, 0x4217, { 0x8a, 0xc9, 0x17, 0x23, = 0x92, 0x82, 0xd3, 0xf8 }}
 
   #
+  # GUIDs defined in UEFI2.8
+  #
+  ## Include/Guid/JsonCapsule.h
+  gEfiJsonConfigDataTableGuid     =       =3D { 0x87367f87, 0x1119, 0x41ce, { 0xaa, 0x= ec, 0x8b, 0xe0, 0x11, 0x1f, 0x55, 0x8a }}
+  gEfiJsonCapsuleDataTableGuid     = ;     =3D { 0x35e7a725, 0x8dd2, 0x4cac, { 0x80, 0x11, 0= x33, 0xcd, 0xa8, 0x10, 0x90, 0x56 }}
+  gEfiJsonCapsuleResultTableGuid    &nb= sp;   =3D { 0xdbc461c3, 0xb3de, 0x422a, { 0xb9, 0xb4, 0x98, 0x86,= 0xfd, 0x49, 0xa1, 0xe5 }}
+  gEfiJsonCapsuleIdGuid      =             &nb= sp;            = =3D { 0x67d6f4cd, 0xd6b8, 0x4573, { 0xbf, 0x4a, 0xde, 0x5e, 0x25, 0x2d, 0x= 61, 0xae }}
+
+  ## Include\Guid\HiiPlatformSetupFormset.h
+  gEfiHiiResetStyleFormsetGuid     = ; =3D { 0x790217bd, 0xbecf, 0x485b, { 0x91, 0x70, 0x5f, 0xf7, 0x11, 0x31, 0= x8b, 0x27 }}
+
+  #
   # GUID defined in PI1.0
   #
   ## Include/Guid/AprioriFileName.h
--
2.9.0.windows.1
 
 
Please consider the environment before printing this email.
 
The information contained in this message may be confidential and pro= prietary to American Megatrends (AMI).  This communication is intended= to be read only by the individual or entity to whom it is addressed or by = their designee. If the reader of this message is not the intended recipient, you are on notice that any distribu= tion of this message, in any form, is strictly prohibited.  Please pro= mptly notify the sender by reply e-mail or by telephone at 770-246-8600, an= d then delete or destroy all copies of the transmission.
 
 
 
P P= lease consider the environment before printing this email

The information contained in this message may be confidential and propr= ietary to American Megatrends (AMI). This communication is intended to be = read only by the individual or entity to whom it is addressed or by their d= esignee. If the reader of this message is not the intended recipient, you a= re on notice that any distribution of this message, in any form, is strictl= y prohibited. Please promptly notify the sender by reply e-mail or by tele= phone at 770-246-8600, and then delete or destroy all copies of the transmi= ssion.

--_000_6BD875C24FFE2A4E8D6EFC142C67836F03FF656FB5atlms1usmegat_--