Re: [PATCH v2 07/11] OvmfPkg/QemuKernelLoaderFsDxe: call VerifyBlob after fetch from fw_cfg
Brijesh Singh
On 7/6/21 3:54 AM, Dov Murik wrote:
In QemuKernelLoaderFsDxeEntrypoint we use FetchBlob to read the contentThe patch itself is okay. Just curious, do we also need to add a verification for the QEMU FW cfg file ?
|
|
Re: [PATCH v2 06/11] ArmVirtPkg: add NullBlobVerifierLib to DSC
Brijesh Singh
On 7/6/21 3:54 AM, Dov Murik wrote:
This prepares the ground for calling VerifyBlob() inReviewed-by: Brijesh Singh <brijesh.singh@...> thanks
|
|
Event: TianoCore Design Meeting - APAC/NAMO - 07/23/2021
#cal-reminder
devel@edk2.groups.io Calendar <noreply@...>
Reminder: TianoCore Design Meeting - APAC/NAMO When: Where: Organizer: Ray Ni ray.ni@... Description: TOPIC
For more info, see here: https://www.tianocore.org/design-meeting/ Microsoft Teams meetingJoin on your computer or mobile appClick here to join the meeting Join with a video conferencing deviceteams@... Video Conference ID: 119 715 416 0
|
|
Re: OpenProtocol() giving me EFI_INVALID_PARAMETER
Ethin Probst
Tried this and I still get that invalid handle. Definitely confused
toggle quoted messageShow quoted text
where that's coming from.
On 7/17/21, Andrew Fish <afish@...> wrote:
If I `OvmfPkg/builds.sh qemu -usb -device usb-audio -device qemu-xhci` I see --
Signed, Ethin D. Probst
|
|
Re: [PATCH v2 05/11] OvmfPkg: add NullBlobVerifierLib to DSC
Brijesh Singh
On 7/6/21 3:54 AM, Dov Murik wrote:
This prepares the ground for calling VerifyBlob() inReviewed-by: Brijesh Singh <brijesh.singh@...> thanks
|
|
Re: [PATCH v2 04/11] OvmfPkg: add library class BlobVerifierLib with null implementation
Brijesh Singh
On 7/6/21 3:54 AM, Dov Murik wrote:
BlobVerifierLib will be used to verify blobs fetching them from QEMU'sReviewed-by: Brijesh Singh <brijesh.singh@...> thanks
|
|
Re: OpenProtocol() giving me EFI_INVALID_PARAMETER
If I `OvmfPkg/builds.sh qemu -usb -device usb-audio -device qemu-xhci` I see 2 USB handle?
toggle quoted messageShow quoted text
When you open EXCLUSIVE you are kicking other people off the handles. I’m not sure that is a good idea for you to do that to every USB handle in the system. If there was a handle that represented a USB to USB bridge seems like you could kick all the children off…. So when you are probing try using GET_PROTOCOL, and only use EXCLUSIVE after you find the device you want to manage. Thanks, Andrew Fish
|
|
Re: OpenProtocol() giving me EFI_INVALID_PARAMETER
Ethin Probst
Thanks, Andrew. So it appears as though only a single handle exists
toggle quoted messageShow quoted text
("AF: DevicePath(..)/Pci(0x1D,0x0)/USB(0x0,0x0)) USBIO") but my app is getting two handles, one of which doesn't actually exist. I still am unsure why though. Getting verbose info about handle AF yields an interface with class 0x01, subclass 0x01, and protocol 0x04, so this appears to match the USB audio control interface. However, no audio streaming device is available, as I would expect. Attempting to set the interface to `1` also fails on the UAC device (though the USB specification does note that this is not necessarily an error and may just indicate that that interface setting is not supported so my app currently just continues on regardless). I am running with qemu args `-usb -device usb-audio,... -audiodev ...`. I've tried with `-device qemu-xhci ...` but I get the same result.
On 7/17/21, Andrew Fish <afish@...> wrote:
On Jul 17, 2021, at 10:06 AM, Ethin Probst <harlydavidsen@...>Ethin, --
Signed, Ethin D. Probst
|
|
Re: OpenProtocol() giving me EFI_INVALID_PARAMETER
Ethin, The UEFI Shell `dh` command UI uses handle numbers from 0 - N as hex digits. You have use these abstract values with the `dh` command. For example: use `dh -v A1` to see the actual handle value for A1 (7EBA9598). You can search handles that contain a specific protocol... Shell> dh -p PciIo Handle dump by protocol 'PCIIO' A1: PCIIO DevicePath(PciRoot(0x0)/Pci(0x0,0x0)) A2: PCIIO DevicePath(PciRoot(0x0)/Pci(0x1,0x0)) A3: PCIIO DevicePath(PciRoot(0x0)/Pci(0x2,0x0)) A4: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x0,0x0)) A5: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x1,0x0)) A6: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x2,0x0)) A7: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x3,0x0)) A8: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x4,0x0)) A9: PCIIO DevicePath(..0)/Pci(0x2,0x0)/Pci(0x5,0x0)) AA: PCIIO DevicePath(PciRoot(0x0)/Pci(0x1E,0x0)) AB: DiskIO BlockIO FA920010-6785-4941-B6EC-498C579F160A PCIIO DevicePath(..)/Pci(0x1E,0x0)/Pci(0x0,0x0)) AC: ISAACPI PCIIO DevicePath(PciRoot(0x0)/Pci(0x1F,0x0)) AD: PCIIO DevicePath(PciRoot(0x0)/Pci(0x1F,0x3)) Shell> dh -v A1 A1: 7EBA9598 PCIIO(7EBA8AA8) Segment #.....: 00 Bus #.........: 00 Device #......: 00 Function #....: 00 ROM Size......: 0 ROM Location..: 00000000 Vendor ID.....: 8086 Device ID.....: 29C0 Class Code....: 00 00 06 Configuration Header : 8680C029070000000000000600000000 00000000000000000000000000000000 000000000000000000000000F41A0011 000000000000000000000000FF000000 DevicePath(7EBA9E18) PciRoot(0x0)/Pci(0x0,0x0) Andrew Fish
|
|
Re: OpenProtocol() giving me EFI_INVALID_PARAMETER
Ethin Probst
Okay, so I just tried dh -v 7EDE4C18 (that was the handle that I'm
toggle quoted messageShow quoted text
getting from `HandleBuffer()`) and it says "dh: Handle - '7EDE4C18' not found". So I'm definitely confused because that's what `HandleBuffer()` is getting me. Should I pre-allocate the buffer?
On 7/17/21, Ethin Probst <harlydavidsen@...> wrote:
I mean, possible... The code I'm using to initialize the handle buffer is --
Signed, Ethin D. Probst
|
|
Re: OpenProtocol() giving me EFI_INVALID_PARAMETER
Ethin Probst
I mean, possible... The code I'm using to initialize the handle buffer is this:
toggle quoted messageShow quoted text
```C EFI_STATUS EFIAPI UefiMain(IN EFI_HANDLE imageHandle, IN EFI_SYSTEM_TABLE* st) { Print(L"Attempting to find USB IO protocol\n"); UINTN numHandles = 0; UINTN i = 0; UINT32 UsbStatus = 0; EFI_HANDLE* handles = NULL; EFI_USB_IO_PROTOCOL* UsbIo = NULL; EFI_STATUS status = st->BootServices->LocateHandleBuffer(ByProtocol, &gEfiUsbIoProtocolGuid, NULL, &numHandles, &handles); if (EFI_ERROR(status)) { Print(L"Cannot find any handles for USB devices, reason: %r\n", status); return EFI_ABORTED; } Print(L"Found %d USB devices; enumerating\n", numHandles); for (; i < numHandles; ++i) { Print(L"Trying to open handle %d (%x)... ", i, handles[i]); status = st->BootServices->OpenProtocol(handles[i], &gEfiUsbIoProtocolGuid, (void**)&UsbIo, imageHandle, NULL, EFI_OPEN_PROTOCOL_EXCLUSIVE); if (EFI_ERROR(status)) { Print(L"%r, skipping\n", status); continue; } // ... ``` I've done my best to follow SEI secure C coding standards, like initializing all variables, regardless of type -- e.g. initializing pointers to 0/NULL. But I will definitely try that idea.
On 7/17/21, Andrew Fish <afish@...> wrote:
On Jul 17, 2021, at 9:41 AM, Ethin Probst <harlydavidsen@...>How are you constructing handle[]? Could it have gotten stale? You could --
Signed, Ethin D. Probst
|
|
Re: OpenProtocol() giving me EFI_INVALID_PARAMETER
On Jul 17, 2021, at 9:41 AM, Ethin Probst <harlydavidsen@...> wrote:How are you constructing handle[]? Could it have gotten stale? You could print out the value of handle[I] on the failure. The contents of a handle are not defined, but the current implementation is a pointer to an IHANDLE internal data structure in the DXE Core. If you are at the UEFI Shell and you `dh -v <handleNum> it will show the <handleNum> and the value. Shell> dh -v 98 98: 6d5CF18 …. I think you can `dh -p UsbIo’ to get the list of the UsbIo handles. So you can poke around and see what is happening on that handle. I guess the handle[] array could be getting corrupted? So you could check for that? Thanks, Andrew Fish Is giving me EFI_INVALID_PARAMETER and I don’t know why. I don't think
|
|
OpenProtocol() giving me EFI_INVALID_PARAMETER
Ethin Probst
Hey all,
So my UsbAudio.efi app has hit a bit of a roadblock. This code: ```C status = st->BootServices->OpenProtocol(handles[i], &gEfiUsbIoProtocolGuid, (void**)&UsbIo, imageHandle, NULL, EFI_OPEN_PROTOCOL_EXCLUSIVE); if (EFI_ERROR(status)) { Print(L"%r, skipping\n", status); continue; } ``` Is giving me EFI_INVALID_PARAMETER and I don't know why. I don't think I'm violating any of its constraints, according to the specification, and I haven't touched this code since it was written. It also happens irregularly: sometimes it happens on the USB audio streaming device, or if I have a device plugged in it might happen on that device, you get the idea. But it doesn't consistently fail. Does anybody have any idea what's going on? -- Signed, Ethin D. Probst
|
|
Re: [PATCH v2 03/11] OvmfPkg: PlatformBootManagerLibGrub: Allow executing kernel via fw_cfg
Brijesh Singh
On 7/6/21 3:54 AM, Dov Murik wrote:
From: James Bottomley <jejb@...>Reviewed-by: Brijesh Singh <brijesh.singh@...> thanks
|
|
Re: [PATCH v2 02/11] OvmfPkg/AmdSev: use GenericQemuLoadImageLib in AmdSev builds
Brijesh Singh
On 7/6/21 3:54 AM, Dov Murik wrote:
Newer kernels support efistub and therefore don't need all the legacyReviewed-by: Brijesh Singh <brijesh.singh@...> thanks
|
|
Re: [PATCH v2 01/11] OvmfPkg/AmdSev/SecretDxe: fix header comment to generic naming
Brijesh Singh
On 7/6/21 3:54 AM, Dov Murik wrote:
From: James Bottomley <jejb@...>Reviewed-by: Brijesh Singh <brijesh.singh@...> thanks
|
|
[staging/edk2-redfish-client PATCH 2/2] edk2: Update Maintainers.txt
Add maintainer and reviewer to RedfishClinetPkg.
Signed-off-by: Abner Chang <abner.chang@...> Cc: Nickle Wang <nickle.wang@...> Cc: Liming Gao <gaoliming@...> Cc: Andrew Fish <afish@...> Cc: Leif Lindholm <leif@...> Cc: Michael D Kinney <michael.d.kinney@...> --- Maintainers.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Maintainers.txt b/Maintainers.txt index e9dda5c5ca..55068c9140 100644 --- a/Maintainers.txt +++ b/Maintainers.txt @@ -519,6 +519,11 @@ F: RedfishPkg/ M: Abner Chang <abner.chang@...> R: Nickle Wang <nickle.wang@...> +RedfishClientPkg: Redfish Client related modules +F: RedfishClientPkg/ +M: Abner Chang <abner.chang@...> +R: Nickle Wang <nickle.wang@...> + SecurityPkg F: SecurityPkg/ W: https://github.com/tianocore/tianocore.github.io/wiki/SecurityPkg -- 2.17.1
|
|
[staging/edk2-redfish-client PATCH 1/2] RedfishClientPkg: Initial commit
Initial commit of architecture diagrams and Readme.md
Signed-off-by: Abner Chang <abner.chang@...> Cc: Nickle Wang <nickle.wang@...> Cc: Liming Gao <gaoliming@...> Cc: Andrew Fish <afish@...> Cc: Leif Lindholm <leif@...> Cc: Michael D Kinney <michael.d.kinney@...> --- RedfishClientPkg/Readme.md | 180 +++++ .../Media/RedfishClientDriverStack.svg | 680 ++++++++++++++++++ 2 files changed, 860 insertions(+) create mode 100644 RedfishClientPkg/Readme.md create mode 100644 RedfishClientPkg/Documents/Media/RedfishClientDriverStack.svg diff --git a/RedfishClientPkg/Readme.md b/RedfishClientPkg/Readme.md new file mode 100644 index 0000000000..ce8c2f9409 --- /dev/null +++ b/RedfishClientPkg/Readme.md @@ -0,0 +1,180 @@ +# UEFI Redfish Client EDK2 Implementation + +## Introduction +UEFI Redfish Client EDK2 solution is implemented base on +[*EDK2 Redfish Foundation*](https://github.com/tianocore/edk2/blob/master/RedfishPkg/Readme.md), +the implementation utilizes the EFI protocols provided by EDK2 Redfish +Foundation to communicate with the Redfish service for creating, consuming, and +updating the Redfish properties which are managed by firmware. This solution +requests the instance of **EFI REST EX Protocol** through EFI Redfish Discover +Protocol and interacts with Redfish service using **EFI REST EX Protocol** later +on. The essential part of this implementation is to map the EDK2 HII options to +the corresponding Redfish properties that are already defined in the standard +Redfish schemas published by +[*DMTF Redfish working group*](https://www.dmtf.org/standards/redfish). +The advantage of this design is to strengthen the interoperability among the +servers produced by different OEMs when configuring the platform through Redfish +service. Using the properties defined in Redfish standard schema for configuring +platform reduces the overhead of Redfish client tools to have different +implementations in order to compliant with OEM servers. The solution also +reduces OEM-defined proprietary BIOS Attributes that lead to the divergence of +platform configuration namings in Redfish BIOS Attribute Registry, however, +those different namings refer to the same platform functionality. + +## The Scope of UEFI Redfish Client EDK2 Implementation +- Platform Configurable settings + +This is the first stage of UEFI Redfish Client EDK2 Implementation. Associate +Redfish property with HII option. + +- Provisioning of Firmware Managed Platform Redfish Resource + +The current design of UEFI Redfish Client EDK2 Implementation can already +support the provisioning of firmware-owned platform Redfish resource, however, +this requires addtional support on edk2 HII. Therefore, provisioning of +firmware managed platform Redfish resource would be the second stage. + +Below are the block diagrams of UEFI Redfish Client EDK2 Implementation. + +## <a name="[0]">EDK2 Redfish Client Implementation Diagrams</a> + + +## EFI EDK2 Redfish Client Framework +The functionality of each block in the diagrams are described in belwo sections, + +### EDK2 Redfish Foundation ***[[1]](#[0])*** +EDK2 Redfish Redfish Foundation provides the facilities of communicating with +Redfish service. Such as the discovery of Redfish service, the credential to access +Redfish service, *EFI REST EX Protocol* instance which is the transport layer to +Redfish service, and so on. Please refer to +[*EDK2 Redfish Foundation*](https://github.com/tianocore/edk2/blob/master/RedfishPkg/Readme.md). + +### Redfish Profile Simulator ***[[2]](#[0])*** +Redfish Profile Simulator is an +[*open source project*](https://github.com/DMTF/Redfish-Profile-Simulator) on DMTF +GitHub, which simulates the HTTP request methods (POST, PATCH, PUT, GET) on Redfish +resource maintained by Redfish Profile Simulator. EDK2 open source uses this +simulator for the use case when Redfish service has not been set up on the platform, +or for the quick Redfish firmware feature development. We clone this project under +RedfishClientPkg and maintain it by edk2 because this project has currently been +using and updating rarely. That is easier for edk2 to add features to the simulator +or modify the simulator to align with edk2 requirement on Redfish service, such as +ETAG and HTTP POST support. <br> +Another open source project of Redfish simulator is +[*Redfish Interface Emulator*](https://github.com/DMTF/Redfish-Interface-Emulator), +however, we don't pay much attention to this project because we have been dedicating +to Redfish Profile Simulator since we started the UEFI Redfish EDK2 project. + +### EDK2 Redfish JSON Schema to C Structure Convertor ***[[3]](#[0])*** +This is the script auto-generated EDK2 drivers and libraries that provide the Redfish +schema naming based JSON to C structure and vise versa converters. C structure is +another representation of Redfish properties other than JSON and CSDL(XML). The higher +layer Redfish client application can deal with C structure instead of using JSON +library to manipulate Redfish properties. The script +[*Redfish Schema C Struct Generator*](https://github.com/DMTF/Redfish-Schema-C-Struct-Generator) +is still a private project on DMTF GitHub. Below is the reference of script +auto-generated [*Redfish JSON C Struct Converter Lib*](https://github.com/changab/Redfish-JSON-C-Struct-Converter-Lib) +libraries. The converters generated by the script are followed +**EFI REST JSON Structure Protocol** defined in UEFI spec 2.8, section 29.7.3. + +### EDK2 Redfish Non-Collection ***[[4]](#[0])*** and Collection ***[[5]](#[0])*** Feature Drivers +EDK2 Redfish feature driver is an intermediary driver that sits between **JSON Schema +to C Structure converters** and **EFI Platform Configuration to Redfish Protocol**. The +Redfish feature driver gets and sets the platform configuration and incorporates it with +Redfish JSON schema C structure to manipulate Redfish JSON resources. Then applies the +settings from Redfish service to platform configurations, or vise versa to update platform +configurations to Redfish service. Both EDK2 Redfish Non-Collection and Collection Feature +drivers are script auto-generated base on Redfish schema naming. The EDK2 Redfish +Non-Collection feature driver manages the resource of specific Resdifsh resource type, +while the EDK2 Redfish Collection feature driver manages the members which have the same +resource type in collection resource (e.g the ComputerSystem resource and +ComputerSystemCollection resource). + +### EFI Platform Config to Redfish Protocol ***[[6]](#[0])*** +EFI Platform Config to Redfish Protocol is an abstract driver that abstracts the platform +configuration format and storage from EDK2 Redfish Feature driver. This protocol provides +the interfaces to get and set platform configuration that format and the storage to store +configuration are agnostic to the feature driver. The platform can provide its own EFI +Platform Config to Redfish driver to access platform-specific configuration format and +storage. On EDK2 open source, EFI Platform Config to Redfish Protocol accesses the +platform configuration in EDK2 HII defined format. + +Below is the prototype of **EFI_PLATFORM_CONFIG_TO_REDFISH_PROTOCOL**, + +```C +struct _EDKII_PLATFORM_CONFIG_TO_REDFISH_PROTOCOL { + EDKII_REDFISH_PLATFORM_CONFIG_GET_VALUE GetValue; + EDKII_REDFISH_PLATFORM_CONFIG_SET_VALUE SetValue; + EDKII_REDFISH_PLATFORM_CONFIG_GET_CONFIG_LANG GetConfigureLang; + EDKII_REDFISH_PLATFORM_CONFIG_GET_SUPPORTED_SCHEMA GetSupportedSchema; +}; +``` + +### Other instances of EFI Platform Config to Redfish Protocol ***[[7]](#[0])*** +For those Non-EDK2 HII-based platform configuration formats, the driver instance can +provide its own implementation to get or set the platform configurations. + +### EDK2 HII VFR Form ***[[8]](#[0])*** +According to **UEFI spec 2.9 section 35.6 Form Browser Protocol**, +**EFI_HII_REST_STYLE_FORMSET_GUID** is used on HII form to indicate that HII options +declared in this form intend to interact with the REST architectural style. On edk2 +open source, the REST architectural style refers to the Redfish service. Besides +**EFI_HII_REST_STYLE_FORMSET_GUID** is defined in the form scope, +**EFI_IFR_FLAG_REST_STYLE** can be assigned to the HII options that indicate those +options intend to interact with the REST service. + +### EDK2 HII UNI file ***[[9]](#[0])*** +x-uefi-redfish Configure Language is used in UNI file to associate HII option with +the particular Redfish property. The Hii options interact with EDK2 Redfish Feature +driver if the string of HII option is assigned with x-uefi-redfish Language as +in below, + +```C +x-uefi-redfish-$(NAMESPACE) +where $(NAMESPACE) is the combination of Redfish ResourceTypeName and schema version. +``` +For example, if the HII option is mapped to the property in Processor.v1_0_0. +The x-uefi-redfish configure language is declared as below, +```C +x-uefi-redfish-Processor.v1_0_0 +``` +#### x-uefi-redfish Configure Language format: +- The string declared with x-uefi-redfish configure language is a path to the property +in Redfish resource +- The root of path is the Redfish resource type indicated in x-uefi-redfish configure +language +- The path is relative to root of Redfish resource type, not related to Redfish service +- root. + +#### Examples, +```C +Properties: + +#string STR_BOOT_SOURCE_OVERRIDE_ENABLED_PROMPT #language x_uefi_redfish_ComputerSystem.v1_0_0 "/Boot/BootSourceOverrideEnabled" +#string STR_BOOT_SOURCE_OVERRIDE_MODE_PROMPT #language x_uefi_redfish_ComputerSystem.v1_0_0 "/Boot/BootSourceOverrideMode" +#string STR_BOOT_SOURCE_OVERRIDE_TARGET_PROMPT #language x_uefi_redfish_ComputerSystem.v1_0_0 "/Boot/BootSourceOverrideTarget" +``` +```C +Properties in array object [NUM]: + +#string STR_BOOT_ORDER_1_PROMPT #language x_uefi_redfish_ComputerSystem.v1_11_0 "/Boot/BootOrder/[1]/Boot0001" +#string STR_BOOT_ORDER_2_PROMPT #language x_uefi_redfish_ComputerSystem.v1_11_0 "/Boot/BootOrder/[2]/Boot0002" +#string STR_BOOT_ORDER_3_PROMPT #language x_uefi_redfish_ComputerSystem.v1_11_0 "/Boot/BootOrder/[3]/Boot0003" +``` +```C +Properties in collection object {NUM}: + +#string STR_MEMORY_1_BASE_MODULE_TYPE_PROMPT #language x_uefi_redfish_Memory.v1_7_1 "/Memory/{1}/BaseModuleType" +#string STR_MEMORY_2_BASE_MODULE_TYPE_PROMPT #language x_uefi_redfish_Memory.v1_7_1 "/Memory/{2}/BaseModuleType" +#string STR_MEMORY_3_BASE_MODULE_TYPE_PROMPT #language x_uefi_redfish_Memory.v1_7_1 "/Memory/{3}/BaseModuleType" +``` + +### EDK2 Build Tool ***[[10]](#[0])*** +EDK2 Build is responsible to pull the necessary EDK2 Redfish JSON Schema to C Structure +Convertors and EDK2 Redfish Feature drivers into edk2 build process according to the +x-uefi-Redfish config language used in the HII VFR forms. + +## The Contributors +Chang, Abner <abner.chang@...>\ +Wang, Nickle <nickle.wang@...>\ +Chen, Aaron <aaron.chen@...> diff --git a/RedfishClientPkg/Documents/Media/RedfishClientDriverStack.svg b/RedfishClientPkg/Documents/Media/RedfishClientDriverStack.svg new file mode 100644 index 0000000000..eb59eb9992 --- /dev/null +++ b/RedfishClientPkg/Documents/Media/RedfishClientDriverStack.svg @@ -0,0 +1,680 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by Microsoft Visio, SVG Export RedfishClientDriverStack.svg Page-2 --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" + width="12.1281in" height="9.93872in" viewBox="0 0 873.222 715.588" xml:space="preserve" color-interpolation-filters="sRGB" + class="st68"> + <style type="text/css"> + <![CDATA[ + .st1 {fill:#ffffff;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st2 {fill:#ebf1df;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st3 {fill:#ff1a1a;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st4 {fill:#ffffff;font-family:Calibri;font-size:1.00001em;font-weight:bold} + .st5 {font-size:1em} + .st6 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st7 {fill:#000000;font-family:Calibri;font-size:1.00001em;font-weight:bold} + .st8 {fill:#dbeef3;stroke:#d8d8d8;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st9 {fill:#ffffff;font-family:Calibri;font-size:1.08334em;font-weight:bold} + .st10 {visibility:visible} + .st11 {fill:none;filter:url(#filter_3.3333334922791);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.4} + .st12 {fill:none;stroke:#bfbfbf;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st13 {fill:#000000;font-family:Arial;font-size:1.99999em;font-style:italic;font-weight:bold} + .st14 {marker-end:url(#mrkr2-45);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.9} + .st15 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.42986425339367} + .st16 {fill:#000000;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st17 {fill:#ffffff;font-family:Arial;font-size:1.33333em;font-weight:bold} + .st18 {fill:#ffffff;stroke:#595959;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st19 {fill:#7f7f7f;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st20 {fill:#ffffff;font-family:Calibri;font-size:1.08334em} + .st21 {fill:#000000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st22 {fill:#000000;font-family:Calibri;font-size:0.833336em;font-weight:bold} + .st23 {marker-start:url(#mrkr10-112);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25} + .st24 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.40983606557377} + .st25 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} + .st26 {fill:#000000;fill-opacity:0.4;filter:url(#filter_3.3333334922791);stroke:#000000;stroke-dasharray:10.5,7.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.4} + .st27 {fill:#0070c0;stroke:#003f6c;stroke-dasharray:10.5,7.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st28 {fill:#000000;font-family:Calibri;font-size:1.00001em;font-style:italic;font-weight:bold} + .st29 {fill:#ffffff;stroke:#000000;stroke-dasharray:1.68,1.2;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st30 {fill:#000000;font-family:Calibri;font-size:0.833336em} + .st31 {fill:#ffffff;stroke:#000000;stroke-dasharray:3.5,2.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5} + .st32 {stroke:#7f7f7f;stroke-linecap:round;stroke-linejoin:round;stroke-width:4.5} + .st33 {fill:#000000;fill-opacity:0.38;filter:url(#filter_3.3333334922791);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.38} + .st34 {fill:#000000;fill-opacity:0.38;stroke:#000000;stroke-opacity:0.38;stroke-width:0.22935779816514} + .st35 {fill:#f2f2f2;stroke:#7f7f7f;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st36 {fill:#7f7f7f;fill-opacity:1;stroke:#7f7f7f;stroke-opacity:1;stroke-width:0.22935779816514} + .st37 {fill:#d8d8d8;stroke:#7f7f7f;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st38 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st39 {fill:#000000;fill-opacity:0.4;filter:url(#filter_3.3333334922791);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.4} + .st40 {fill:#0070c0;stroke:#003f6c;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st41 {fill:#ffffff;stroke:#000000;stroke-dasharray:9.5,2.5,3.5,2.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5} + .st42 {fill:#ffffff;stroke:#000000;stroke-dasharray:3.5,2.5,3.5,2.5,0,2.5;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.5} + .st43 {marker-end:url(#mrkr4-212);marker-start:url(#mrkr4-210);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.25} + .st44 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.47169811320755} + .st45 {fill:#ffffff;stroke:#7f7f7f;stroke-linecap:round;stroke-linejoin:round;stroke-width:1} + .st46 {fill:#000000;font-family:Calibri;font-size:1.16666em;font-style:italic;font-weight:bold} + .st47 {font-family:Arial;font-size:0.571431em;font-style:normal;font-weight:normal} + .st48 {font-family:Arial;font-size:0.571431em;font-style:normal} + .st49 {fill:#ea700d;font-family:Arial;font-size:0.571431em;font-style:normal} + .st50 {fill:#ffffff;stroke:#7f7f7f;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st51 {fill:#d8d8d8;font-family:Calibri;font-size:0.833336em;font-style:italic;font-weight:bold} + .st52 {font-size:1.20001em;font-style:normal;font-weight:normal} + .st53 {font-size:1em;font-style:normal;font-weight:normal} + .st54 {fill:#f59d56;font-size:1em;font-style:normal;font-weight:normal} + .st55 {marker-end:url(#mrkr2-350);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:2} + .st56 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.44247787610619} + .st57 {marker-end:url(#mrkr2-383);marker-start:url(#mrkr2-381);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st58 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.22935779816514} + .st59 {fill:#000000;font-family:Calibri;font-size:0.75em;font-style:italic;font-weight:bold} + .st60 {fill:#000000;font-family:Calibri;font-size:0.75em;font-weight:bold} + .st61 {fill:#0070c0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st62 {fill:#595959;stroke:none;stroke-linecap:butt;stroke-width:0.75} + .st63 {marker-start:url(#mrkr4-405);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25} + .st64 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.3315649867374} + .st65 {marker-end:url(#mrkr4-411);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25} + .st66 {marker-end:url(#mrkr10-430);marker-start:url(#mrkr10-112);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25} + .st67 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25} + .st68 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs id="Markers"> + <g id="lend2"> + <path d="M 1 1 L 0 0 L 1 -1 L 1 1 " style="stroke:none"/> + </g> + <marker id="mrkr2-45" class="st15" refX="-2.1368421052632" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend2" transform="scale(-2.3263157894737,-2.3263157894737) "/> + </marker> + <g id="lend10"> + <path + d="M 0 0.75 C -0.414214 0.75 -0.75 0.414214 -0.75 0 -0.75 -0.414214 -0.414214 -0.75 0 -0.75 0.414214 -0.75 0.75 -0.414214 0.75 0 0.75 0.414214 0.414214 0.75 0 0.75 Z " + style="stroke:none"/> + </g> + <marker id="mrkr10-112" class="st24" refX="1.542" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend10" transform="scale(2.44) "/> + </marker> + <g id="lend42"> + <path + d="M 0 0.75 C -0.414214 0.75 -0.75 0.414214 -0.75 0 -0.75 -0.414214 -0.414214 -0.75 0 -0.75 0.414214 -0.75 0.75 -0.414214 0.75 0 0.75 0.414214 0.414214 0.75 0 0.75 Z " + style="stroke:none"/> + </g> + <marker id="mrkr42-163" class="st34" refX="3.27" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend42" transform="scale(4.36) "/> + </marker> + <marker id="mrkr42-167" class="st36" refX="3.27" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend42" transform="scale(4.36) "/> + </marker> + <g id="lend4"> + <path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"/> + </g> + <marker id="mrkr4-210" class="st44" refX="4.08" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend4" transform="scale(2.12) "/> + </marker> + <marker id="mrkr4-212" class="st44" refX="-4.08" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend4" transform="scale(-2.12,-2.12) "/> + </marker> + <marker id="mrkr2-350" class="st56" refX="-2.08" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend2" transform="scale(-2.26,-2.26) "/> + </marker> + <marker id="mrkr2-381" class="st58" refX="3.88" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend2" transform="scale(4.36) "/> + </marker> + <marker id="mrkr2-383" class="st58" refX="-3.88" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend2" transform="scale(-4.36,-4.36) "/> + </marker> + <marker id="mrkr4-405" class="st64" refX="5.744" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend4" transform="scale(3.016) "/> + </marker> + <marker id="mrkr4-411" class="st64" refX="-6.032" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend4" transform="scale(-3.016,-3.016) "/> + </marker> + <marker id="mrkr10-430" class="st24" refX="-1.542" orient="auto" markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend10" transform="scale(-2.44,-2.44) "/> + </marker> + </defs> + <defs id="Filters"> + <filter id="filter_3.3333334922791"> + <feGaussianBlur stdDeviation="3.3333334922791"/> + </filter> + </defs> + <g> + <title>VBackground-1</title> + <g id="shape1-1"> + <title>Solid</title> + <rect x="0" y="0" width="873.222" height="715.588" class="st1"/> + </g> + </g> + <g> + <title>Page-2</title> + <g id="shape52-3" transform="translate(336.222,-197.713)"> + <title>Rectangle.52</title> + <rect x="0" y="598.588" width="495" height="117" class="st2"/> + </g> + <g id="group5-5" transform="translate(772.722,-60.4625)"> + <title>Can</title> + <desc>Redfish Service</desc> + <g id="shape6-6"> + <title>Sheet.6</title> + <path d="M0 704.34 A26.4375 11.25 -180 1 0 52.88 704.34 L52.88 663.84 L0 663.84 L0 704.34 Z" class="st3"/> + </g> + <g id="shape5-8"> + <ellipse cx="26.4375" cy="663.838" rx="26.4375" ry="11.25" class="st3"/> + <text x="7.83" y="693.59" class="st4">Redfish <tspan x="8.6" dy="1.2em" class="st5">Service</tspan></text> </g> + </g> + <g id="shape8-12" transform="translate(746.847,-24.4625)"> + <title>Sheet.8</title> + <desc>Redfish Profile Simulator On Network</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="17.62" y="693.09" class="st7">Redfish Profile <tspan x="21.08" dy="1em" class="st5">Simulator On </tspan><tspan + x="32.24" dy="1em" class="st5">Network</tspan></text> </g> + <g id="shape10-17" transform="translate(408.222,-82.9625)"> + <title>Sheet.10</title> + <desc>EFI REST EX</desc> + <rect x="0" y="679.588" width="261" height="36" class="st8"/> + <text x="99.8" y="700.84" class="st9">EFI REST EX </text> </g> + <g id="shape12-20" transform="translate(57.2224,-197.713)"> + <title>Rectangle</title> + <rect x="0" y="598.588" width="234" height="117" class="st2"/> + </g> + <g id="shape13-22" transform="translate(30.2224,-24.4625)"> + <title>Rounded Rectangle.76</title> + <g id="shadow13-23" transform="matrix(1.02,0,0,1.02,-6.84,-13.2318)" class="st10"> + <path d="M9 715.59 L675 715.59 A8.99985 8.99985 -180 0 0 684 706.59 L684 616.59 A8.99985 8.99985 -180 0 0 675 607.59 + L9 607.59 A8.99985 8.99985 -180 0 0 0 616.59 L0 706.59 A8.99985 8.99985 -180 0 0 9 715.59 Z" + class="st11"/> + </g> + <path d="M9 715.59 L675 715.59 A8.99985 8.99985 -180 0 0 684 706.59 L684 616.59 A8.99985 8.99985 -180 0 0 675 607.59 + L9 607.59 A8.99985 8.99985 -180 0 0 0 616.59 L0 706.59 A8.99985 8.99985 -180 0 0 9 715.59 Z" class="st12"/> + </g> + <g id="shape16-27" transform="translate(75.2224,-82.9625)"> + <title>Sheet.16</title> + <desc>EFI REST JSON to C Structure</desc> + <rect x="0" y="679.588" width="261" height="36" class="st8"/> + <text x="53.89" y="700.84" class="st9">EFI REST JSON to C Structure</text> </g> + <g id="shape17-30" transform="translate(408.222,-37.9625)"> + <title>Sheet.17</title> + <desc>EFI Network Stack</desc> + <rect x="0" y="679.588" width="261" height="36" class="st8"/> + <text x="81.72" y="700.84" class="st9">EFI Network Stack</text> </g> + <g id="shape18-33" transform="translate(75.2224,-37.9625)"> + <title>Sheet.18</title> + <desc>EFI Redfish Discover Protocl</desc> + <rect x="0" y="679.588" width="261" height="36" class="st8"/> + <text x="55.56" y="700.84" class="st9">EFI Redfish Discover Protocl</text> </g> + <g id="shape19-36" transform="translate(291.222,-51.4625)"> + <title>Sheet.19</title> + <desc>EDKII Redfish Foundation</desc> + <rect x="0" y="670.588" width="184" height="45" class="st6"/> + <text x="12.66" y="685.89" class="st13">EDKII Redfish <tspan x="26.69" dy="1.2em" class="st5">Foundation</tspan></text> </g> + <g id="shape20-40" transform="translate(904.308,1335.5) rotate(-19.179) scale(1,-1)"> + <title>Curve connect 1</title> + <path d="M0 715.59 A42.4531 42.4531 0 0 1 54.79 715.59 A42.4531 42.4531 -180 0 0 106.06 718.26 L106.35 718.04" + class="st14"/> + </g> + <g id="shape21-46" transform="translate(18.9724,-139.213)"> + <title>Sheet.21</title> + <desc>EDKII Redfish Client</desc> + <rect x="0" y="211.588" width="24.75" height="504" class="st16"/> + <text x="-10.85" y="-540.93" writing-mode="tb-rl" transform="rotate(180)" class="st17">EDKII Redfish Client</text> </g> + <g id="shape24-49" transform="translate(111.222,-253.963)"> + <title>Sheet.24</title> + <rect x="0" y="670.588" width="153" height="45" class="st18"/> + </g> + <g id="shape25-51" transform="translate(84.2224,-240.463)"> + <title>Sheet.25</title> + <rect x="0" y="670.588" width="153" height="45" class="st18"/> + </g> + <g id="shape26-53" transform="translate(75.2224,-226.963)"> + <title>Sheet.26</title> + <desc>Script-generated Redfish JSON schema to C Structure convertor</desc> + <rect x="0" y="670.588" width="153" height="45" class="st19"/> + <text x="11.2" y="683.34" class="st20">Script-generated Redfish <tspan x="29.22" dy="1em" class="st5">JSON schema to C </tspan><tspan + x="24.45" dy="1em" class="st5">Structure convertor</tspan></text> </g> + <g id="shape28-58" transform="translate(241.722,-267.463)"> + <title>Sheet.28</title> + <ellipse cx="1.6875" cy="713.9" rx="1.6875" ry="1.6875" class="st21"/> + </g> + <g id="shape29-60" transform="translate(245.66,-272.525)"> + <title>Sheet.29</title> + <ellipse cx="1.6875" cy="713.9" rx="1.6875" ry="1.6875" class="st21"/> + </g> + <g id="shape30-62" transform="translate(250.16,-277.588)"> + <title>Sheet.30</title> + <ellipse cx="1.6875" cy="713.9" rx="1.6875" ry="1.6875" class="st21"/> + </g> + <g id="shape31-64" transform="translate(178.722,-204.463)"> + <title>Sheet.31</title> + <desc>ComputerSystem</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="18.16" y="704.59" class="st22">ComputerSystem</text> </g> + <g id="shape32-67" transform="translate(201.222,-220.213)"> + <title>Sheet.32</title> + <desc>BootOption</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="29.69" y="704.59" class="st22">BootOption</text> </g> + <g id="shape33-70" transform="translate(210.222,-233.713)"> + <title>Sheet.33</title> + <desc>Memory</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="36.21" y="704.59" class="st22">Memory</text> </g> + <g id="shape34-73" transform="translate(385.722,-247.213)"> + <title>Sheet.34</title> + <rect x="0" y="670.588" width="153" height="45" class="st18"/> + </g> + <g id="shape35-75" transform="translate(358.722,-233.713)"> + <title>Sheet.35</title> + <rect x="0" y="670.588" width="153" height="45" class="st18"/> + </g> + <g id="shape36-77" transform="translate(349.722,-220.213)"> + <title>Sheet.36</title> + <desc>Script-generated EDK2 Redfish Feature Driver</desc> + <rect x="0" y="670.588" width="153" height="45" class="st19"/> + <text x="16.96" y="689.84" class="st20">Script-generated EDK2 <tspan x="17.33" dy="1em" class="st5">Redfish Feature Driver</tspan></text> </g> + <g id="shape40-81" transform="translate(453.222,-197.713)"> + <title>Sheet.40</title> + <desc>ComputerSystem</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="18.16" y="704.59" class="st22">ComputerSystem</text> </g> + <g id="shape41-84" transform="translate(475.722,-213.463)"> + <title>Sheet.41</title> + <desc>BootOption</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="29.69" y="704.59" class="st22">BootOption</text> </g> + <g id="shape42-87" transform="translate(493.722,-226.963)"> + <title>Sheet.42</title> + <desc>Memory</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="36.21" y="704.59" class="st22">Memory</text> </g> + <g id="shape43-90" transform="translate(608.472,-249.463)"> + <title>Sheet.43</title> + <rect x="0" y="670.588" width="153" height="45" class="st18"/> + </g> + <g id="shape46-92" transform="translate(738.972,-262.963)"> + <title>Sheet.46</title> + <ellipse cx="1.6875" cy="713.9" rx="1.6875" ry="1.6875" class="st21"/> + </g> + <g id="shape47-94" transform="translate(742.91,-268.025)"> + <title>Sheet.47</title> + <ellipse cx="1.6875" cy="713.9" rx="1.6875" ry="1.6875" class="st21"/> + </g> + <g id="shape48-96" transform="translate(747.41,-273.088)"> + <title>Sheet.48</title> + <ellipse cx="1.6875" cy="713.9" rx="1.6875" ry="1.6875" class="st21"/> + </g> + <g id="shape49-98" transform="translate(660.222,-199.963)"> + <title>Sheet.49</title> + <desc>ComputerSystemCollection</desc> + <rect x="0" y="688.588" width="123.75" height="27" class="st6"/> + <text x="5.3" y="704.59" class="st22">ComputerSystemCollection</text> </g> + <g id="shape50-101" transform="translate(720.972,-215.713)"> + <title>Sheet.50</title> + <desc>BootOptionCollection</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="8.96" y="704.59" class="st22">BootOptionCollection</text> </g> + <g id="shape51-104" transform="translate(732.222,-229.213)"> + <title>Sheet.51</title> + <desc>MemoryCollection</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="15.48" y="704.59" class="st22">MemoryCollection</text> </g> + <g id="shape56-107" transform="translate(515.651,-269.34) rotate(-1.84761)"> + <title>Curve connect 2.56</title> + <path d="M1.08 713.99 L1.29 713.7 A41.432 41.432 0 0 1 69.79 715.59" class="st23"/> + </g> + <g id="shape57-113" transform="translate(581.472,-235.963)"> + <title>Sheet.57</title> + <rect x="0" y="670.588" width="153" height="45" class="st18"/> + </g> + <g id="shape59-115" transform="translate(291.222,-242.713)"> + <title>1-D double</title> + <path d="M13.5 693.99 L13.5 688.59 L0 702.09 L13.5 715.59 L13.5 710.19 L31.5 710.19 L31.5 715.59 L45 702.09 L31.5 688.59 + L31.5 693.99 L13.5 693.99 Z" class="st25"/> + </g> + <g id="shape64-117" transform="translate(619.722,-467.713)"> + <title>Sheet.64</title> + <desc>EFI PLATFORM_CONFIG_TO_REDFISH_PROTOCOL</desc> + <g id="shadow64-118" transform="matrix(1.02,0,0,1.02,-1.98,-13.8618)" class="st10"> + <path d="M0 715.59 L198 715.59 L198 670.59 L0 670.59 L0 715.59 Z" class="st26"/> + </g> + <path d="M0 715.59 L198 715.59 L198 670.59 L0 670.59 L0 715.59 Z" class="st27"/> + <text x="91.2" y="683.34" class="st20">EFI <tspan x="6.13" dy="1em" class="st5">PLATFORM</tspan>_CONFIG_TO_REDFISH_<tspan + x="69.84" dy="1em" class="st5">PROTOCOL</tspan></text> </g> + <g id="shape65-125" transform="translate(511.722,-445.213)"> + <title>Sheet.65</title> + <desc>EFI PLATFORM_CONFIG_TO_REDFISH_PROTOCOL</desc> + <g id="shadow65-126" transform="matrix(1.02,0,0,1.02,-1.98,-13.8618)" class="st10"> + <path d="M0 715.59 L198 715.59 L198 670.59 L0 670.59 L0 715.59 Z" class="st26"/> + </g> + <path d="M0 715.59 L198 715.59 L198 670.59 L0 670.59 L0 715.59 Z" class="st27"/> + <text x="91.2" y="683.34" class="st20">EFI <tspan x="6.13" dy="1em" class="st5">PLATFORM</tspan>_CONFIG_TO_REDFISH_<tspan + x="69.84" dy="1em" class="st5">PROTOCOL</tspan></text> </g> + <g id="shape67-133" transform="translate(536.472,-593.713)"> + <title>Sheet.67</title> + <desc>Other Platform-specific Implementations</desc> + <rect x="0" y="688.588" width="243" height="27" class="st6"/> + <text x="20.02" y="705.09" class="st28">Other Platform-specific Implementations</text> </g> + <g id="group71-136" transform="translate(567.972,-530.713)"> + <title>Can.71</title> + <desc>EFI Variable/ FW Storage</desc> + <g id="shape72-137"> + <title>Sheet.72</title> + <path d="M0 709.29 A29.25 6.3 -180 1 0 58.5 709.29 L58.5 658.89 L0 658.89 L0 709.29 Z" class="st29"/> + </g> + <g id="shape71-139"> + <ellipse cx="29.25" cy="658.888" rx="29.25" ry="6.3" class="st29"/> + <text x="23.25" y="675.09" class="st30">EFI <tspan x="10.54" dy="1.2em" class="st5">Variable</tspan>/ <tspan + x="5.79" dy="1.2em" class="st5">FW Storage</tspan></text> </g> + </g> + <g id="group73-144" transform="translate(687.222,-530.713)"> + <title>Can.73</title> + <desc>Other Storage</desc> + <g id="shape74-145"> + <title>Sheet.74</title> + <path d="M0 709.29 A29.25 6.3 -180 1 0 58.5 709.29 L58.5 658.89 L0 658.89 L0 709.29 Z" class="st29"/> + </g> + <g id="shape73-147"> + <ellipse cx="29.25" cy="658.888" rx="29.25" ry="6.3" class="st29"/> + <text x="17.41" y="681.09" class="st30">Other <tspan x="13.66" dy="1.2em" class="st5">Storage</tspan></text> </g> + </g> + <g id="shape76-151" transform="translate(1306.06,184.875) rotate(90)"> + <title>1-D double.76</title> + <path d="M6.75 704.79 L6.75 702.09 L0 708.84 L6.75 715.59 L6.75 712.89 L33.75 712.89 L33.75 715.59 L40.5 708.84 L33.75 + 702.09 L33.75 704.79 L6.75 704.79 Z" class="st31"/> + </g> + <g id="shape77-153" transform="translate(1425.31,184.875) rotate(90)"> + <title>1-D double.77</title> + <path d="M6.75 704.79 L6.75 702.09 L0 708.84 L6.75 715.59 L6.75 712.89 L11.25 712.89 L11.25 715.59 L18 708.84 L11.25 + 702.09 L11.25 704.79 L6.75 704.79 Z" class="st31"/> + </g> + <g id="shape78-155" transform="translate(21.2224,-139.213)"> + <title>Sheet.78</title> + <path d="M0 715.59 L810 715.59" class="st32"/> + </g> + <g id="group80-158" transform="translate(-173.49,382.875) rotate(-90)"> + <title>Folded Corner</title> + <g id="shape80-159"> + <g id="shadow80-160" transform="matrix(1.02,0,0,1.02,-3.105,-9.45175)" class="st10"> + <path d="M0 715.59 L278.62 715.59 L310.5 688.27 L310.5 229.59 L0 229.59 L0 715.59 Z" class="st33"/> + </g> + <path d="M0 715.59 L278.62 715.59 L310.5 688.27 L310.5 229.59 L0 229.59 L0 715.59 Z" class="st35"/> + </g> + <g id="shape81-168" transform="translate(278.625,0)"> + <title>Sheet.81</title> + <g id="shadow81-169" transform="matrix(1.02,0,0,1.02,-0.6375,-14.3117)" class="st10"> + <path d="M0 715.59 L31.88 688.27 L4.87 684.09 L0 715.59 Z" class="st33"/> + </g> + <path d="M0 715.59 L31.88 688.27 L4.87 684.09 L0 715.59 Z" class="st37"/> + </g> + </g> + <g id="group82-175" transform="translate(432.972,-530.713)"> + <title>Can.69</title> + <desc>EDK2 HII Database</desc> + <g id="shape83-176"> + <title>Sheet.83</title> + <path d="M0 709.29 A29.25 6.3 -180 1 0 58.5 709.29 L58.5 658.89 L0 658.89 L0 709.29 Z" class="st38"/> + </g> + <g id="shape82-178"> + <ellipse cx="29.25" cy="658.888" rx="29.25" ry="6.3" class="st38"/> + <text x="11.84" y="681.09" class="st30">EDK2 HII <tspan x="10.24" dy="1.2em" class="st5">Database</tspan></text> </g> + </g> + <g id="shape84-182" transform="translate(390.222,-429.463)"> + <title>Sheet.84</title> + <desc>EFI PLATFORM_CONFIG_TO_REDFISH_PROTOCOL</desc> + <g id="shadow84-183" transform="matrix(1.02,0,0,1.02,-1.44,-13.8618)" class="st10"> + <rect x="0" y="670.588" width="144" height="45" class="st39"/> + </g> + <rect x="0" y="670.588" width="144" height="45" class="st40"/> + <text x="64.2" y="683.34" class="st20">EFI <tspan x="4.73" dy="1em" class="st5">PLATFORM</tspan>_CONFIG_TO_<tspan + x="17.24" dy="1em" class="st5">REDFISH</tspan>_PROTOCOL</text> </g> + <g id="shape85-190" transform="translate(1171.06,184.875) rotate(90)"> + <title>1-D double.75</title> + <path d="M6.75 704.79 L6.75 702.09 L0 708.84 L6.75 715.59 L6.75 712.89 L49.5 712.89 L49.5 715.59 L56.25 708.84 L49.5 + 702.09 L49.5 704.79 L6.75 704.79 Z" class="st38"/> + </g> + <g id="shape86-192" transform="translate(1164.31,286.125) rotate(90)"> + <title>1-D double.68</title> + <g id="shadow86-193" transform="matrix(1.02,0,0,1.02,-1.1475,-14.0418)" class="st10"> + <path d="M13.5 693.99 L13.5 688.59 L0 702.09 L13.5 715.59 L13.5 710.19 L101.25 710.19 L101.25 715.59 L114.75 702.09 + L101.25 688.59 L101.25 693.99 L13.5 693.99 Z" class="st39"/> + </g> + <path d="M13.5 693.99 L13.5 688.59 L0 702.09 L13.5 715.59 L13.5 710.19 L101.25 710.19 L101.25 715.59 L114.75 702.09 L101.25 + 688.59 L101.25 693.99 L13.5 693.99 Z" class="st38"/> + </g> + <g id="shape87-197" transform="translate(27.9724,-616.213)"> + <title>Sheet.87</title> + <desc>EDK2 Open Source Implementation</desc> + <rect x="0" y="688.588" width="243" height="27" class="st6"/> + <text x="34.39" y="705.09" class="st28">EDK2 Open Source Implementation</text> </g> + <g id="shape88-200" transform="translate(1312.81,270.375) rotate(90)"> + <title>1-D double.88</title> + <path d="M13.5 693.99 L13.5 688.59 L0 702.09 L13.5 715.59 L13.5 710.19 L117 710.19 L117 715.59 L130.5 702.09 L117 688.59 + L117 693.99 L13.5 693.99 Z" class="st41"/> + </g> + <g id="shape89-202" transform="translate(1434.31,247.875) rotate(90)"> + <title>1-D double.89</title> + <path d="M13.5 693.99 L13.5 688.59 L0 702.09 L13.5 715.59 L13.5 710.19 L139.5 710.19 L139.5 715.59 L153 702.09 L139.5 + 688.59 L139.5 693.99 L13.5 693.99 Z" class="st42"/> + </g> + <g id="shape90-204" transform="translate(838.629,252.112) rotate(68.1986)"> + <title>Curve connect 1.61</title> + <path d="M7.53 720.84 L7.83 721.04 A30.61 30.61 -180 0 0 42.41 715.59 A30.61 30.61 0 0 1 76.99 710.13 L77.29 710.34" + class="st43"/> + </g> + <g id="shape91-213" transform="translate(-37.5816,162.844) rotate(-60.2551) scale(-1,1)"> + <title>Curve connect 1.62</title> + <path d="M7.67 720.62 L7.98 720.82 A34.3918 34.3918 -180 0 0 45.35 715.59 A34.3918 34.3918 0 0 1 82.72 710.35 L83.03 + 710.55" class="st43"/> + </g> + <g id="shape94-220" transform="translate(488.651,-255.84) rotate(-1.84761)"> + <title>Curve connect 2.54</title> + <path d="M1.08 713.99 L1.29 713.7 A41.432 41.432 0 0 1 69.79 715.59" class="st23"/> + </g> + <g id="shape96-225" transform="translate(572.472,-222.463)"> + <title>Sheet.96</title> + <desc>Script-generated EDK2 Redfish Collection Driver</desc> + <rect x="0" y="670.588" width="153" height="45" class="st19"/> + <text x="16.96" y="689.84" class="st20">Script-generated EDK2 <tspan x="11.39" dy="1em" class="st5">Redfish Collection Driver</tspan></text> </g> + <g id="shape98-229" transform="translate(67.3474,-420.463)"> + <title>Rounded Rectangle.98</title> + <desc>EDK2 HII UNI file #string STR_OPTION_A #language x-uefi-redfi...</desc> + <path d="M7.73 715.59 L266.77 715.59 A7.73227 7.73227 -180 0 0 274.5 707.86 L274.5 637.82 A7.73227 7.73227 -180 0 0 266.77 + 630.09 L7.73 630.09 A7.73227 7.73227 -180 0 0 -0 637.82 L0 707.86 A7.73227 7.73227 -180 0 0 7.73 715.59 + Z" class="st45"/> + <text x="4" y="646.69" class="st46">EDK2 HII UNI file<tspan x="4" dy="1.425em" class="st47">#</tspan><tspan + class="st47">string </tspan><tspan class="st48">STR</tspan><tspan class="st48">_</tspan><tspan class="st48">OPTION</tspan><tspan + class="st48">_</tspan><tspan class="st48">A</tspan><tspan class="st47"> </tspan><tspan class="st47">#</tspan><tspan + class="st47">language </tspan><tspan class="st48">x</tspan><tspan class="st48">-</tspan><tspan class="st48">uefi</tspan><tspan + class="st48">-</tspan><tspan class="st48">redfish</tspan><tspan class="st48">-</tspan><tspan class="st48">SCHEMA</tspan><tspan + class="st48">.</tspan><tspan class="st48">VERSION</tspan><tspan class="st47"> </tspan><tspan class="st48"> </tspan><tspan + x="4" dy="1.2em" class="st49">“</tspan><tspan class="st49">/</tspan><tspan class="st49">SCHEMA</tspan><tspan + class="st49">/</tspan><tspan class="st49">PropertyA</tspan><tspan class="st48">” </tspan><tspan + class="st47"> </tspan><tspan x="4" dy="1.2em" class="st47">#</tspan><tspan class="st47">string</tspan><tspan + class="st48"> </tspan><tspan class="st48">STR</tspan><tspan class="st48">_</tspan><tspan class="st48">OPTION</tspan><tspan + class="st48">_</tspan><tspan class="st48">B</tspan><tspan class="st47"> </tspan><tspan class="st47">#</tspan><tspan + class="st47">language</tspan><tspan class="st48"> </tspan><tspan class="st48">x</tspan><tspan class="st48">-</tspan><tspan + class="st48">uefi</tspan><tspan class="st48">-</tspan><tspan class="st48">redfish</tspan><tspan + class="st48">-</tspan><tspan class="st48">SCHEMA</tspan><tspan class="st48">.</tspan><tspan class="st48">VERSION</tspan><tspan + class="st47"> </tspan><tspan class="st49"> </tspan><tspan x="4" dy="1.2em" class="st49">“</tspan><tspan + class="st49">/</tspan><tspan class="st49">SCHEMA</tspan><tspan class="st49">/</tspan><tspan class="st49">PropertyB</tspan><tspan + class="st49">” </tspan><tspan x="4" dy="1.2em" class="st47">#</tspan><tspan class="st47">string </tspan><tspan + class="st48">STR</tspan><tspan class="st48">_</tspan><tspan class="st48">OPTION</tspan><tspan class="st48">_</tspan><tspan + class="st47">C </tspan><tspan class="st47">#</tspan><tspan class="st47">language</tspan><tspan + class="st48"> </tspan><tspan class="st48">x</tspan><tspan class="st48">-</tspan><tspan class="st48">uefi</tspan><tspan + class="st48">-</tspan><tspan class="st48">redfish</tspan><tspan class="st48">-</tspan><tspan class="st48">SCHEMA</tspan><tspan + class="st48">.</tspan><tspan class="st48">VERSION</tspan><tspan class="st47"> </tspan><tspan class="st49"> </tspan><tspan + x="4" dy="1.312em" class="st49">“</tspan><tspan class="st49">/</tspan><tspan class="st49">SCHEMA</tspan><tspan + class="st49">/</tspan><tspan class="st49">PropertyC</tspan><tspan class="st49">”</tspan></text> </g> + <g id="shape100-316" transform="translate(171.972,-550.963)"> + <title>Rounded Rectangle.100</title> + <desc>EDK2 HII VFR Form Option A Enabled Option B Disabled Option C...</desc> + <path d="M4.5 715.59 L148.5 715.59 A4.49993 4.49993 -180 0 0 153 711.09 L153 664.96 A4.49993 4.49993 -180 0 0 148.5 660.46 + L4.5 660.46 A4.49993 4.49993 -180 0 0 0 664.96 L0 711.09 A4.49993 4.49993 -180 0 0 4.5 715.59 Z" + class="st50"/> + <text x="37.65" y="671.66" class="st51">EDK2 HII VFR Form<tspan x="24.37" dy="1.6em" class="st52">Option A Enabled </tspan><tspan + x="24.6" dy="0.8em" class="st52">Option B Disabled </tspan><tspan x="24.4" dy="0.8em" class="st52">Option C </tspan><tspan + class="st52">0</tspan><tspan class="st52">x</tspan><tspan class="st52">16</tspan></text> </g> + <g id="shape101-325" transform="translate(147.222,-539.713)"> + <title>Rounded Rectangle.101</title> + <desc>EDK2 HII VFR Form Option A Enabled Option B Disabled Option C...</desc> + <path d="M4.5 715.59 L148.5 715.59 A4.49993 4.49993 -180 0 0 153 711.09 L153 664.96 A4.49993 4.49993 -180 0 0 148.5 660.46 + L4.5 660.46 A4.49993 4.49993 -180 0 0 0 664.96 L0 711.09 A4.49993 4.49993 -180 0 0 4.5 715.59 Z" + class="st50"/> + <text x="37.65" y="671.66" class="st51">EDK2 HII VFR Form<tspan x="24.37" dy="1.6em" class="st52">Option A Enabled </tspan><tspan + x="24.6" dy="0.8em" class="st52">Option B Disabled </tspan><tspan x="24.4" dy="0.8em" class="st52">Option C </tspan><tspan + class="st52">0</tspan><tspan class="st52">x</tspan><tspan class="st52">16</tspan></text> </g> + <g id="shape102-334" transform="translate(129.222,-526.213)"> + <title>Rounded Rectangle</title> + <desc>EDK2 HII VFR Form Option A Enabled Option B Disabled Option C...</desc> + <path d="M4.5 715.59 L148.5 715.59 A4.49993 4.49993 -180 0 0 153 711.09 L153 664.96 A4.49993 4.49993 -180 0 0 148.5 660.46 + L4.5 660.46 A4.49993 4.49993 -180 0 0 0 664.96 L0 711.09 A4.49993 4.49993 -180 0 0 4.5 715.59 Z" + class="st50"/> + <text x="29.88" y="671.66" class="st28">EDK2 HII VFR Form<tspan x="24.37" dy="1.6em" class="st53">Option A </tspan><tspan + class="st54">Enabled </tspan><tspan x="24.6" dy="0.8em" class="st53">Option B </tspan><tspan + class="st54">Disabled </tspan><tspan x="24.4" dy="0.8em" class="st53">Option C </tspan><tspan + class="st54">0</tspan><tspan class="st54">x</tspan><tspan class="st54">16</tspan></text> </g> + <g id="shape110-345" transform="translate(503.938,-444.613) rotate(13.0919)"> + <title>Curve connect 1.110</title> + <path d="M0 715.59 A11.592 11.592 0 0 1 22.97 715.59 A13.4718 13.4718 -180 0 0 48.31 719.9 L48.42 719.56" class="st55"/> + </g> + <g id="shape122-351" transform="translate(41.4724,-96.4625)"> + <title>Sheet.122</title> + <desc>[1]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[1]</text> </g> + <g id="shape123-354" transform="translate(746.847,-100.963)"> + <title>Sheet.123</title> + <desc>[2]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[2]</text> </g> + <g id="shape124-357" transform="translate(68.4724,-278.713)"> + <title>Sheet.124</title> + <desc>[3]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[3]</text> </g> + <g id="shape125-360" transform="translate(338.472,-269.713)"> + <title>Sheet.125</title> + <desc>[4]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[4]</text> </g> + <g id="shape126-363" transform="translate(761.472,-269.713)"> + <title>Sheet.126</title> + <desc>[5]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[5]</text> </g> + <g id="shape127-366" transform="translate(390.222,-476.713)"> + <title>Sheet.127</title> + <desc>[6]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[6]</text> </g> + <g id="shape128-369" transform="translate(123.597,-579.088)"> + <title>Sheet.128</title> + <desc>[8]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[8]</text> </g> + <g id="shape129-372" transform="translate(62.8474,-501.463)"> + <title>Sheet.129</title> + <desc>[9]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[9]</text> </g> + <g id="shape132-375" transform="translate(583.722,1233.46) rotate(180)"> + <title>Curve connect 2.132</title> + <path d="M2.78 714.72 L3.12 714.61 A681.188 681.188 0 0 1 406.38 714.61 L406.72 714.72" class="st57"/> + </g> + <g id="shape133-384" transform="translate(238.347,-157.213)"> + <title>Sheet.133</title> + <desc>Script-generated EDK2 Redfish client driver/library based on ...</desc> + <rect x="0" y="688.588" width="261" height="27" class="st1"/> + <text x="11.21" y="699.84" class="st59">Script-generated EDK2 Redfish client driver/library based on the <tspan + x="45.23" dy="1em" class="st5">standard Redfish schemas </tspan>published by DMTF</text> </g> + <g id="shape134-388" transform="translate(21.2224,-679.775)"> + <title>Rectangle.134</title> + <rect x="0" y="703.213" width="24.75" height="12.375" class="st2"/> + </g> + <g id="shape135-390" transform="translate(41.4724,-670.213)"> + <title>Sheet.135</title> + <desc>Script-generated code</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="12.79" y="704.34" class="st60">Script-generated code</text> </g> + <g id="shape137-393" transform="translate(21.2224,-661.213)"> + <title>Rectangle.137</title> + <rect x="0" y="703.213" width="24.75" height="12.375" class="st61"/> + </g> + <g id="shape138-395" transform="translate(43.7224,-652.213)"> + <title>Sheet.138</title> + <desc>UEFI/EDK2 open source</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="9.97" y="704.34" class="st60">UEFI/EDK2 open source</text> </g> + <g id="shape140-398" transform="translate(281.66,-341.784)"> + <title>Configure</title> + <path d="M41.27 698.83 C40.4 698.46 37.61 697.28 37.61 697.28 L37.79 694.96 L37.94 693.01 L37.69 689.29 L39.53 688.23 + C39.53 688.23 40.46 687.84 41.33 687.49 C40.71 685.96 40.45 685.33 39.82 683.81 C38.94 684.17 36.06 685.35 + 36.06 685.35 L34.63 683.57 C33.94 682.7 33.09 681.89 32.02 681.06 L30.33 679.75 L31.01 677.68 C31.01 677.68 + 31.41 676.7 31.79 675.77 C30.27 675.14 29.64 674.88 28.12 674.26 C27.72 675.23 26.52 678.17 26.52 678.17 + L24.28 677.95 C23.14 677.83 21.96 677.86 20.77 678.02 L18.64 678.3 L17.65 676.35 C17.65 676.35 17.21 675.31 + 16.78 674.31 C15.27 674.95 14.64 675.21 13.13 675.85 C13.58 676.92 14.85 679.93 14.85 679.93 L13.12 681.37 + C12.3 682.05 11.54 682.85 10.79 683.83 L9.49 685.52 L7.41 684.86 C7.41 684.86 6.28 684.4 5.17 683.96 C4.56 + 685.49 4.31 686.12 3.69 687.65 C4.82 688.1 7.84 689.31 7.84 689.31 C7.84 689.31 7.65 692.73 7.63 693 C7.65 + 693.25 7.7 694.01 7.7 694.03 C7.7 694.03 7.87 695.84 7.87 695.84 L6.79 696.82 C6.46 697.15 6.34 697.24 3.64 + 698.3 C4.24 699.84 4.49 700.47 5.08 702.01 C6.21 701.57 9.36 700.34 9.36 700.34 L10.99 702.57 C11.49 703.19 + 12.18 703.89 13.04 704.61 L14.63 705.96 L13.93 707.96 C13.93 707.96 13.45 709.08 12.97 710.2 C14.47 710.85 + 15.1 711.12 16.61 711.77 C17.05 710.74 18.36 707.71 18.36 707.71 L20.65 708.03 C21.73 708.19 22.89 708.21 + 24.1 708.1 L26.18 707.92 L27.11 709.84 C27.11 709.84 27.53 710.9 27.94 711.93 C29.47 711.32 30.1 711.07 + 31.63 710.45 C31.25 709.51 30.04 706.48 30.04 706.48 L32.32 704.83 C32.97 704.31 33.71 703.56 34.48 702.62 + L35.81 701 L37.85 701.7 C37.85 701.7 38.82 702.1 39.73 702.49 C40.37 700.97 40.64 700.34 41.27 698.83 ZM40.58 + 695.32 C40.58 695.32 40.57 695.4 40.56 695.47 C40.95 695.64 44.96 697.33 44.96 697.33 L41.23 706.17 C41.23 + 706.17 37.13 704.45 36.75 704.28 C36.7 704.34 36.65 704.41 36.65 704.41 C35.76 705.49 34.89 706.37 33.97 + 707.11 C33.97 707.11 33.67 707.33 33.46 707.47 C33.62 707.88 35.28 712.02 35.28 712.02 L26.38 715.59 C26.38 + 715.59 24.65 711.28 24.5 710.89 C24.42 710.9 24.34 710.9 24.34 710.9 C22.91 711.03 21.54 711 20.25 710.82 + C20.25 710.82 20.17 710.8 20.09 710.79 C19.93 711.19 18.08 715.47 18.08 715.47 L9.27 711.66 C9.27 711.66 + 11.18 707.25 11.34 706.86 C11.29 706.81 11.22 706.76 11.22 706.76 C10.23 705.92 9.41 705.09 8.72 704.23 + C8.72 704.23 8.51 703.94 8.37 703.75 C7.96 703.9 3.49 705.65 3.49 705.65 L0 696.71 C0 696.71 4.8 694.83 + 4.8 694.83 C4.8 694.83 4.88 694.8 4.95 694.78 C4.92 694.54 4.89 694.21 4.89 694.21 L4.82 693.02 C4.82 693.02 + 4.9 691.52 4.92 691.17 C4.54 691.02 0.04 689.21 0.04 689.21 L3.6 680.3 C3.6 680.3 8.06 682.09 8.46 682.25 + C8.51 682.18 8.56 682.12 8.56 682.12 C9.43 680.98 10.34 680.02 11.33 679.2 C11.33 679.2 11.39 679.15 11.45 + 679.11 C11.29 678.72 9.45 674.35 9.45 674.35 L18.29 670.62 C18.29 670.62 20.07 674.85 20.24 675.25 C20.31 + 675.24 20.39 675.23 20.39 675.23 C21.8 675.04 23.2 675.01 24.56 675.15 C24.56 675.15 24.63 675.16 24.71 + 675.16 C24.87 674.78 26.59 670.59 26.59 670.59 L35.46 674.23 C35.46 674.23 33.77 678.34 33.61 678.74 C33.67 + 678.78 33.74 678.83 33.74 678.83 C34.99 679.8 35.99 680.77 36.82 681.8 C36.82 681.8 36.88 681.88 36.94 681.95 + C37.33 681.79 41.35 680.14 41.35 680.14 L45 689.02 C45 689.02 40.99 690.67 40.6 690.83 C40.61 690.9 40.62 + 690.98 40.62 690.98 C40.71 691.76 40.75 692.41 40.75 693.01 C40.75 693.7 40.7 694.43 40.58 695.32 ZM26.56 + 697.76 C29.16 695.67 29.58 691.87 27.5 689.26 C25.42 686.65 21.62 686.23 19.01 688.31 C16.41 690.4 15.98 + 694.2 18.07 696.81 C20.15 699.42 23.95 699.84 26.56 697.76 ZM23.76 684.23 C26.11 684.49 28.22 685.65 29.7 + 687.5 C32.75 691.32 32.12 696.9 28.31 699.95 C26.47 701.43 24.16 702.1 21.8 701.84 C19.45 701.58 17.34 700.41 + 15.87 698.56 C14.57 696.94 13.93 694.98 13.93 693.04 C13.93 690.44 15.07 687.86 17.25 686.12 C19.1 684.64 + 21.41 683.97 23.76 684.23 Z" class="st62"/> + </g> + <g id="shape145-400" transform="translate(323.911,1069.28) scale(1,-1)"> + <title>Side to top/bottom.145</title> + <path d="M7.18 715.59 L7.54 715.59 L96.69 715.59 L96.69 668.4" class="st63"/> + </g> + <g id="shape146-406" transform="translate(204.597,-382.144)"> + <title>Bottom to top fixed 2</title> + <path d="M0 677.27 L0 697.59 L99.14 697.59 L99.14 708.05" class="st65"/> + </g> + <g id="shape150-412" transform="translate(281.66,1070.51) rotate(180)"> + <title>Side to top/bottom</title> + <path d="M7.18 715.59 L7.54 715.59 L107.44 715.59 L107.44 669.64" class="st63"/> + </g> + <g id="shape152-417" transform="translate(173.097,-359.713)"> + <title>Sheet.152</title> + <desc>[10]</desc> + <rect x="0" y="688.588" width="45" height="27" class="st6"/> + <text x="12.52" y="705.09" class="st7">[10]</text> </g> + <g id="shape153-420" transform="translate(186.597,-359.713)"> + <title>Sheet.153</title> + <desc>EDK2 Build Tool</desc> + <rect x="0" y="688.588" width="108" height="27" class="st6"/> + <text x="21.18" y="704.59" class="st22">EDK2 Build Tool</text> </g> + <g id="shape95-423" transform="translate(479.651,-242.34) rotate(-1.84761)"> + <title>Curve connect 2</title> + <path d="M1.08 713.99 L1.29 713.7 A41.432 41.432 0 0 1 68.5 713.7 L68.7 713.99" class="st66"/> + </g> + <g id="shape154-431" transform="translate(546.597,-607.213)"> + <title>Sheet.154</title> + <desc>[7]</desc> + <rect x="0" y="688.588" width="24.75" height="27" class="st6"/> + <text x="5.44" y="705.09" class="st7">[7]</text> </g> + <g id="shape155-434" transform="translate(919.083,249.319) rotate(-86.8202) scale(1,-1)"> + <title>Curve connect 1.155</title> + <path d="M0 715.59 A6.2366 6.2366 0 0 1 11.73 715.59 A4.54475 4.54475 -180 0 0 20.28 715.59" class="st67"/> + </g> + </g> +</svg> -- 2.17.1
|
|
[staging/edk2-redfish-client PATCH 0/2] RedfishClientPkg
This is the first commit of RedfishClientPkg. Readme and diagrams
are created to delineate EDK2 Redfish Client implementation. Signed-off-by: Abner Chang <abner.chang@...> Cc: Nickle Wang <nickle.wang@...> Cc: Liming Gao <gaoliming@...> Cc: Andrew Fish <afish@...> Cc: Leif Lindholm <leif@...> Cc: Michael D Kinney <michael.d.kinney@...> Abner Chang (2): RedfishClientPkg: Initial commit edk2: Update Maintainers.txt RedfishClientPkg/Readme.md | 180 +++++ Maintainers.txt | 5 + .../Media/RedfishClientDriverStack.svg | 680 ++++++++++++++++++ 3 files changed, 865 insertions(+) create mode 100644 RedfishClientPkg/Readme.md create mode 100644 RedfishClientPkg/Documents/Media/RedfishClientDriverStack.svg -- 2.17.1
|
|
Re: [PATCH] Fix variables may be used uninitialize
Chaganty, Rangasai V
Reviewed-by: Sai Chaganty <rangasai.v.chaganty@...>
toggle quoted messageShow quoted text
-----Original Message-----
From: Hsu, WesleyX <wesleyx.hsu@...> Sent: Friday, July 16, 2021 12:08 AM To: devel@edk2.groups.io Cc: Hsu, WesleyX <wesleyx.hsu@...>; Ni, Ray <ray.ni@...>; Chaganty, Rangasai V <rangasai.v.chaganty@...> Subject: [PATCH] Fix variables may be used uninitialize REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3491 Initialize variables may be used uninitialized after adding "-ffat-lto-objects" option in GCC5 tool chain. Change-Id: Iec8c9a884bac5cf1ce7258867c074c4668e5fa44 Signed-off-by: WesleyX Hsu <wesleyx.hsu@...> Cc: Ray Ni <ray.ni@...> Cc: Rangasai V Chaganty <rangasai.v.chaganty@...> --- Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDmarPei/TranslationTable.c | 5 +++++ Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/TranslationTable.c | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDmarPei/TranslationTable.c b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDmarPei/TranslationTable.c index 341e2beb..2a5fa637 100644 --- a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDmarPei/TranslationTable.c +++ b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDmarPei/Translat +++ ionTable.c @@ -107,6 +107,11 @@ CreateSecondLevelPagingEntryTable ( UINT64 EndAddress; BOOLEAN Is5LevelPaging; + Lvl4PagesStart = 0; + Lvl4PagesEnd = 0; + Lvl4PtEntry = NULL; + Lvl5PtEntry = NULL; + if (MemoryLimit == 0) { return EFI_SUCCESS; } diff --git a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/TranslationTable.c b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/TranslationTable.c index d152039f..01375139 100644 --- a/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/TranslationTable.c +++ b/Silicon/Intel/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/TranslationT +++ able.c @@ -133,7 +133,7 @@ CreateContextEntry ( mVtdUnitInformation[VtdIndex].Is5LevelPaging = TRUE; if ((mAcpiDmarTable->HostAddressWidth <= 48) && ((mVtdUnitInformation[VtdIndex].CapReg.Bits.SAGAW & BIT2) != 0)) { - mVtdUnitInformation[VtdIndex].Is5LevelPaging = FALSE; + mVtdUnitInformation[VtdIndex].Is5LevelPaging = FALSE; } } else if ((mVtdUnitInformation[VtdIndex].CapReg.Bits.SAGAW & BIT2) == 0) { DEBUG((DEBUG_ERROR, "!!!! Page-table type is not supported on VTD %d !!!!\n", VtdIndex)); @@ -195,6 +195,11 @@ CreateSecondLevelPagingEntryTable ( UINT64 BaseAddress; UINT64 EndAddress; + Lvl4PagesStart = 0; + Lvl4PagesEnd = 0; + Lvl4PtEntry = NULL; + Lvl5PtEntry = NULL; + if (MemoryLimit == 0) { return EFI_SUCCESS; } -- 2.32.0.windows.2
|
|