From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atlmailgw1.ami.com (atlmailgw1.ami.com [63.147.10.40]) by mx.groups.io with SMTP id smtpd.web12.11807.1588949014255641804 for ; Fri, 08 May 2020 07:43:34 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: ami.com, ip: 63.147.10.40, mailfrom: oleksiyy@ami.com) X-AuditID: ac1060b2-0e1ff700000018d4-2e-5eb5701446b0 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 atlmailgw1.ami.com (Symantec Messaging Gateway) with SMTP id 78.2D.06356.41075BE5; Fri, 8 May 2020 10:43:32 -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; Fri, 8 May 2020 10:42:05 -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 v3 7/7] MdePkg: UEFI JSON Capsule Support Thread-Topic: [edk2-devel] [PATCH v3 7/7] MdePkg: UEFI JSON Capsule Support Thread-Index: AQHWJKOuhHQl7etgf0ahirvUPdb+3aid774AgABT1xA= Date: Fri, 8 May 2020 14:42:04 +0000 Message-ID: <6BD875C24FFE2A4E8D6EFC142C67836F03FFFF9C0F@atlms1.us.megatrends.com> References: <20200507191358.74904-1-oleksiyy@ami.com> <20200507191358.74904-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+NgFprFKsWRmVeSWpSXmKPExsWyRiBhhq5IwdY4g86nlha/js5js2ifMJvN YsW9DewWHR3/mCx2zX/C5MDqsf37BUaPxXteMgUwRTUw2iTm5eWXJJakKqSkFifbKgUUZZYl JlcqKWSm2CoZKikU5CQmp+am5pXYKiUWFKTmpSjZcSlgABugssw8hdS85PyUzLx0WyXPYH9d CwtTS11DJbuQjFSFzLy0/KLcxJLM/DyF5Py8EqDq1BSgqEJCN2fG9/m/WAo6vSomLJrH0sC4 ybqLkZNDQsBE4uXM74wgtpDALiaJj7uruxi5gOxDjBITJu5kBkmwCWhKvDn3ggXEFhGIlbh5 o48ZpIhZYCmjxImjF5lAEsICXhIX1/1ngijyllgyeyJ7FyMHkG0l8emTLUiYRUBFYv7JO2Al vAKBEk+b3jJCLNvCKLG3+TEbSIITaMHTd5/AihgFxCS+n1oDZjMLiEvcejKfCeJqAYkle84z Q9iiEi8f/2OFsBUlnn54wQ5RryOxYPcnNghbW2LZwtfMEIsFJU7OfMIygVF0FpKxs5C0zELS MgtJywJGllWMQoklObmJmTnp5YZ6ibmZesn5uZsYIQlj0w7GlovmhxiZOBiBocfBrCTCO7Fi S5wQb0piZVVqUX58UWlOavEhRidgSExkluIGxRAwyuONDQykRGEcQxMzE3Mjc0NLE3NjYyVx 3slr18QJCaQDk052ampBahHMECYOTqkGxhTJbQ0PVk3Mf3y0YnLsdOtvGneWLxeUWZe6RrbH +PB20SC1zx94rF+FaJnHXzllcWbmT+0DT8qeHeQ0qI1hXVfqt6vLqOjnbnkds7m9T8smTo6a /NPBeJ3FX+Nw3ezWmQ0dnKviD72d/HuFfGhKxfZpjZNLCu4ExRSsrds/dZpRRjSPd8zBT0os xRmJhlrMRcWJANJnh8wtAwAA Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Zhiguang. Comment is in Spec. See description of CapsuleId field right after declaration of EFI_CAPSULE= _RESULT_VARIABLE_JSON structure (p.280 of 2.8 ErrataB). Agree with second comment. Regards, Oleksiy. -----Original Message----- From: Liu, Zhiguang [mailto:zhiguang.liu@intel.com] Sent: Friday, May 08, 2020 1:39 AM To: devel@edk2.groups.io; Oleksiy Yakovlev Cc: Feng, Bob C; Gao, Liming; Kinney, Michael D; Felix Polyudov Subject: RE: [edk2-devel] [PATCH v3 7/7] MdePkg: UEFI JSON Capsule Support Hi Oleksiy, Add my comments inline. Thanks Zhiguang > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Oleksiy > Yakovlev > Sent: Friday, May 8, 2020 3:14 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 v3 7/7] MdePkg: UEFI JSON Capsule Support > > Added Guids and structures, that defines the work flow to perform capsul= e > 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/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 Reserved > + /// #define REDFISH_DEFINED_JSON_SCHEMA 0xF000000 > + /// The JSON payload shall conform to a Redfish-defined JSON schema, > see DMTF-Redfish > + /// Specification. > + /// Zhiguang: Where are these message from? I didn't find in UEFI spec. > + UINT32 CapsuleId; > + > + /// > + /// The length of Resp in bytes. > + /// > + UINT32 RespLength; > + > + /// > + /// Variable length buffer containing the replied JSON payload 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[]; > + /// Zhiguang: Please remove the upper comment symbols > + } 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 firmware > configuration data to EFI > +Configuration Tables and also for processing JSON payload capsule. > + > + > +Copyright (c) 2020, American Megatrends International LLC. All rights > reserved.
> +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 > preboot to runtime phase. The > +// addresses reported in these table entries identified by > EFI_JSON_CONFIG_DATA_TABLE_GUID and > +// EFI_JSON_CAPSULE_RESULT_TABLE_GUID will be referenced as virtual > 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, 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,= in > bytes. > + /// > + UINT32 PayloadLength; > + > + /// > + /// Variable length buffer containing the JSON payload that should be > parsed and applied to the system. The > + /// definition of the JSON schema used in the payload is beyond the s= cope > 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= one > group of configuration data within > + /// current system. The definition of the JSON schema used in this pa= yload > is beyond the scope of this specification. > + /// > + UINT8 ConfigData[]; > +} 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 > 0x0000000000000008 > #define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED > 0x0000000000000010 > #define EFI_OS_INDICATIONS_START_PLATFORM_RECOVERY > 0x0000000000000040 > +#define EFI_OS_INDICATIONS_JSON_CONFIG_DATA_REFRESH > 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 =3D { 0x18633bfc, 0x1735, 0x4217, { 0x= 8a, 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, {= 0x91, > 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 > proprietary to American Megatrends (AMI). This communication is intende= d > to be read only by the individual or entity to whom it is addressed or b= y their > designee. If the reader of this message is not the intended recipient, y= ou are > 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 > telephone at 770-246-8600, and then delete or destroy all copies of the > transmission. > >=20 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.