[edk2-devel] [edk2-redfish-client][PATCH v2] RedfishClientPkg: update Readme.md

Chang, Abner via groups.io abner.chang=amd.com at groups.io
Wed Oct 4 02:13:04 UTC 2023


[AMD Official Use Only - General]

Thanks!

Reviewed-by: Abner Chang <abner.chang at amd.com>

> -----Original Message-----
> From: Nickle Wang <nicklew at nvidia.com>
> Sent: Tuesday, October 3, 2023 8:02 PM
> To: devel at edk2.groups.io
> Cc: Chang, Abner <Abner.Chang at amd.com>; Igor Kulchytskyy
> <igork at ami.com>
> Subject: [edk2-redfish-client][PATCH v2] RedfishClientPkg: update
> Readme.md
>
> Caution: This message originated from an External Source. Use proper caution
> when opening attachments, clicking links, or responding.
>
>
> Update readme for below topics:
> - The call flow of BIOS Redfish provisioning scenario.
> - The call flow of BIOS Redfish pending settings scenario.
> - The call flow of Redfish feature driver dispatch.
> - Redfish foundation driver stack design.
> - The design of Redfish Platform Config Protocol.
> - The design of synchronization between BIOS and Redfish service.
>
> Signed-off-by: Nickle Wang <nicklew at nvidia.com>
> Cc: Abner Chang <abner.chang at amd.com>
> Cc: Igor Kulchytskyy <igork at ami.com>
> ---
>  .../redfish-call-flow-pending-settings.svg    |  58 ++++++
>  .../Media/redfish-call-flow-provisioning.svg  |  46 +++++
>  .../redfish-feature-driver-call-flow.svg      | 133 ++++++++++++++
>  .../Media/redfish-foundation-driver-stack.svg |  75 ++++++++
>  ...redfish-platform-config-protocol-stack.svg |  99 ++++++++++
>  .../Media/redfish-synchronization-design.svg  |  75 ++++++++
>  RedfishClientPkg/Readme.md                    | 170 ++++++++++++++++--
>  7 files changed, 641 insertions(+), 15 deletions(-)
>  create mode 100755 RedfishClientPkg/Documents/Media/redfish-call-flow-
> pending-settings.svg
>  create mode 100755 RedfishClientPkg/Documents/Media/redfish-call-flow-
> provisioning.svg
>  create mode 100755 RedfishClientPkg/Documents/Media/redfish-feature-
> driver-call-flow.svg
>  create mode 100755 RedfishClientPkg/Documents/Media/redfish-
> foundation-driver-stack.svg
>  create mode 100755 RedfishClientPkg/Documents/Media/redfish-platform-
> config-protocol-stack.svg
>  create mode 100755 RedfishClientPkg/Documents/Media/redfish-
> synchronization-design.svg
>
> diff --git a/RedfishClientPkg/Documents/Media/redfish-call-flow-pending-
> settings.svg b/RedfishClientPkg/Documents/Media/redfish-call-flow-
> pending-settings.svg
> new file mode 100755
> index 00000000..c7338c69
> --- /dev/null
> +++ b/RedfishClientPkg/Documents/Media/redfish-call-flow-pending-
> settings.svg
> @@ -0,0 +1,58 @@
> +<svg width="4414" height="1709" style="background-color:white"
> xmlns="http://www.w3.org/2000/svg"
> xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
> overflow="hidden">
> +  <defs>
> +    <clipPath id="clip0">
> +      <rect x="12" y="509" width="4414" height="1709"/>
> +    </clipPath>
> +  </defs>
> +  <g clip-path="url(#clip0)" transform="translate(-12 -509)">
> +    <rect x="2057.5" y="676.5" width="557" height="128" stroke="#BCBCBC"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#FFFFFF"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 2143.23
> 758)">Feature Driver</text>
> +    <rect x="600.5" y="676.5" width="557" height="128" stroke="#BCBCBC"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#FFFFFF"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 763.66 758)">EDK2
> HII</text>
> +    <rect x="3408.5" y="676.5" width="587" height="128" stroke="#BCBCBC"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#FFFFFF"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 3499.14
> 758)">Redfish Service</text>
> +    <path d="M2338.94 804.5 2338.94 2102.76 2332.06 2102.76 2332.06
> 804.5ZM2354.51 2076.99 2335.5 2109.58 2316.49 2076.99C2315.53
> 2075.35 2316.09 2073.25 2317.73 2072.29 2319.37 2071.34 2321.47
> 2071.89 2322.43 2073.53L2338.47 2101.03 2332.53 2101.03 2348.57
> 2073.53C2349.53 2071.89 2351.63 2071.34 2353.27 2072.29 2354.91
> 2073.25 2355.47 2075.35 2354.51 2076.99Z" fill="#8C8C8C"/>
> +    <path d="M871.938 804.5 871.938 2127.85 865.063 2127.85 865.063
> 804.5ZM887.511 2102.08 868.501 2134.67 849.49 2102.08C848.533
> 2100.44 849.087 2098.34 850.727 2097.38 852.367 2096.43 854.471
> 2096.98 855.428 2098.62L871.47 2126.12 865.531 2126.12 881.573
> 2098.62C882.53 2096.98 884.634 2096.43 886.274 2097.38 887.914
> 2098.34 888.468 2100.44 887.511 2102.08Z" fill="#8C8C8C"/>
> +    <path d="M3710.94 804.5 3710.94 2127.85 3704.06 2127.85 3704.06
> 804.5ZM3726.51 2102.08 3707.5 2134.67 3688.49 2102.08C3687.53
> 2100.44 3688.09 2098.34 3689.73 2097.38 3691.37 2096.43 3693.47
> 2096.98 3694.43 2098.62L3710.47 2126.12 3704.53 2126.12 3720.57
> 2098.62C3721.53 2096.98 3723.63 2096.43 3725.27 2097.38 3726.91
> 2098.34 3727.47 2100.44 3726.51 2102.08Z" fill="#8C8C8C"/>
> +    <path d="M7.04493e-07-2.86458 1444.53-2.86423 1444.53 2.86494-
> 7.04493e-07 2.86458ZM1439.95-13.7496 1467.45 0.000360892 1439.95
> 13.7504Z" fill="#8C8C8C" transform="matrix(-1 0 0 1 2335.45 1342)"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 990.014
> 1568)">3</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1016.37
> 1568)">. If </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1098.29
> 1568)">HII question exists and pending value is changed</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1051.89
> 1628)">Use HII protocol/library to submit new value</text>
> +    <path d="M1444.91 1252 1719.91 1252 1719.91 1311 1444.91 1311Z"
> fill="#FFFF00" fill-rule="evenodd"/>
> +    <path d="M1719.91 1252 1844.23 1252 1844.23 1311 1719.91 1311Z"
> fill="#FFFF00" fill-rule="evenodd"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 990.014
> 1239)">2. Check and see if there is HII question with lang:</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1051.89
> 1299)">/</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1078.24
> 1299)">bios/attributes/</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1444.91
> 1299)">ATTRIBUTE_</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1719.91
> 1299)">NAME</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2378.69
> 1805)">4. Update current settings to </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2440.56
> 1865)">/redfish/v1/systems/SYS/Bios </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 3138.38
> 1865)">(provisioning)</text>
> +    <path d="M2335 1079.14 3678.02 1079.14 3678.02 1084.87 2335
> 1084.86ZM3673.43 1068.25 3700.93 1082 3673.43 1095.75Z"
> fill="#8C8C8C"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2393.47
> 968)">1. Use </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2549.88
> 968)">HTTP âEURoeGETâEUR� to download pending settings from</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2455.35
> 1028)">/redfish</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2638.11
> 1028)">/v1/systems/SYS/Bios/Settings</text>
> +    <path d="M2335 1901.14 3678.02 1901.14 3678.02 1906.86 2335
> 1906.86ZM3673.43 1890.25 3700.93 1904 3673.43 1917.75Z"
> fill="#8C8C8C"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2151.86
> 2175)">6. </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2212.01
> 2175)">System reboot</text>
> +    <rect x="298.5" y="959.5" width="377" height="199" stroke="#CDCDCD"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#404040"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 347.29 1046)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 413.749 1105)">driver</text>
> +    <rect x="353.5" y="1014.5" width="377" height="199" stroke="#CDCDCD"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#404040"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 402.29 1101)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 468.749 1160)">driver</text>
> +    <rect x="408.5" y="1069.5" width="377" height="199" stroke="#CDCDCD"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#404040"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 457.29 1156)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 523.749 1215)">driver</text>
> +    <rect x="463.5" y="1124.5" width="377" height="199" stroke="#CDCDCD"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#404040"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 512.29 1211)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 578.749 1270)">driver</text>
> +    <path d="M7.04493e-07-2.86458 1444.53-2.86423 1444.53 2.86494-
> 7.04493e-07 2.86458ZM1439.95-13.7496 1467.45 0.000360892 1439.95
> 13.7504Z" fill="#8C8C8C" transform="matrix(-1 0 0 1 2341.45 1666)"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="83" transform="matrix(1 0 0 1 62.1854
> 611)">Consume pending </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="83" transform="matrix(1 0 0 1 687.237
> 611)">settings:</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="50" transform="matrix(1 0 0 1
> 62.1854 680)">BMC to BIOS</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 3715.21
> 1979)">5. BMC reset pending settings</text>
> +  </g>
> +</svg>
> diff --git a/RedfishClientPkg/Documents/Media/redfish-call-flow-
> provisioning.svg b/RedfishClientPkg/Documents/Media/redfish-call-flow-
> provisioning.svg
> new file mode 100755
> index 00000000..70556152
> --- /dev/null
> +++ b/RedfishClientPkg/Documents/Media/redfish-call-flow-provisioning.svg
> @@ -0,0 +1,46 @@
> +<svg width="3803" height="1724" style="background-color:white"
> xmlns="http://www.w3.org/2000/svg"
> xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
> overflow="hidden">
> +  <defs>
> +    <clipPath id="clip0">
> +      <rect x="239" y="507" width="3803" height="1724"/>
> +    </clipPath>
> +  </defs>
> +  <g clip-path="url(#clip0)" transform="translate(-239 -507)">
> +    <rect x="2101.5" y="726.5" width="557" height="127" stroke="#BCBCBC"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#FFFFFF"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 2187.7
> 807)">Feature Driver</text>
> +    <rect x="644.5" y="726.5" width="557" height="127" stroke="#BCBCBC"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#FFFFFF"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 808.129 807)">EDK2
> HII</text>
> +    <rect x="3452.5" y="726.5" width="587" height="127" stroke="#BCBCBC"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#FFFFFF"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 3543.6
> 807)">Redfish Service</text>
> +    <path d="M2383.94 853.5 2383.94 2188.56 2377.06 2188.56 2377.06
> 853.5ZM2399.51 2162.79 2380.5 2195.38 2361.49 2162.79C2360.53
> 2161.15 2361.09 2159.04 2362.73 2158.08 2364.37 2157.13 2366.47
> 2157.68 2367.43 2159.32L2383.47 2186.82 2377.53 2186.82 2393.57
> 2159.32C2394.53 2157.68 2396.63 2157.13 2398.27 2158.08 2399.91
> 2159.04 2400.47 2161.15 2399.51 2162.79Z" fill="#8C8C8C"/>
> +    <path d="M915.938 853.5 915.938 2188.56 909.063 2188.56 909.063
> 853.5ZM931.511 2162.79 912.501 2195.38 893.49 2162.79C892.533
> 2161.15 893.087 2159.04 894.727 2158.08 896.367 2157.13 898.471
> 2157.68 899.428 2159.32L915.47 2186.82 909.531 2186.82 925.573
> 2159.32C926.53 2157.68 928.634 2157.13 930.274 2158.08 931.914
> 2159.04 932.468 2161.15 931.511 2162.79Z" fill="#8C8C8C"/>
> +    <path d="M3754.94 853.5 3754.94 2188.56 3748.06 2188.56 3748.06
> 853.5ZM3770.51 2162.79 3751.5 2195.38 3732.49 2162.79C3731.53
> 2161.15 3732.09 2159.04 3733.73 2158.08 3735.37 2157.13 3737.47
> 2157.68 3738.43 2159.32L3754.47 2186.82 3748.53 2186.82 3764.57
> 2159.32C3765.53 2157.68 3767.63 2157.13 3769.27 2158.08 3770.91
> 2159.04 3771.47 2161.15 3770.51 2162.79Z" fill="#8C8C8C"/>
> +    <path d="M7.04493e-07-2.86458 1444.53-2.86423 1444.53 2.86494-
> 7.04493e-07 2.86458ZM1439.95-13.7496 1467.45 0.000360892 1439.95
> 13.7504Z" fill="#8C8C8C" transform="matrix(-1 0 0 1 2379.45 1003)"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 957.259
> 969)">1. Find all HII questions with </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1620.12
> 969)">language: </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="50" transform="matrix(1 0 0 1 1854.45
> 969)">âEURoe/bios/attributes/*</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2292.73
> 969)">âEUR� </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 985.955
> 1526)">3. Get current value of each HII question and</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 1047.83
> 1586)">append value to attribute list</text>
> +    <path d="M7.04493e-07-2.86458 1444.53-2.86423 1444.53 2.86494-
> 7.04493e-07 2.86458ZM1439.95-13.7496 1467.45 0.000360892 1439.95
> 13.7504Z" fill="#8C8C8C" transform="matrix(-1 0 0 1 2379.45 1391)"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2417.95
> 1202)">2. Follow Bios schema and </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2479.82
> 1262)">create attribute list</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2412.63
> 1795)">4. BIOS current settings is ready</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 2474.5
> 1855)">Issue HTTP âEURoePUTâEUR� to
> /redfish/v1/systems/SYS/Bios</text>
> +    <path d="M2385 1906.14 3728.02 1906.14 3728.02 1911.86 2385
> 1911.86ZM3723.43 1895.25 3750.93 1909 3723.43 1922.75Z"
> fill="#8C8C8C"/>
> +    <rect x="342.5" y="1008.5" width="377" height="199" stroke="#CDCDCD"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#404040"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 391.759 1095)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 458.217 1154)">driver</text>
> +    <rect x="397.5" y="1063.5" width="377" height="199" stroke="#CDCDCD"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#404040"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 446.759 1150)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 513.217 1209)">driver</text>
> +    <rect x="452.5" y="1118.5" width="377" height="199" stroke="#CDCDCD"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#404040"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 501.759 1205)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 568.217 1264)">driver</text>
> +    <rect x="507.5" y="1173.5" width="377" height="199" stroke="#CDCDCD"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#404040"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 556.759 1260)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 623.217 1319)">driver</text>
> +    <path d="M22.9158-2.86458 1467.45-2.86422 1467.45 2.86494
> 22.9158 2.86459ZM27.5 13.75 0 0 27.5-13.75Z" fill="#8C8C8C"
> transform="matrix(-1 0 0 1 2379.45 1453)"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="83" transform="matrix(1 0 0 1 289.433
> 610)">Provisioning:</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="50" transform="matrix(1 0 0 1
> 289.433 679)">BIOS to BMC</text>
> +  </g>
> +</svg>
> diff --git a/RedfishClientPkg/Documents/Media/redfish-feature-driver-call-
> flow.svg b/RedfishClientPkg/Documents/Media/redfish-feature-driver-call-
> flow.svg
> new file mode 100755
> index 00000000..acea6b44
> --- /dev/null
> +++ b/RedfishClientPkg/Documents/Media/redfish-feature-driver-call-
> flow.svg
> @@ -0,0 +1,133 @@
> +<svg width="4287" height="2303" style="background-color:white"
> xmlns="http://www.w3.org/2000/svg"
> xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
> overflow="hidden">
> +  <defs>
> +    <clipPath id="clip0">
> +      <rect x="29" y="171" width="4287" height="2303"/>
> +    </clipPath>
> +  </defs>
> +  <g clip-path="url(#clip0)" transform="translate(-29 -171)">
> +    <rect x="33" y="171" width="1544" height="436" fill="#F2F2F2"/>
> +    <path d="M3300 305.835C3300 231.368 3360.37 171 3434.84
> 171L3974.16 171C4048.63 171 4109 231.368 4109 305.835L4109
> 1758.16C4109 1832.63 4048.63 1893 3974.16 1893L3434.84
> 1893C3360.37 1893 3300 1832.63 3300 1758.16Z" fill="#E8E8E8" fill-
> rule="evenodd"/>
> +    <path d="M616 846C616 827.222 631.223 812 650.001 812L1142
> 812C1160.78 812 1176 827.222 1176 846L1176 982C1176 1000.78
> 1160.78 1016 1142 1016L650.001 1016C631.223 1016 616 1000.78 616
> 982Z" fill="#76B900" fill-rule="evenodd"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 703.081 901)">Redfish Feature </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 756.935 960)">Core Driver</text>
> +    <rect x="30.5001" y="635.5" width="797" height="144"
> stroke="#000000" stroke-width="3.4375" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 63.3886 702)">Event
> driven</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="37" transform="matrix(1 0 0 1
> 63.3886 751)">PcdEdkIIRedfishFeatureDriverStartupEventGuid</text>
> +    <path d="M0.11336-2.86234 6.42586-2.61234 12.9907-1.77865
> 19.4637-0.428434 25.9229 1.43627 32.3153 3.81669 38.6329 6.70925
> 44.8331 9.96451 50.9302 13.6801 56.9417 17.8314 62.8126 22.3572
> 68.5498 27.2608 74.153 32.5411 84.7977 44.1253 94.8188 56.9226
> 104.013 70.7936 112.257 85.6759 119.538 101.424 125.742 117.799
> 130.688 134.762 134.365 152.159 135.732 164.561 130.036 165.182
> 128.76 153.341 125.187 136.363 120.383 119.826 114.337 103.826
> 107.243 88.4491 99.2365 73.9564 90.3062 60.4524 80.5773 47.9997
> 70.222 36.7089 64.8252 31.6142 59.3124 26.8928 53.6833 22.5436
> 47.9448 18.5699 42.1669 15.0355 36.2421 11.9158 30.3096 9.1833
> 24.3271 6.93873 18.2863 5.17843 12.2593 3.90365 6.19914 3.11234-
> 0.11336 2.86234ZM146.247 159.259 134.621 187.722 118.826 161.343Z"
> fill="#8C8C8C" transform="matrix(1.83697e-16 1 1 -1.83697e-16 429
> 779)"/>
> +    <rect x="33.4998" y="1065.5" width="727" height="177"
> stroke="#BCBCBC" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#FFFFFF"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 65.7033
> 1129)">Ready</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 206.641 1129)">-
> </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 223.255
> 1129)">to</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 271.953 1129)">-
> </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 288.568
> 1129)">Provision Signal</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="37" transform="matrix(1 0 0 1
> 65.7033 1173)">gEfiRedfishClientFeatureReadyToProvisionin</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="37" transform="matrix(1 0 0 1
> 65.7033 1213)">gGuid</text>
> +    <rect x="33.4998" y="2310.5" width="727" height="144"
> stroke="#BCBCBC" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#FFFFFF"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 65.7037
> 2358)">After</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 182.006 2358)">-
> </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="55" transform="matrix(1 0 0 1 198.62
> 2358)">Provision Signal</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="37" transform="matrix(1 0 0 1
> 65.7037 2402)">gEfiRedfishClientFeatureAfterProvisioningG</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="37" transform="matrix(1 0 0 1
> 65.7037 2442)">uid</text>
> +    <path d="M898.61 1016 898.61 1153.86C898.61 1155.44 897.327
> 1156.72 895.745 1156.72L782.917 1156.72 782.917 1150.99 895.745
> 1150.99 892.881 1153.86 892.881 1016ZM787.5 1167.61 760 1153.86
> 787.5 1140.11Z" fill="#8C8C8C"/>
> +    <path d="M898.61 1016 898.61 2382.49C898.61 2384.08 897.327
> 2385.36 895.745 2385.36L782.917 2385.36 782.917 2379.63 895.745
> 2379.63 892.881 2382.49 892.881 1016ZM787.5 2396.24 760 2382.49
> 787.5 2368.74Z" fill="#8C8C8C"/>
> +    <path d="M1192.5 1194.67C1192.5 1181.32 1203.32 1170.5 1216.67
> 1170.5L1690.33 1170.5C1703.68 1170.5 1714.5 1181.32 1714.5
> 1194.67L1714.5 1291.33C1714.5 1304.68 1703.68 1315.5 1690.33
> 1315.5L1216.67 1315.5C1203.32 1315.5 1192.5 1304.68 1192.5
> 1291.33Z" stroke="#008564" stroke-width="9.16667" stroke-
> linejoin="round" stroke-miterlimit="10" fill-rule="evenodd"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 1313.38
> 1258)">Service Root</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="48" transform="matrix(1 0 0 1 1192.27
> 1131)">/redfish/v1</text>
> +    <path d="M0-2.86458 226.791-2.86458C228.373-2.86458 229.656-
> 1.58207 229.656 0L229.656 273.147 223.927 273.147 223.927 0 226.791
> 2.86458 0 2.86458ZM240.541 268.564 226.791 296.064 213.041
> 268.564Z" fill="#8C8C8C" transform="matrix(1.83697e-16 1 1 -1.83697e-16
> 896 1016)"/>
> +    <path d="M1629.5 1428.67C1629.5 1415.32 1640.32 1404.5 1653.67
> 1404.5L2126.33 1404.5C2139.68 1404.5 2150.5 1415.32 2150.5
> 1428.67L2150.5 1525.33C2150.5 1538.68 2139.68 1549.5 2126.33
> 1549.5L1653.67 1549.5C1640.32 1549.5 1629.5 1538.68 1629.5
> 1525.33Z" stroke="#008564" stroke-width="9.16667" stroke-
> linejoin="round" stroke-miterlimit="10" fill-rule="evenodd"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 1681.69
> 1462)">ComputerSystemC</text>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 1792.26
> 1521)">ollection</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="48" transform="matrix(1 0 0 1 1626.06
> 1376)">/redfish/v1/Systems</text>
> +    <path d="M0-2.86458 460.879-2.86458C462.461-2.86458 463.743-
> 1.58207 463.743 0L463.743 709.637 458.014 709.637 458.014 0 460.879
> 2.86458 0 2.86458ZM474.629 705.053 460.879 732.553 447.129
> 705.053Z" fill="#8C8C8C" transform="matrix(1.83697e-16 1 1 -1.83697e-16
> 896 1016)"/>
> +    <path d="M2512.5 1427.5C2512.5 1414.25 2523.25 1403.5 2536.5
> 1403.5L3009.5 1403.5C3022.75 1403.5 3033.5 1414.25 3033.5
> 1427.5L3033.5 1523.5C3033.5 1536.75 3022.75 1547.5 3009.5
> 1547.5L2536.5 1547.5C2523.25 1547.5 2512.5 1536.75 2512.5 1523.5Z"
> stroke="#008564" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill-rule="evenodd"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 2579.22
> 1490)">ComputerSystem</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="48" transform="matrix(1 0 0 1 2510.53
> 1371)">/redfish/v1/Systems/SYS</text>
> +    <path d="M0.0107384-2.86456 338.69-1.59496 338.668 4.13417-
> 0.0107384 2.86456ZM334.147-12.4975 361.595 1.35551 334.044
> 15.0023Z" fill="#8C8C8C" transform="matrix(1 0 0 -1 2150 1476.36)"/>
> +    <path d="M1889.5 1748.67C1889.5 1735.32 1900.32 1724.5 1913.67
> 1724.5L2387.33 1724.5C2400.68 1724.5 2411.5 1735.32 2411.5
> 1748.67L2411.5 1845.33C2411.5 1858.68 2400.68 1869.5 2387.33
> 1869.5L1913.67 1869.5C1900.32 1869.5 1889.5 1858.68 1889.5
> 1845.33Z" stroke="#008564" stroke-width="9.16667" stroke-
> linejoin="round" stroke-miterlimit="10" fill-rule="evenodd"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 2103.34
> 1812)">Bios</text>
> +    <path d="M0-2.86458 780.807-2.86458C782.389-2.86458 783.672-
> 1.58207 783.672 0L783.672 970.304 777.943 970.304 777.943 0 780.807
> 2.86458 0 2.86458ZM794.557 965.718 780.807 993.218 767.057
> 965.718Z" fill="#8C8C8C" transform="matrix(1.83697e-16 1 1 -1.83697e-16
> 896 1016)"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="48" transform="matrix(1 0 0 1 1894.92
> 1693)">/redfish/v1/Systems/SYS/Bios</text>
> +    <path d="M2053.5 2040.5C2053.5 2027.25 2064.25 2016.5 2077.5
> 2016.5L2551.5 2016.5C2564.75 2016.5 2575.5 2027.25 2575.5
> 2040.5L2575.5 2136.5C2575.5 2149.75 2564.75 2160.5 2551.5
> 2160.5L2077.5 2160.5C2064.25 2160.5 2053.5 2149.75 2053.5 2136.5Z"
> stroke="#008564" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill-rule="evenodd"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 2106.47
> 2103)">MemoryCollection</text>
> +    <path d="M0-2.86458 1072.19-2.86458C1073.77-2.86458 1075.05-
> 1.58207 1075.05 0L1075.05 1134.13 1069.33 1134.13 1069.33 0 1072.19
> 2.86458 0 2.86458ZM1085.94 1129.55 1072.19 1157.05 1058.44
> 1129.55Z" fill="#8C8C8C" transform="matrix(1.83697e-16 1 1 -1.83697e-16
> 896 1016)"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="48" transform="matrix(1 0 0 1 2062.37
> 1981)">/redfish/v1/Systems/SYS/Memory</text>
> +    <path d="M2920.5 2040.5C2920.5 2027.25 2931.25 2016.5 2944.5
> 2016.5L3418.5 2016.5C3431.75 2016.5 3442.5 2027.25 3442.5
> 2040.5L3442.5 2136.5C3442.5 2149.75 3431.75 2160.5 3418.5
> 2160.5L2944.5 2160.5C2931.25 2160.5 2920.5 2149.75 2920.5 2136.5Z"
> stroke="#008564" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill-rule="evenodd"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 3085.32
> 2103)">Memory</text>
> +    <path d="M2.98962e-06-2.86458 322.881-2.86425 322.881 2.86492-
> 2.98962e-06 2.86458ZM318.298-13.7497 345.798 0.000360892 318.298
> 13.7503Z" fill="#8C8C8C" transform="matrix(1 0 0 -1 2575 2088)"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="183" transform="matrix(1 0 0 1 2263.52
> 2245)">âEUR¦</text>
> +    <path d="M3371.5 822.5C3371.5 809.245 3382.25 798.5 3395.5
> 798.5L4017.5 798.5C4030.75 798.5 4041.5 809.245 4041.5 822.5L4041.5
> 918.5C4041.5 931.755 4030.75 942.5 4017.5 942.5L3395.5
> 942.5C3382.25 942.5 3371.5 931.755 3371.5 918.5Z" stroke="#008564"
> stroke-width="9.16667" stroke-linejoin="round" stroke-miterlimit="10" fill-
> rule="evenodd"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3657.66
> 885)">Bios</text>
> +    <rect x="3371" y="601" width="670" height="144" fill="#008564"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3486.36
> 688)">Redfish foundation</text>
> +    <rect x="3371" y="218" width="670" height="145" fill="#5E5E5E"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3474.33
> 306)">BMC Redfish service</text>
> +    <path d="M2.86458-1.95531e-05 2.86479 29.9551-2.86438 29.9552-
> 2.86458 1.95531e-05ZM13.7502 25.3717 0.000360892 52.8718-13.7498
> 25.3719Z" fill="#8C8C8C" transform="matrix(1 0 0 -1 3706 797.872)"/>
> +    <path d="M2.86456-0.0103569 2.94628 22.59-2.78285 22.6107-
> 2.86456 0.0103569ZM13.8151 17.9673 0.164567 45.5168-13.6848
> 18.0667Z" fill="#8C8C8C" transform="matrix(1 0 0 -1 3706 600.517)"/>
> +    <rect x="3371" y="981" width="670" height="145" fill="#0071C5"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3434.8
> 1069)">Redfish Platform Config</text>
> +    <rect x="3374" y="1304" width="670" height="144" fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3610.58
> 1391)">EDK2 HII</text>
> +    <rect x="3377" y="1483" width="670" height="145" fill="#890C58"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3552.42
> 1571)">Chipset driver</text>
> +    <rect x="3377" y="1666" width="670" height="144" fill="#5D1682"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 3670.44
> 1753)">HW</text>
> +    <path d="M3708.86 942 3708.86 958.191 3703.14 958.191 3703.14
> 942ZM3719.75 953.607 3706 981.107 3692.25 953.608Z" fill="#8C8C8C"/>
> +    <path d="M3708.86 1125.94 3712.02 1280.79 3706.29 1280.9 3703.14
> 1126.06ZM3722.81 1275.98 3709.62 1303.76 3695.31 1276.54Z"
> fill="#8C8C8C"/>
> +    <path d="M3711.86 1447.79 3712.77 1460.37 3707.05 1460.78
> 3706.14 1448.21ZM3723.29 1455.01 3711.57 1483.43 3695.87 1457Z"
> fill="#8C8C8C"/>
> +    <path d="M3714.86 1628 3714.86 1643.16 3709.14 1643.16 3709.14
> 1628ZM3725.75 1638.57 3712 1666.07 3698.25 1638.57Z"
> fill="#8C8C8C"/>
> +    <rect x="3371" y="411" width="670" height="144" fill="#0071C5" fill-
> opacity="0.501961"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3606.27
> 498)">Network</text>
> +    <path d="M3703.3 411.234 3703.21 385.926 3708.94 385.907 3709.03
> 411.215ZM3692.34 390.547 3706 363 3719.84 390.453Z" fill="#8C8C8C"/>
> +    <path d="M0-2.86458 22.9167-2.86458 22.9167 2.86458 0
> 2.86458ZM40.1042-2.86458 63.0208-2.86458 63.0208 2.86458 40.1042
> 2.86458ZM80.2083-2.86458 103.125-2.86458 103.125 2.86458 80.2083
> 2.86458ZM120.312-2.86458 143.229-2.86458 143.229 2.86458 120.312
> 2.86458ZM160.417-2.86458 183.333-2.86458 183.333 2.86458 160.417
> 2.86458ZM200.521-2.86458 223.438-2.86458 223.438 2.86458 200.521
> 2.86458ZM240.625-2.86458 263.542-2.86458 263.542 2.86458 240.625
> 2.86458ZM280.729-2.86458 303.646-2.86458 303.646 2.86458 280.729
> 2.86458ZM320.833-2.86458 343.75-2.86458 343.75 2.86458 320.833
> 2.86458ZM360.938-2.86458 383.854-2.86458 383.854 2.86458 360.938
> 2.86458ZM401.042-2.86458 423.958-2.86458 423.958 2.86458 401.042
> 2.86458ZM441.146-2.86458 464.062-2.86458 464.062 2.86458 441.146
> 2.86458ZM481.25-2.86458 504.167-2.86458 504.167 2.86458 481.25
> 2.86458ZM521.354-2.86458 544.271-2.86458 544.271 2.86458 521.354
> 2.86458ZM561.458-2.86458 584.375-2.86458 584.375 2.86458 561.458
> 2.86458ZM601.562-2.86458
> + 624.479-2.86458 624.479 2.86458 601.562 2.86458ZM641.667-2.86458
> 664.583-2.86458 664.583 2.86458 641.667 2.86458ZM681.771-2.86458
> 704.688-2.86458 704.688 2.86458 681.771 2.86458ZM721.875-2.86458
> 744.52-2.86458C746.102-2.86458 747.385-1.58207 747.385 0L747.385
> 0.271391 741.656 0.271391 741.656 0 744.52 2.86458 721.875
> 2.86458ZM747.385 17.4589 747.385 40.3756 741.656 40.3756 741.656
> 17.4589ZM747.385 57.5631 747.385 80.4797 741.656 80.4797 741.656
> 57.5631ZM747.385 97.6672 747.385 120.584 741.656 120.584 741.656
> 97.6672ZM747.385 137.771 747.385 160.688 741.656 160.688 741.656
> 137.771ZM747.385 177.876 747.385 200.792 741.656 200.792 741.656
> 177.876ZM747.385 217.98 747.385 240.896 741.656 240.896 741.656
> 217.98ZM747.385 258.084 747.385 281.001 741.656 281.001 741.656
> 258.084ZM747.385 298.188 747.385 321.105 741.656 321.105 741.656
> 298.188ZM747.385 338.292 747.385 361.209 741.656 361.209 741.656
> 338.292ZM747.385 378.396 747.385 401.313 741.656 401.313 741.656
> 378.396ZM747.385 418.501
> + 747.385 441.417 741.656 441.417 741.656 418.501ZM747.385 458.605
> 747.385 481.521 741.656 481.521 741.656 458.605ZM747.385 498.709
> 747.385 521.626 741.656 521.626 741.656 498.709ZM747.385 538.813
> 747.385 561.73 741.656 561.73 741.656 538.813ZM747.385 578.917
> 747.385 601.834 741.656 601.834 741.656 578.917ZM747.385 619.021
> 747.385 641.938 741.656 641.938 741.656 619.021ZM747.385 659.126
> 747.385 682.042 741.656 682.042 741.656 659.126ZM747.385 699.23
> 747.385 722.146 741.656 722.146 741.656 699.23ZM747.385 739.334
> 747.385 762.251 741.656 762.251 741.656 739.334ZM747.385 779.438
> 747.385 802.355 741.656 802.355 741.656 779.438ZM747.385 819.542
> 747.385 842.459 741.656 842.459 741.656 819.542ZM747.385 859.646
> 747.385 882.563 741.656 882.563 741.656 859.646ZM747.385 899.751
> 747.385 922.667 741.656 922.667 741.656 899.751ZM758.063 923.447
> 780.98 923.447 780.98 929.176 758.063 929.176ZM798.168 923.447
> 821.084 923.447 821.084 929.176 798.168 929.176ZM838.272 923.447
> 861.188 923.447 861.188
> + 929.176 838.272 929.176ZM878.376 923.447 901.293 923.447 901.293
> 929.176 878.376 929.176ZM918.48 923.447 937.198 923.447 937.198
> 929.176 918.48 929.176ZM932.615 912.562 960.115 926.312 932.615
> 940.062Z" fill="#008564" transform="matrix(1 0 0 -1 2411 1796.31)"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="50" transform="matrix(1 0 0 1 3733.97
> 1194)">x</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="50" transform="matrix(1 0 0 1 3755.74 1194)">-
> </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="50" transform="matrix(1 0 0 1 3771.21
> 1194)">uefi</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="50" transform="matrix(1 0 0 1 3849.7 1194)">-
> </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="50" transform="matrix(1 0 0 1 3865.17
> 1194)">redfish</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="50" transform="matrix(1 0 0 1 4007.25 1194)">-
> </text>
> +    <text fill="#0071C5" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 4022.72
> 1194)">Bios.vA_B_C</text>
> +    <text fill="#0071C5" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="50" transform="matrix(1 0 0 1 3733.97
> 1255)">/Bios/Attributes/XXX</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="700" font-size="41" transform="matrix(1 0 0 1
> 380.14 1659)">Redfish Feature Protocol</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="700" font-size="41" transform="matrix(1 0 0 1
> 2829.58 2249)">Redfish Resource Config Protocol</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="700" font-size="41" transform="matrix(1 0 0 1
> 2426.51 1602)">Redfish Resource Config Protocol</text>
> +    <rect x="61.5" y="347.5" width="1093" height="111" stroke="#000000"
> stroke-width="3.4375" stroke-linejoin="round" stroke-miterlimit="10"
> fill="none"/>
> +    <path d="M406.025 362.408 469.046 362.408 469.046 440.408
> 406.025 440.408Z" fill="#C0C0C0" fill-rule="evenodd"/>
> +    <path d="M496.546 362.408 715.4 362.408 715.4 440.408 496.546
> 440.408Z" fill="#FFFF00" fill-rule="evenodd"/>
> +    <path d="M742.9 362.408 836.858 362.408 836.858 440.408 742.9
> 440.408Z" fill="#00FF00" fill-rule="evenodd"/>
> +    <path d="M864.358 362.408 976.65 362.408 976.65 440.408 864.358
> 440.408Z" fill="#FF00FF" fill-rule="evenodd"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 165.4
> 423)">/redfish/</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 406.025
> 423)">v1</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 469.046
> 423)">/</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 496.546
> 423)">Systems</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 715.4 423)">/</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 742.9
> 423)">SYS</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 836.858
> 423)">/</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 864.358
> 423)">Bios</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 976.65
> 423)">/âEUR¦</text>
> +    <path d="M62.9999 316.844 1336.22 316.844 1336.22 327.157
> 62.9999 327.156ZM62.9999 337.469C54.4567 337.469 47.5311 330.543
> 47.5312 322 47.5312 313.457 54.4567 306.531 62.9999 306.531 71.5431
> 306.531 78.4687 313.457 78.4687 322 78.4687 330.543 71.5431 337.469
> 62.9999 337.469ZM1331.06 306.532 1362 322 1331.06 337.469Z"
> fill="#890857"/>
> +    <rect x="462.5" y="483.5" width="285" height="87" fill="#CDCDCD"/>
> +    <path d="M438.751 483.5 438.751 570.5Z" stroke="#000000" stroke-
> width="9.16667" stroke-linejoin="round" stroke-miterlimit="10" fill="none"
> fill-rule="evenodd"/>
> +    <path d="M438.751 499.813 414.999 499.813 399.811 442.936"
> stroke="#000000" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none" fill-rule="evenodd"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="41" transform="matrix(1 0 0 1 497.682
> 539)">Service Root</text>
> +    <rect x="629.5" y="188.5" width="413" height="102" fill="#CDCDCD"/>
> +    <path d="M595.085 188.5 595.085 290.5Z" stroke="#000000" stroke-
> width="9.16667" stroke-linejoin="round" stroke-miterlimit="10" fill="none"
> fill-rule="evenodd"/>
> +    <path d="M595.085 207.625 560.665 207.625 528.732 372.029"
> stroke="#000000" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none" fill-rule="evenodd"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="41" transform="matrix(1 0 0 1 682.83
> 228)">Computer System </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="41" transform="matrix(1 0 0 1 749.861
> 272)">Collection</text>
> +    <rect x="903.5" y="470.5" width="279" height="101" fill="#CDCDCD"/>
> +    <path d="M880.251 470.5 880.251 571.5Z" stroke="#000000" stroke-
> width="9.16667" stroke-linejoin="round" stroke-miterlimit="10" fill="none"
> fill-rule="evenodd"/>
> +    <path d="M880.251 489.438 856.999 489.438 806.93 438.596"
> stroke="#000000" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none" fill-rule="evenodd"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="41" transform="matrix(1 0 0 1 956.072
> 510)">Computer </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="41" transform="matrix(1 0 0 1 980.134
> 554)">System</text>
> +    <rect x="1221.5" y="191.5" width="279" height="102" fill="#CDCDCD"/>
> +    <path d="M1198.25 191.5 1198.25 293.5Z" stroke="#000000" stroke-
> width="9.16667" stroke-linejoin="round" stroke-miterlimit="10" fill="none"
> fill-rule="evenodd"/>
> +    <path d="M1198.25 210.625 1175 210.625 944.866 379.72"
> stroke="#000000" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none" fill-rule="evenodd"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="41" transform="matrix(1 0 0 1 1324.41
> 254)">Bios</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="55" transform="matrix(1 0 0 1 65.5579
> 241)">Register</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="48" transform="matrix(1 0 0 1 2943.32
> 1981)">/redfish/v1/Systems/SYS/</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="48" transform="matrix(1 0 0 1 3469.25
> 1981)">Memory/Dimm1</text>
> +    <path d="M2390.33 1590.83 2383.15 1590.2C2383 1590.19 2382.85
> 1590.16 2382.71 1590.13L2375.59 1588.38 2372.75 1587.27 2374.89
> 1581.96 2376.95 1582.81 2384.08 1584.56 2383.64 1584.49 2390.83
> 1585.12ZM2367.15 1584.88 2361.06 1581.47 2354.16 1576.55 2352.39
> 1575 2356.21 1570.72 2357.5 1571.89 2363.85 1576.47 2369.95
> 1579.88ZM2348.12 1571.18 2347.61 1570.73 2341.43 1564.18 2336.44
> 1557.94 2340.93 1554.37 2345.6 1560.26 2351.42 1566.46 2351.93
> 1566.91ZM2333.04 1553.04 2330.39 1549.06 2325.59 1540.71 2324.23
> 1537.81 2329.42 1535.38 2330.57 1537.86 2335.15 1545.88 2337.8
> 1549.86ZM2321.8 1532.62 2321.42 1531.81 2317.85 1522.57 2315.92
> 1516.02 2321.41 1514.41 2323.19 1520.5 2326.61 1529.38 2326.99
> 1530.19ZM2314.56 1510.07 2313.97 1506.17 2319.64 1505.32 2320.22
> 1509.22ZM2303.72 1511.98 2314 1483 2331.02 1508.61Z"
> fill="#8C8C8C"/>
> +    <path d="M2793.67 2238.69 2782.92 2237.94 2776.27 2236.64
> 2777.39 2231.02 2783.32 2232.22 2794.07 2232.97ZM2770.36 2235.29
> 2761.04 2232.24 2754.03 2229.05 2756.41 2223.84 2762.82 2226.8
> 2772.14 2229.85ZM2748.66 2226.39 2740.31 2221.56 2733.96 2216.95
> 2737.33 2212.32 2743.18 2216.6 2751.52 2221.43ZM2729.23 2213.33
> 2721.44 2206.63 2716.42 2201.54 2720.5 2197.52 2725.18 2202.29
> 2732.96 2208.99ZM2712.26 2197.23 2704.97 2188.34 2701.58 2183.51
> 2706.27 2180.22 2709.4 2184.7 2716.69 2193.6ZM2698.29 2178.81
> 2697.84 2178.16 2691.58 2167.39 2689.69 2163.39 2694.88 2160.95
> 2696.54 2164.52 2702.53 2174.88 2702.99 2175.53ZM2687.26 2158.2
> 2686.28 2156.11 2682 2144.51 2681.3 2141.43 2686.9 2140.21 2687.37
> 2142.53 2691.46 2153.68 2692.44 2155.77ZM2680.08 2135.83 2679.1
> 2131.34 2684.7 2130.12 2685.68 2134.61ZM2668.84 2137.02 2679 2108
> 2696.12 2133.54Z" fill="#8C8C8C"/>
> +    <path d="M587.149 1603.19 587.587 1598.75C587.602 1598.6 587.63
> 1598.45 587.67 1598.3L588.858 1593.86C588.902 1593.69 588.961
> 1593.53 589.034 1593.38L591.096 1589 593.017 1585.91 597.868
> 1588.96 596.278 1591.44 594.216 1595.82 594.392 1595.34 593.205
> 1599.78 593.288 1599.32 592.851 1603.75ZM596.687 1581.05 597.791
> 1579.71 602.21 1575.21 607.242 1570.81 609.766 1568.92 613.187
> 1573.52 611.007 1575.13 606.29 1579.23 602.208 1583.36 601.104
> 1584.7ZM614.532 1565.49 619.348 1562.28 626.283 1558.14 629.459
> 1556.44 632.158 1561.49 629.217 1563.06 622.526 1567.04 617.71
> 1570.25ZM634.629 1553.72 641.876 1550.21 650.309 1546.46 652.635
> 1551.69 644.374 1555.36 637.126 1558.87ZM655.715 1544.27 659.492
> 1542.75 669.004 1539.22 671.966 1538.22 673.809 1543.64 670.996
> 1544.6 661.633 1548.07 657.855 1549.59ZM677.391 1536.38 679.016
> 1535.82 689.374 1532.5 693.921 1531.19 695.499 1536.7 691.126
> 1537.95 680.859 1541.25 679.234 1541.8ZM699.429 1529.61 700.148
> 1529.41 716.155 1525.31 717.574
> + 1530.87 701.726 1534.91 701.007 1535.12ZM721.706 1523.9 722.728
> 1523.64 738.621 1520.25 739.813 1525.86 724.147 1529.19 723.124
> 1529.45ZM744.225 1519.06 746.654 1518.55 761.26 1516.04 762.227
> 1521.69 747.846 1524.15 745.417 1524.67ZM766.907 1515.07 771.579
> 1514.27 784.02 1512.61 784.78 1518.29 772.546 1519.92 767.874
> 1520.72ZM789.698 1511.85 797.37 1510.82 806.874 1509.89 807.431
> 1515.59 798.13 1516.5 790.458 1517.53ZM812.576 1509.33 823.722
> 1508.25 829.83 1507.92 830.132 1513.64 824.278 1513.95 813.133
> 1515.04ZM835.551 1507.62 852.715 1506.71 853.017 1512.43 835.853
> 1513.34ZM849.88 1495.82 877.659 1509 850.449 1523.32Z"
> fill="#8C8C8C"/>
> +  </g>
> +</svg>
> diff --git a/RedfishClientPkg/Documents/Media/redfish-foundation-driver-
> stack.svg b/RedfishClientPkg/Documents/Media/redfish-foundation-driver-
> stack.svg
> new file mode 100755
> index 00000000..79694335
> --- /dev/null
> +++ b/RedfishClientPkg/Documents/Media/redfish-foundation-driver-
> stack.svg
> @@ -0,0 +1,75 @@
> +<svg width="2492" height="1877" style="background-color:white"
> xmlns="http://www.w3.org/2000/svg"
> xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
> overflow="hidden">
> +  <defs>
> +    <clipPath id="clip0">
> +      <rect x="278" y="517" width="2492" height="1877"/>
> +    </clipPath>
> +    <linearGradient x1="2572" y1="1054" x2="2572" y2="1294"
> gradientUnits="userSpaceOnUse" spreadMethod="reflect" id="fill1">
> +      <stop offset="0" stop-color="#D2D2D2"/>
> +      <stop offset="0.5" stop-color="#C8C8C8"/>
> +      <stop offset="1" stop-color="#C0C0C0"/>
> +    </linearGradient>
> +  </defs>
> +  <g clip-path="url(#clip0)" transform="translate(-278 -517)">
> +    <rect x="278" y="958" width="2163" height="876" fill="#DAE3F3" fill-
> opacity="0.501961"/>
> +    <path d="M1.19218-3.22415 20.5371 3.92891 18.1527 10.3772-
> 1.19218 3.22415ZM26.9853 6.31326 46.3302 13.4663 43.9459 19.9146
> 24.601 12.7616ZM52.7785 15.8507 72.1234 23.0037 69.7391 29.452
> 50.3942 22.299ZM78.5717 25.3881 97.9166 32.5411 95.5322 38.9894
> 76.1873 31.8364ZM104.365 34.9255 123.71 42.0785 121.325 48.5268
> 101.981 41.3738ZM130.158 44.4629 149.503 51.6159 147.119 58.0642
> 127.774 50.9112ZM155.951 54.0003 175.296 61.1533 172.912 67.6016
> 153.567 60.4486ZM181.744 63.5377 201.089 70.6908 198.705 77.139
> 179.36 69.986ZM207.538 73.0751 226.882 80.2282 224.498 86.6765
> 205.153 79.5234ZM233.331 82.6125 252.676 89.7656 250.291 96.2139
> 230.946 89.0608ZM259.124 92.1499 278.469 99.303 276.084 105.751
> 256.74 98.5982ZM284.917 101.687 304.262 108.84 301.878 115.289
> 282.533 108.136ZM310.71 111.225 330.055 118.378 327.671 124.826
> 308.326 117.673ZM336.503 120.762 355.848 127.915 353.464 134.363
> 334.119 127.21ZM362.297 130.3 381.641 137.453 379.257 143.901
> 359.912 136.748ZM388.09 139.837
> + 407.435 146.99 405.05 153.438 385.705 146.285ZM413.883 149.374
> 433.228 156.527 430.843 162.976 411.499 155.823ZM439.676 158.912
> 459.021 166.065 456.637 172.513 437.292 165.36ZM465.469 168.449
> 484.814 175.602 482.43 182.05 463.085 174.897ZM491.262 177.987
> 510.607 185.14 508.223 191.588 488.878 184.435ZM517.056 187.524
> 536.4 194.677 534.016 201.125 514.671 193.972ZM542.849 197.061
> 562.194 204.214 559.809 210.663 540.464 203.51ZM568.642 206.599
> 587.987 213.752 585.602 220.2 566.258 213.047ZM594.435 216.136
> 613.78 223.289 611.396 229.738 592.051 222.584ZM620.228 225.674
> 639.573 232.827 637.189 239.275 617.844 232.122ZM646.021 235.211
> 665.366 242.364 662.982 248.812 643.637 241.659ZM671.815 244.748
> 691.16 251.901 688.775 258.35 669.43 251.197ZM697.608 254.286
> 716.953 261.439 714.568 267.887 695.224 260.734ZM723.401 263.823
> 742.746 270.976 740.362 277.425 721.017 270.271ZM744.812 260.745
> 765.836 283.179 735.275 286.538Z" fill="#70AD47" transform="matrix(1 0
> 0 -1 594.5 1048.68)"/>
> +    <rect x="392.5" y="1881.5" width="622" height="142" stroke="#41719C"
> stroke-width="4.58333" stroke-miterlimit="8" fill="#5B9BD5"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 652.979
> 1972)">NIC</text>
> +    <rect x="392.5" y="1515.5" width="622" height="251" stroke="#ED7D31"
> stroke-width="4.58333" stroke-miterlimit="8" fill="#FBE5D6"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 450.739
> 1657)">UEFI Network Stack</text>
> +    <rect x="1703.5" y="1515.5" width="622" height="251"
> stroke="#C55A11" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#FFC000"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 1773.26
> 1660)">In</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 1828.84
> 1660)">-</text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 1852.33
> 1660)">band channel</text>
> +    <rect x="807.5" y="1049.5" width="207" height="287" stroke="#2F5597"
> stroke-width="4.58333" stroke-miterlimit="8" fill="#ADB9CA"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="46" transform="matrix(1 0 0
> 1 855.72 1182)">REST </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="46" transform="matrix(1 0 0
> 1 882.074 1231)">EX</text>
> +    <rect x="393.5" y="1194.5" width="400" height="138" stroke="#787878"
> stroke-width="4.58333" stroke-miterlimit="8" fill="#A5A5A5"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="41" transform="matrix(1 0 0 1 433.577
> 1254)">Redfish Discover </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="41" transform="matrix(1 0 0 1 512.067
> 1299)">Protocol</text>
> +    <path d="M396.5 2234C396.5 2216.6 410.603 2202.5 428 2202.5L2294
> 2202.5C2311.4 2202.5 2325.5 2216.6 2325.5 2234L2325.5 2360C2325.5
> 2377.4 2311.4 2391.5 2294 2391.5L428 2391.5C410.603 2391.5 396.5
> 2377.4 396.5 2360Z" stroke="#70AD47" stroke-width="4.58333" stroke-
> miterlimit="8" fill="#FFFFFF" fill-rule="evenodd"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 1158.18
> 2313)">Redfish Service</text>
> +    <rect x="396.5" y="519.5" width="1929" height="120" stroke="#000000"
> stroke-width="4.58333" stroke-miterlimit="8" fill="#767171"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 1100.89
> 596)">Redfish Application</text>
> +    <rect x="394.5" y="1048.5" width="400" height="138" stroke="#385723"
> stroke-width="4.58333" stroke-miterlimit="8" fill="#70AD47"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="46" transform="matrix(1 0 0 1 457.66
> 1105)">Redfish Config </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="46" transform="matrix(1 0 0 1 535.851
> 1155)">Driver</text>
> +    <path d="M2375 1054 2729 1054 2769 1094 2769 1294 2375 1294Z"
> stroke="#A5A5A5" stroke-width="2.29167" stroke-miterlimit="8"
> fill="url(#fill1)" fill-rule="evenodd"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 2474.57
> 1172)">SMBIOS </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 2465.7
> 1231)">Type 42</text>
> +    <rect x="1710" y="1879" width="615" height="142" fill="#4472C4" fill-
> opacity="0.501961"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="73" transform="matrix(1 0 0 1 1959.59
> 1972)">HW</text>
> +    <rect x="396.5" y="645.5" width="1929" height="120" stroke="#385723"
> stroke-width="3.4375" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#70AD47"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 994.903
> 720)">Redfish Config Handler Protocol</text>
> +    <path d="M3.17204-1.3246 11.1196 17.7076 4.77555 20.3568-3.17204
> 1.3246ZM13.7688 24.0517 21.7164 43.084 15.3723 45.7332 7.42475
> 26.7009ZM24.3656 49.4281 32.3132 68.4603 25.9691 71.1095 18.0215
> 52.0773ZM34.9624 74.8044 42.91 93.8366 36.5659 96.4858 28.6183
> 77.4536ZM45.5592 100.181 53.5068 119.213 47.1627 121.862 39.2151
> 102.83ZM56.156 125.557 64.1036 144.589 57.7595 147.238 49.8119
> 128.206ZM66.7528 150.933 74.7004 169.966 68.3563 172.615 60.4087
> 153.583ZM77.3496 176.31 85.2972 195.342 78.9531 197.991 71.0055
> 178.959ZM87.9464 201.686 95.894 220.718 89.5499 223.367 81.6023
> 204.335ZM98.5432 227.062 106.491 246.095 100.147 248.744 92.1991
> 229.712ZM109.14 252.439 114.093 264.301 107.749 266.95 102.796
> 255.088ZM121.843 256.098 119.752 286.772 96.4671 266.694Z"
> fill="#70AD47" transform="matrix(1 0 0 -1 1240.5 1052.27)"/>
> +    <path d="M1867.15 1057.88 1849.23 1047.68 1852.63 1041.7 1870.55
> 1051.91ZM1843.25 1044.28 1825.33 1034.07 1828.73 1028.1 1846.65
> 1038.3ZM1819.35 1030.67 1801.43 1020.47 1804.83 1014.49 1822.75
> 1024.7ZM1795.45 1017.07 1777.53 1006.86 1780.93 1000.89 1798.85
> 1011.09ZM1771.55 1003.46 1753.63 993.258 1757.03 987.284 1774.96
> 997.488ZM1747.66 989.857 1729.73 979.653 1733.13 973.679 1751.06
> 983.883ZM1723.76 976.252 1705.83 966.048 1709.23 960.073 1727.16
> 970.277ZM1699.86 962.647 1681.93 952.443 1685.34 946.468 1703.26
> 956.672ZM1675.96 949.042 1658.04 938.838 1661.44 932.863 1679.36
> 943.067ZM1652.06 935.437 1634.14 925.233 1637.54 919.258 1655.46
> 929.462ZM1628.16 921.831 1610.24 911.628 1613.64 905.653 1631.56
> 915.857ZM1604.26 908.226 1586.34 898.022 1589.74 892.048 1607.67
> 902.252ZM1580.37 894.621 1562.44 884.417 1565.84 878.443 1583.77
> 888.646ZM1556.47 881.016 1538.54 870.812 1541.94 864.837 1559.87
> 875.041ZM1532.57 867.411 1514.64 857.207 1518.04 851.232 1535.97
> 861.436ZM1508.67
> + 853.806 1490.74 843.602 1494.15 837.627 1512.07 847.831ZM1484.77
> 840.2 1466.85 829.997 1470.25 824.022 1488.17 834.226ZM1460.87
> 826.595 1442.95 816.391 1446.35 810.417 1464.27 820.621ZM1436.97
> 812.99 1419.05 802.786 1422.45 796.812 1440.37 807.015ZM1413.07
> 799.385 1395.15 789.181 1398.55 783.206 1416.48 793.41ZM1389.18
> 785.78 1378.72 779.825 1382.12 773.851 1392.58 779.805ZM1377.6
> 791.055 1360.5 765.5 1391.2 767.156Z" fill="#70AD47"/>
> +    <path d="M0-2.29167 146.945-2.29167 146.945 186.106 144.653
> 183.814 266.39 183.814 266.39 188.397 142.362 188.397 142.362 0
> 144.653 2.29167 0 2.29167ZM261.806 172.356 289.306 186.106 261.806
> 199.856Z" fill="#FF0000" transform="matrix(1.83697e-16 1 1 -1.83697e-16
> 1360.5 765.5)"/>
> +    <path d="M1571.77 1340.5 1571.77 1451.89 1362.5 1451.89 1364.79
> 1449.6 1364.79 1491.77 1360.21 1491.77 1360.21 1447.3 1569.48 1447.3
> 1567.19 1449.6 1567.19 1340.5ZM1376.25 1487.19 1362.5 1514.69
> 1348.75 1487.19Z" fill="#FF0000"/>
> +    <path d="M1364.79 1766.5 1364.79 1858.57 1360.21 1858.57 1360.21
> 1766.5ZM1376.25 1853.99 1362.5 1881.49 1348.75 1853.99Z"
> fill="#FF0000"/>
> +    <path d="M2573.09 1294 2573.09 1422.16 1901.85 1422.16 1901.85
> 1361.43 1904.15 1361.43 1904.15 1421.01 1903 1419.87 2571.94
> 1419.87 2570.8 1421.01 2570.8 1294ZM1889.25 1366.01 1903 1338.51
> 1916.75 1366.01Z" fill="#A5A5A5"/>
> +    <path d="M2573.22 1294 2573.22 1421.96 1249.85 1421.96 1249.85
> 1359.03 1252.15 1359.03 1252.15 1420.81 1251 1419.67 2572.07
> 1419.67 2570.93 1420.81 2570.93 1294ZM1237.25 1363.61 1251 1336.11
> 1264.75 1363.61Z" fill="#A5A5A5"/>
> +    <path d="M2573.26 1294 2573.26 1422.27 591.854 1422.27 591.854
> 1354.94 594.146 1354.94 594.146 1421.12 593 1419.98 2572.11 1419.98
> 2570.97 1421.12 2570.97 1294ZM579.25 1359.52 593 1332.02 606.75
> 1359.52Z" fill="#A5A5A5"/>
> +    <rect x="1465.5" y="1053.5" width="207" height="287"
> stroke="#2F5597" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#ADB9CA"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="46" transform="matrix(1 0 0
> 1 1513.76 1186)">REST </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="46" transform="matrix(1 0 0
> 1 1540.11 1235)">EX</text>
> +    <rect x="1051.5" y="1198.5" width="400" height="139"
> stroke="#787878" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#A5A5A5"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="41" transform="matrix(1 0 0 1 1091.62
> 1258)">Redfish Discover </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="41" transform="matrix(1 0 0 1 1170.11
> 1303)">Protocol</text>
> +    <rect x="1052.5" y="1052.5" width="400" height="138"
> stroke="#385723" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#70AD47"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="46" transform="matrix(1 0 0 1 1099.08
> 1111)">Redfish Config </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="46" transform="matrix(1 0 0 1 1186.17
> 1160)">Driver</text>
> +    <rect x="2117.5" y="1055.5" width="208" height="288"
> stroke="#2F5597" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#ADB9CA"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="46" transform="matrix(1 0 0
> 1 2165.89 1188)">REST </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="46" transform="matrix(1 0 0
> 1 2192.24 1237)">EX</text>
> +    <rect x="1703.5" y="1201.5" width="400" height="138"
> stroke="#787878" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#A5A5A5"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="41" transform="matrix(1 0 0 1 1743.75
> 1260)">Redfish Discover </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="41" transform="matrix(1 0 0 1 1822.23
> 1305)">Protocol</text>
> +    <rect x="1704.5" y="1055.5" width="401" height="138"
> stroke="#385723" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#70AD47"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="46" transform="matrix(1 0 0 1 1751.21
> 1113)">Redfish Config </text>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="46" transform="matrix(1 0 0 1 1838.3
> 1162)">Driver</text>
> +    <rect x="1051.5" y="1515.5" width="621" height="251"
> stroke="#ED7D31" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#FBE5D6"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 1109.41
> 1657)">UEFI Network Stack</text>
> +    <rect x="1051.5" y="1881.5" width="621" height="142"
> stroke="#41719C" stroke-width="4.58333" stroke-miterlimit="8"
> fill="#5B9BD5"/>
> +    <text font-family="Trebuchet MS,Trebuchet MS_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 1311.65
> 1972)">NIC</text>
> +    <path d="M2.29157-0.020976 3.72062 156.099-0.862519 156.141-
> 2.29157 0.020976ZM15.1365 151.411 1.63881 179.035-12.3623
> 151.662Z" fill="#FF0000" transform="matrix(-1 0 0 1 1362.14 2023.5)"/>
> +  </g>
> +</svg>
> diff --git a/RedfishClientPkg/Documents/Media/redfish-platform-config-
> protocol-stack.svg b/RedfishClientPkg/Documents/Media/redfish-platform-
> config-protocol-stack.svg
> new file mode 100755
> index 00000000..670c29bf
> --- /dev/null
> +++ b/RedfishClientPkg/Documents/Media/redfish-platform-config-protocol-
> stack.svg
> @@ -0,0 +1,99 @@
> +<svg width="3433" height="1895" style="background-color:white"
> xmlns="http://www.w3.org/2000/svg"
> xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
> overflow="hidden">
> +  <defs>
> +    <filter id="fx0" x="-10%" y="-10%" width="120%" height="120%"
> filterUnits="userSpaceOnUse" primitiveUnits="userSpaceOnUse">
> +      <feComponentTransfer color-interpolation-filters="sRGB">
> +        <feFuncR type="discrete" tableValues="0 0"/>
> +        <feFuncG type="discrete" tableValues="0 0"/>
> +        <feFuncB type="discrete" tableValues="0 0"/>
> +        <feFuncA type="linear" slope="0.380392" intercept="0"/>
> +      </feComponentTransfer>
> +      <feGaussianBlur stdDeviation="4.8119 4.8119"/>
> +    </filter>
> +    <clipPath id="clip1">
> +      <rect x="572" y="465" width="3433" height="1895"/>
> +    </clipPath>
> +    <clipPath id="clip2">
> +      <rect x="-5" y="13" width="863" height="130"/>
> +    </clipPath>
> +    <clipPath id="clip3">
> +      <rect x="0" y="0" width="883" height="139"/>
> +    </clipPath>
> +  </defs>
> +  <g clip-path="url(#clip1)" transform="translate(-572 -465)">
> +    <rect x="572" y="1277" width="3256" height="1083" fill="#C0E4FF" fill-
> opacity="0.4"/>
> +    <path d="M654.5 1778.17C654.5 1742.45 683.453 1713.5 719.168
> 1713.5L1793.83 1713.5C1829.55 1713.5 1858.5 1742.45 1858.5
> 1778.17L1858.5 2036.83C1858.5 2072.55 1829.55 2101.5 1793.83
> 2101.5L719.168 2101.5C683.453 2101.5 654.5 2072.55 654.5 2036.83Z"
> stroke="#A6A6A6" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" stroke-dasharray="36.6667 27.5" fill="none" fill-
> rule="evenodd"/>
> +    <path d="M690 978.669C690 922.518 735.518 877 791.668
> 877L1586.33 877C1642.48 877 1688 922.518 1688 978.669L1688
> 1385.33C1688 1441.48 1642.48 1487 1586.33 1487L791.668
> 1487C735.518 1487 690 1441.48 690 1385.33Z" fill="#D9D9D9" fill-
> rule="evenodd"/>
> +    <rect x="716" y="598" width="945" height="136" fill="#76B900"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 1026.14
> 683)">Setup Menu</text>
> +    <rect x="716.5" y="1114.5" width="945" height="136" stroke="#0070C0"
> stroke-width="9.16667" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#9E9E9E"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 916.711
> 1199)">EDK2 Setup Browser</text>
> +    <rect x="716" y="952" width="945" height="136" fill="#9E9E9E"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 917.571
> 1038)">EDK2 Display Engine</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 1122.4
> 545)">User</text>
> +    <rect x="716" y="1289" width="945" height="136" fill="#9E9E9E"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 941.92
> 1374)">EDK2 HII Database</text>
> +    <rect x="716.5" y="1757.5" width="377" height="199" stroke="#656565"
> stroke-width="9.16667" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 779.595
> 1842)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 838.88
> 1901)">driver</text>
> +    <rect x="1124.5" y="1757.5" width="377" height="199"
> stroke="#656565" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 1188
> 1842)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 1247.28
> 1901)">driver</text>
> +    <rect x="882.5" y="1856.5" width="377" height="199" stroke="#656565"
> stroke-width="9.16667" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 945.765
> 1941)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 1005.05
> 2000)">driver</text>
> +    <rect x="1313.5" y="1856.5" width="377" height="199"
> stroke="#656565" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 1376.4
> 1941)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="55" transform="matrix(1 0 0 1 1435.69
> 2000)">driver</text>
> +    <path d="M1191.86 756.917 1191.86 929.504 1186.14 929.504
> 1186.14 756.917ZM1175.25 761.5 1189 734 1202.75 761.5ZM1202.75
> 924.92 1189 952.42 1175.25 924.92Z" fill="#8C8C8C"/>
> +    <path d="M1185.86 1517.92 1185.86 1690.5 1180.14 1690.5 1180.14
> 1517.92ZM1169.25 1522.5 1183 1495 1196.75 1522.5ZM1196.75 1685.92
> 1183 1713.42 1169.25 1685.92Z" fill="#8C8C8C"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="55" transform="matrix(1 0 0 1
> 1247.51 801)">Graphic protocols</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="55" transform="matrix(1 0 0 1
> 1247.51 867)">Console input protocols</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="55" transform="matrix(1 0 0 1
> 1232.43 1574)">EFI Config Access Protocol</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="55" transform="matrix(1 0 0 1
> 1232.43 1640)">HII Database Protocol</text>
> +    <rect x="657.5" y="2152.5" width="1204" height="145"
> stroke="#008564" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="73" transform="matrix(1 0 0 1 1203.49
> 2245)">HW</text>
> +    <path d="M2422.5 1782C2422.5 1746.38 2451.38 1717.5 2487
> 1717.5L3562 1717.5C3597.62 1717.5 3626.5 1746.38 3626.5 1782L3626.5
> 2040C3626.5 2075.62 3597.62 2104.5 3562 2104.5L2487 2104.5C2451.38
> 2104.5 2422.5 2075.62 2422.5 2040Z" stroke="#A6A6A6" stroke-
> width="9.16667" stroke-linejoin="round" stroke-miterlimit="10" stroke-
> dasharray="36.6667 27.5" fill="none" fill-rule="evenodd"/>
> +    <path d="M2457 970.169C2457 912.638 2503.64 866 2561.17
> 866L3350.83 866C3408.36 866 3455 912.638 3455 970.169L3455
> 1386.83C3455 1444.36 3408.36 1491 3350.83 1491L2561.17
> 1491C2503.64 1491 2457 1444.36 2457 1386.83Z" fill="#D9D9D9" fill-
> rule="evenodd"/>
> +    <rect x="2483" y="602" width="945" height="135" fill="#76B900"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 2754.31
> 687)">Feature drivers</text>
> +    <rect x="2483" y="956" width="945" height="302" fill="#0070C0"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 2652.04
> 1124)">EDK2 HII Utility Library</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 2724.81
> 549)">Redfish Interface</text>
> +    <rect x="2483" y="1291" width="945" height="136" fill="#9E9E9E"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="64" transform="matrix(1 0 0 1 2709.33
> 1376)">EDK2 HII Database</text>
> +    <rect x="2483.5" y="1760.5" width="377" height="199"
> stroke="#656565" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 2532.97 1847)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 2599.43 1906)">driver</text>
> +    <rect x="2892.5" y="1760.5" width="377" height="199"
> stroke="#656565" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 2941.37 1847)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 3007.83 1906)">driver</text>
> +    <rect x="2650.5" y="1860.5" width="376" height="199"
> stroke="#656565" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 2699.14 1947)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 2765.6 2006)">driver</text>
> +    <rect x="3080.5" y="1860.5" width="377" height="199"
> stroke="#656565" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#8C8C8C"/>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 3129.78 1947)">Chipset/HII </text>
> +    <text fill="#FFFFFF" font-family="Trebuchet MS,Trebuchet
> MS_MSFontService,sans-serif" font-weight="400" font-size="55"
> transform="matrix(1 0 0 1 3196.24 2006)">driver</text>
> +    <path d="M2958.86 759.917 2958.86 932.542 2953.14 932.542
> 2953.14 759.917ZM2942.25 764.5 2956 737 2969.75 764.5ZM2969.75
> 927.959 2956 955.459 2942.25 927.959Z" fill="#8C8C8C"/>
> +    <path d="M2953.86 1520.92 2953.86 1693.5 2948.14 1693.5 2948.14
> 1520.92ZM2937.25 1525.5 2951 1498 2964.75 1525.5ZM2964.75 1688.92
> 2951 1716.42 2937.25 1688.92Z" fill="#8C8C8C"/>
> +    <text fill="#FF0000" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="55" transform="matrix(1 0 0
> 1 3007.22 833)">EDKII Redfish Platform Configure Protocol</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="55" transform="matrix(1 0 0 1
> 3007.22 1592)">EFI Config Access Protocol</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> style="italic" font-weight="400" font-size="55" transform="matrix(1 0 0 1
> 3007.22 1658)">HII Database Protocol</text>
> +    <rect x="2425.5" y="2155.5" width="1203" height="145"
> stroke="#008564" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="400" font-size="73" transform="matrix(1 0 0 1 2970.9
> 2248)">HW</text>
> +    <g clip-path="url(#clip2)" filter="url(#fx0)" transform="translate(1645
> 1071)">
> +      <g clip-path="url(#clip3)">
> +        <path d="M0.406692-4.48158 800.047 68.0836 799.233 77.0468-
> 0.406692 4.48158ZM796.32 58.4574 822.465 74.6365 793.835 85.8449Z"
> fill="#0071C5" transform="matrix(1 0 0 -1 16.4999 118.354)"/>
> +      </g>
> +    </g>
> +    <path d="M0.414223-4.56458 800.054 68.0006 799.226 77.1298-
> 0.414223 4.56458ZM796.32 58.4574 822.465 74.6365 793.835 85.8449Z"
> fill="#0071C5" transform="matrix(1 0 0 -1 1661.5 1182.14)"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="55" transform="matrix(1 0 0 1 1783.55
> 1054)">Move necessary functions </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="55" transform="matrix(1 0 0 1 1783.55 1120)">to
> library </text>
> +    <rect x="1721.5" y="1792.5" width="303" height="193"
> stroke="#890C58" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 1821
> 1874)">UEFI </text>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 1780.6
> 1933)">variable</text>
> +    <rect x="3489.5" y="1768.5" width="303" height="194"
> stroke="#890C58" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10"/>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3589.11
> 1851)">UEFI </text>
> +    <text fill="#FFFFFF" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-weight="700" font-size="55" transform="matrix(1 0 0 1 3548.71
> 1910)">variable</text>
> +    <path d="M2145.64 1853.11 2293.36 1853.11 2293.36 1890.46
> 2145.64 1890.46ZM2145.64 1918.54 2293.36 1918.54 2293.36 1955.89
> 2145.64 1955.89Z" fill="#C0E4FF" fill-rule="evenodd"/>
> +  </g>
> +</svg>
> diff --git a/RedfishClientPkg/Documents/Media/redfish-synchronization-
> design.svg b/RedfishClientPkg/Documents/Media/redfish-synchronization-
> design.svg
> new file mode 100755
> index 00000000..2dd1fb61
> --- /dev/null
> +++ b/RedfishClientPkg/Documents/Media/redfish-synchronization-
> design.svg
> @@ -0,0 +1,75 @@
> +<svg width="4191" height="2178" style="background-color:white"
> xmlns="http://www.w3.org/2000/svg"
> xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
> overflow="hidden">
> +  <defs>
> +    <clipPath id="clip0">
> +      <rect x="66" y="210" width="4191" height="2178"/>
> +    </clipPath>
> +  </defs>
> +  <g clip-path="url(#clip0)" transform="translate(-66 -210)">
> +    <path d="M487.5 379.5C487.5 364.588 498.469 352.5 512 352.5
> 525.531 352.5 536.5 364.588 536.5 379.5 536.5 394.412 525.531 406.5
> 512 406.5 498.469 406.5 487.5 394.412 487.5 379.5Z" stroke="#006047"
> stroke-width="9.16667" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#008564" fill-rule="evenodd"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 104.76
> 290)">REDFISH_FEATURE_CALLBACK()</text>
> +    <rect x="609.5" y="522.5" width="709" height="133" stroke="#000000"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="none"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 839.622
> 610)">Identify()</text>
> +    <rect x="1178.5" y="767.5" width="709" height="133" stroke="#000000"
> stroke-width="4.58333" stroke-linejoin="round" stroke-miterlimit="10"
> fill="none"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 1433.4
> 855)">Check()</text>
> +    <rect x="1759.5" y="1046.5" width="709" height="134"
> stroke="#000000" stroke-width="4.58333" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 1928.64
> 1134)">Provisioning()</text>
> +    <rect x="1597.5" y="1422.5" width="709" height="133"
> stroke="#000000" stroke-width="4.58333" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 1808.4
> 1510)">Consume()</text>
> +    <rect x="2140.5" y="1730.5" width="709" height="133"
> stroke="#000000" stroke-width="4.58333" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 2376.59
> 1818)">Update()</text>
> +    <path d="M0-2.29167 182.65-2.29167C183.915-2.29167 184.941-
> 1.26565 184.941 0L184.941 74.3695 180.358 74.3695 180.358 0 182.65
> 2.29167 0 2.29167ZM196.4 69.7861 182.65 97.2861 168.9 69.7861Z"
> fill="#008563" transform="matrix(1.83697e-16 1 1 -1.83697e-16 511.5
> 406.5)"/>
> +    <path d="M988.5 831.208 1083.64 831.208C1084.91 831.208 1085.93
> 832.234 1085.93 833.5L1085.93 833.591 1083.64 831.299 1155.86
> 831.299 1155.86 835.882 1083.64 835.882C1082.37 835.882 1081.35
> 834.856 1081.35 833.591L1081.35 833.5 1083.64 835.792 988.5
> 835.792ZM1151.28 819.841 1178.78 833.591 1151.28 847.341Z"
> fill="#008563"/>
> +    <path d="M0-2.29167 101.164-2.29167C102.43-2.29167 103.456-
> 1.26565 103.456 0L103.456 0.633366 101.164-1.6583 179.411-1.6583
> 179.411 2.92503 101.164 2.92503C99.8983 2.92503 98.8722 1.89902
> 98.8722 0.633366L98.8722 0 101.164 2.29167 0 2.29167ZM174.827-
> 13.1166 202.327 0.633366 174.827 14.3834Z" fill="#008563"
> transform="matrix(1 0 0 -1 1557.5 1114.13)"/>
> +    <path d="M0-2.29167 348.186-2.29167C349.452-2.29167 350.478-
> 1.26565 350.478 0L350.478 42.4958 345.894 42.4958 345.894 0 348.186
> 2.29167 0 2.29167ZM361.936 37.9125 348.186 65.4125 334.436
> 37.9125Z" fill="#008563" transform="matrix(1.83697e-16 1 1 -1.83697e-16
> 1532.5 1141.5)"/>
> +    <path d="M0-2.29167 241.064-2.29167C242.329-2.29167 243.356-
> 1.26565 243.356 0L243.356 165.488 238.772 165.488 238.772 0 241.064
> 2.29167 0 2.29167ZM254.814 160.904 241.064 188.404 227.314
> 160.904Z" fill="#008563" transform="matrix(1.83697e-16 1 1 -1.83697e-16
> 1952.5 1555.5)"/>
> +    <path d="M511.5 2311.5C511.5 2296.59 522.469 2284.5 536 2284.5
> 549.531 2284.5 560.5 2296.59 560.5 2311.5 560.5 2326.41 549.531
> 2338.5 536 2338.5 522.469 2338.5 511.5 2326.41 511.5 2311.5Z"
> stroke="#006047" stroke-width="9.16667" stroke-linejoin="round" stroke-
> miterlimit="10" fill="#008564" fill-rule="evenodd"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="64" transform="matrix(1 0 0 1 316.965
> 2332)">Done </text>
> +    <path d="M965.584 860.5 965.584 1572.52C965.584 1573.79 964.558
> 1574.82 963.292 1574.82L535.5 1574.82 537.792 1572.52 537.792
> 2261.63 533.209 2261.63 533.209 1572.52C533.209 1571.26 534.235
> 1570.23 535.5 1570.23L963.292 1570.23 961.001 1572.52 961.001
> 860.5ZM549.25 2257.05 535.5 2284.55 521.75 2257.05Z" fill="#008563"/>
> +    <path d="M2497.82 1863.5 2497.82 2311.4C2497.82 2312.67 2496.79
> 2313.7 2495.53 2313.7L583.418 2313.7 583.418 2309.11 2495.53
> 2309.11 2493.23 2311.4 2493.23 1863.5ZM588 2325.15 560.5 2311.4 588
> 2297.65Z" fill="#008563"/>
> +    <path d="M2728 1074.17C2728 1059.72 2739.72 1048 2754.17
> 1048L3410.83 1048C3425.28 1048 3437 1059.72 3437 1074.17L3437
> 1178.83C3437 1193.28 3425.28 1205 3410.83 1205L2754.17
> 1205C2739.72 1205 2728 1193.28 2728 1178.83Z" fill="#0071C5" fill-
> rule="evenodd" fill-opacity="0.501961"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 2869.23
> 1148)">HTTP </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 3021.62
> 1148)">POST/PUT</text>
> +    <path d="M3112 2034.33C3112 2015.37 3127.37 2000 3146.33
> 2000L3786.67 2000C3805.63 2000 3821 2015.37 3821 2034.33L3821
> 2171.67C3821 2190.63 3805.63 2206 3786.67 2206L3146.33
> 2206C3127.37 2206 3112 2190.63 3112 2171.67Z" fill="#0071C5" fill-
> rule="evenodd" fill-opacity="0.501961"/>
> +    <text font-family="Arial,Arial_MSFontService,sans-serif" font-
> weight="400" font-size="64" transform="matrix(1 0 0 1 3191.74
> 2127)">HTTP </text>
> +    <text fill="#FF0000" font-family="Arial,Arial_MSFontService,sans-serif"
> font-weight="400" font-size="64" transform="matrix(1 0 0 1 3376.79
> 2127)">PATCH/PUT</text>
> +    <rect x="1572" y="418" width="896" height="130" fill="#008564"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 1655.98
> 505)">RedfishResourceIdentifyLib</text>
> +    <path d="M0.0452146-1.71815 11.9202-1.40565 23.8145-0.526554
> 35.5234 0.919242 46.906 2.80438 57.9272 5.19539 68.5072 8.02728
> 78.5249 11.2384 87.9266 14.8322 96.5836 18.7466 104.375 22.923
> 111.238 27.3016 117.131 31.9661 121.965 36.7847C122.036 36.8551
> 122.1 36.9316 122.157 37.0131L125.532 41.8256C125.598 41.9198
> 125.655 42.0203 125.701 42.1257L127.826 47.0007C127.885 47.1376
> 127.927 47.2817 127.949 47.4294L128.699 52.3669 129.449 57.3044
> 129.326 56.8757 131.451 61.7507 131.282 61.4506 134.657 66.2631
> 134.465 66.0347 139.153 70.7222 144.756 75.1536 151.363 79.3641
> 158.938 83.423 167.396 87.2466 176.555 90.7711 186.4 93.9259 196.82
> 96.7148 207.677 99.0704 218.967 100.929 231.233 102.16 230.889
> 105.58 218.408 104.321 206.948 102.43 195.93 100.035 185.35 97.1991
> 175.32 93.9789 165.979 90.3784 157.312 86.452 149.512 82.2609
> 142.619 77.8464 136.722 73.1528 132.035 68.4653C131.964 68.3949
> 131.9 68.3184 131.843 68.2369L128.468 63.4244C128.402 63.3302
> 128.345 63.2297 128.299
> + 63.1243L126.174 58.2493C126.115 58.1124 126.073 57.9683 126.051
> 57.8206L125.301 52.8831 124.551 47.9456 124.674 48.3743 122.549
> 43.4993 122.718 43.7994 119.343 38.9869 119.535 39.2153 114.994
> 34.6589 109.387 30.1984 102.75 25.952 95.1664 21.8784 86.6984
> 18.0428 77.475 14.5116 67.6178 11.3477 57.1978 8.55461 46.344
> 6.19562 35.1016 4.33076 23.5605 2.90155 11.8298 2.03065-0.0452146
> 1.71815ZM227.312 89.8694 253.937 105.246 225.66 117.32Z"
> fill="#008563" transform="matrix(1 0 0 -1 1318.5 588.746)"/>
> +    <rect x="2687" y="738" width="425" height="102" fill="#5D1682" fill-
> opacity="0.501961"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="50" transform="matrix(1 0 0 1 2797.23
> 806)">GetData</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="50" transform="matrix(1 0 0 1 2970.82
> 806)">()</text>
> +    <text fill="#890C58" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="46" transform="matrix(1 0 0
> 1 2696.04
> 693)">EDKII_REDFISH_RESOURCE_ADDENDUM_PROTOCOL</text>
> +    <path d="M0.0837419-1.71671 5.20874-1.46671 10.4785-0.765991
> 15.7435 0.383721 21.0012 1.98096 26.1383 4.02918 31.2374 6.44749
> 36.2738 9.24844 41.2531 12.499 50.8027 19.8914 59.9974 28.63 68.7284
> 38.5528 76.822 49.544 84.2726 61.5307 91.0188 74.258 96.9486 87.7463
> 101.933 101.866 105.969 116.416 108.997 131.282 110.831 146.482
> 111.467 161.742 112.092 176.867 113.894 191.795 116.872 206.407
> 120.844 220.729 125.746 234.616 131.574 247.871 138.147 260.389
> 145.458 272.09 153.443 282.851 161.92 292.557 170.872 301.067
> 180.183 308.333 184.928 311.366 189.774 314.061 189.495 313.937
> 197.654 316.733 196.54 319.985 188.38 317.188C188.284 317.155
> 188.19 317.114 188.101 317.064L183.072 314.259 178.067 311.042
> 168.503 303.557 159.33 294.818 150.682 284.899 142.542 273.91
> 135.103 261.986 128.426 249.254 122.504 235.759 117.531 221.646
> 113.503 207.093 110.481 192.205 108.658 177.008 108.033 161.883
> 107.419 146.893 105.628 131.968 102.656 117.334 98.6916 103.009
> 93.8014 89.1287 87.9812 75.867
> + 81.3524 63.3443 74.053 51.581 66.1466 40.8222 57.6276 31.12 48.6973
> 22.6086 39.3719 15.376 34.6012 12.2516 29.7626 9.55251 24.8617
> 7.22082 19.9988 5.26904 15.0065 3.74128 10.0215 2.64099 5.04126
> 1.96671-0.0837419 1.71671ZM195.756 303.927 219.415 323.564 189.51
> 330.709Z" fill="#890857" transform="matrix(1 0 0 -1 2468.5 1113.06)"/>
> +    <rect x="2690" y="863" width="422" height="102" fill="#5D1682" fill-
> opacity="0.501961"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="50" transform="matrix(1 0 0 1 2757.16
> 931)">GeOemData</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="50" transform="matrix(1 0 0 1 3013.82
> 931)">()</text>
> +    <path d="M0.092493-1.71626 10.53-1.15376 21.0276 0.553809
> 31.3759 3.27561 41.4048 6.94903 51.1654 11.5055 60.4854 16.8871
> 69.2961 23.028 77.5298 29.798 85.1321 37.1392 91.9881 45.0638 98.02
> 53.4335 103.109 62.1333 107.25 71.1596 110.32 80.4632 112.247
> 89.9086 112.902 99.4474 113.527 108.76 115.372 117.784 118.32
> 126.713 122.313 135.41 127.292 143.813 133.088 151.941 139.734
> 159.559 147.137 166.769 155.155 173.36 163.727 179.273 172.798
> 184.512 182.29 188.943 192.089 192.51 191.834 192.439 199.996
> 194.058 199.327 197.43 191.165 195.811C191.079 195.794 190.994
> 195.77 190.911 195.74L180.835 192.057 171.077 187.488 161.773
> 182.102 152.97 176.015 144.738 169.231 137.141 161.816 130.287
> 153.934 124.333 145.562 119.187 136.84 115.055 127.787 112.003
> 118.466 110.098 108.99 109.473 99.6776 108.878 90.5914 107.055
> 81.5368 104.125 72.5904 100.141 63.8667 95.23 55.4415 89.3869
> 47.3112 82.7429 39.6108 75.3452 32.452 67.3289 25.847 58.7646
> 19.8629 49.7096 14.6195 40.2202 10.176 30.4991
> + 6.59939 20.4724 3.94619 10.345 2.27876-0.092493 1.71626ZM197.096
> 181.479 222.341 199.029 193.154 208.695Z" fill="#890857"
> transform="matrix(1 0 0 -1 2468.5 1113.53)"/>
> +    <path d="M0.0142748-1.71869 37.6393-1.40619 56.1033-0.968266
> 74.1162-0.405411 91.5677 0.282584 108.209 1.0958 124.032 1.97138
> 138.811 3.03569 152.384 4.099 164.666 5.28927 170.254 5.917 175.456
> 6.54359 180.246 7.23647 184.618 7.86102 188.55 8.55768 192.081
> 9.25098 195.079 9.95147 197.643 10.6553 199.7 11.3802 201.269
> 12.1502C201.394 12.2131 201.512 12.2911 201.619 12.3825L202.494
> 13.1325C202.684 13.2956 202.836 13.4982 202.94 13.7263L203.252
> 14.4138 203.565 15.1013 203.119 14.5075 203.994 15.2575 203.644
> 15.0252 205.019 15.7127 206.762 16.3177 209.143 16.9678 212.017
> 17.639 215.456 18.3135 219.3 18.9952 223.618 19.611 228.371 20.299
> 233.518 20.9186 239.067 21.542 251.291 22.7268 264.822 23.7865
> 279.561 24.8482 295.283 25.7214 311.959 26.5333 329.318 27.2201
> 347.304 27.7821 365.722 28.1566 380.37 28.2979 380.337 31.7352
> 365.653 31.5934 347.196 31.2179 329.182 30.6549 311.791 29.9667
> 295.092 29.1536 279.314 28.2768 264.553 27.2135 250.959 26.1482
> 238.683 24.958 233.107 24.3314
> + 227.879 23.701 223.132 23.014 218.7 22.3798 214.794 21.6865 211.233
> 20.986 208.232 20.2822 205.613 19.5573 203.481 18.7873 202.106
> 18.0998C201.981 18.0369 201.863 17.9589 201.756 17.8675L200.881
> 17.1175C200.691 16.9544 200.539 16.7518 200.435 16.5237L200.123
> 15.8362 199.81 15.1487 200.256 15.7425 199.381 14.9925 199.731
> 15.2248 198.55 14.6198 196.732 13.9697 194.296 13.2985 191.419
> 12.624 187.95 11.9423 184.132 11.264 179.754 10.6385 175.044 9.95641
> 169.871 9.333 164.334 8.71073 152.116 7.526 138.564 6.46431 123.843
> 5.40363 108.041 4.5292 91.4323 3.71742 74.0088 3.03041 56.0217
> 2.46827 37.6107 2.03119-0.0142748 1.71869ZM375.903 16.223 403.269
> 30.2377 375.637 43.7217Z" fill="#890857" transform="matrix(1 0 0 -1
> 2849.5 1796.74)"/>
> +    <path d="M2849.52 1794.78 2868.52 1795.03 2887.45 1795.85
> 2906.05 1797.1 2924.23 1798.85 2941.83 1800.98 2958.63 1803.49
> 2974.62 1806.37 2989.49 1809.57 3003.23 1813.02 3015.62 1816.73
> 3021.31 1818.69 3026.61 1820.71 3031.47 1822.73 3035.92 1824.82
> 3039.92 1826.91 3043.47 1829.1 3046.57 1831.36 3049.18 1833.57
> 3051.29 1835.92C3051.34 1835.98 3051.39 1836.05 3051.44
> 1836.12L3052.87 1838.31C3052.94 1838.41 3053 1838.51 3053.04
> 1838.63L3053.91 1840.88C3053.96 1841 3054 1841.13 3054.01
> 1841.26L3054.33 1843.44 3054.64 1845.63 3054.54 1845.25 3055.41
> 1847.5 3055.25 1847.18 3056.69 1849.37 3056.54 1849.17 3058.47
> 1851.36 3060.8 1853.32 3063.7 1855.42 3067.01 1857.4 3070.88 1859.49
> 3075.17 1861.51 3079.91 1863.48 3085.09 1865.39 3090.68 1867.31
> 3102.93 1870.98 3116.54 1874.4 3131.3 1877.57 3147.12 1880.43
> 3163.88 1882.92 3181.33 1885.04 3199.42 1886.79 3217.99 1888.04
> 3232.84 1888.55 3232.72 1891.99 3217.76 1891.46 3199.08 1890.21
> 3180.92 1888.46 3163.37 1886.32 3146.51 1883.82
> + 3130.58 1880.93 3115.71 1877.73 3101.94 1874.27 3089.56 1870.56
> 3083.9 1868.61 3078.59 1866.65 3073.7 1864.62 3069.25 1862.51
> 3065.24 1860.35 3061.67 1858.2 3058.57 1855.93 3055.9 1853.64
> 3053.96 1851.45C3053.91 1851.39 3053.86 1851.32 3053.81
> 1851.26L3052.38 1849.07C3052.31 1848.97 3052.25 1848.86 3052.21
> 1848.75L3051.34 1846.5C3051.29 1846.38 3051.25 1846.25 3051.24
> 1846.12L3050.92 1843.93 3050.61 1841.74 3050.71 1842.12 3049.84
> 1839.87 3050 1840.19 3048.56 1838.01 3048.71 1838.2 3046.95 1836.18
> 3044.55 1834.14 3041.66 1832.02 3038.33 1829.96 3034.45 1827.93
> 3030.15 1825.9 3025.39 1823.92 3020.19 1821.94 3014.63 1820.02
> 3002.39 1816.35 2988.76 1812.93 2974.01 1809.75 2958.12 1806.89
> 2941.42 1804.39 2923.9 1802.27 2905.82 1800.53 2887.3 1799.28
> 2868.48 1798.47 2849.48 1798.22ZM3228.52 1876.42 3255.7 1890.8
> 3227.88 1903.91Z" fill="#890857"/>
> +    <path d="M2578 1103.75 2638.5 1103.75 2638.5 1080 2686 1127.5
> 2638.5 1175 2638.5 1151.25 2578 1151.25Z" fill="#0071C5" fill-
> rule="evenodd" fill-opacity="0.501961"/>
> +    <path d="M2956.92 1877.31 3000.36 1919.95 3016.93 1903.07
> 3017.55 1969.96 2950.65 1970.59 2967.22 1953.71 2923.79 1911.07Z"
> fill="#0071C5" fill-rule="evenodd" fill-opacity="0.501961"/>
> +    <path d="M939.5 833.5C939.5 818.588 950.469 806.5 964 806.5
> 977.531 806.5 988.5 818.588 988.5 833.5 988.5 848.412 977.531 860.5
> 964 860.5 950.469 860.5 939.5 848.412 939.5 833.5Z" stroke="#006047"
> stroke-width="9.16667" stroke-linejoin="round" stroke-miterlimit="10"
> fill="#008564" fill-rule="evenodd"/>
> +    <path d="M965.792 655.5 965.792 730.981C965.792 732.247 964.766
> 733.273 963.501 733.273L963.5 733.273 965.792 730.981 965.792
> 783.546 961.208 783.546 961.208 730.981C961.208 729.716 962.235
> 728.69 963.5 728.69L963.501 728.69 961.209 730.981 961.209
> 655.5ZM977.25 778.963 963.5 806.463 949.75 778.963Z" fill="#008563"/>
> +    <text font-family="Arial,Arial_MSFontService,sans-serif" font-
> weight="400" font-size="55" transform="matrix(1 0 0 1 815.508
> 946)">false</text>
> +    <text font-family="Arial,Arial_MSFontService,sans-serif" font-
> weight="400" font-size="55" transform="matrix(1 0 0 1 1029.08
> 808)">true</text>
> +    <path d="M1507.5 1114.5C1507.5 1099.59 1518.69 1087.5 1532.5
> 1087.5 1546.31 1087.5 1557.5 1099.59 1557.5 1114.5 1557.5 1129.41
> 1546.31 1141.5 1532.5 1141.5 1518.69 1141.5 1507.5 1129.41 1507.5
> 1114.5Z" stroke="#006047" stroke-width="9.16667" stroke-linejoin="round"
> stroke-miterlimit="10" fill="#008564" fill-rule="evenodd"/>
> +    <path d="M1535.38 900.5 1535.38 993.849C1535.38 995.114 1534.35
> 996.14 1533.09 996.14L1532.5 996.14 1534.79 993.849 1534.79 1064.28
> 1530.21 1064.28 1530.21 993.849C1530.21 992.583 1531.23 991.557
> 1532.5 991.557L1533.09 991.557 1530.8 993.849 1530.8
> 900.5ZM1546.25 1059.7 1532.5 1087.2 1518.75 1059.7Z" fill="#008563"/>
> +    <text font-family="Arial,Arial_MSFontService,sans-serif" font-
> weight="400" font-size="55" transform="matrix(1 0 0 1 1405.87
> 1282)">true</text>
> +    <text font-family="Arial,Arial_MSFontService,sans-serif" font-
> weight="400" font-size="55" transform="matrix(1 0 0 1 1590.37
> 1071)">false</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="400" font-size="64" transform="matrix(1 0 0 1 328.764
> 396)">Start</text>
> +    <path d="M0 0 177.266 0 177.266 2109.2 354.533 2109.2"
> stroke="#008563" stroke-width="4.58333" stroke-linejoin="round" stroke-
> miterlimit="10" fill="none" fill-rule="evenodd" transform="matrix(1.83697e-
> 16 1 1 -1.83697e-16 2113.5 1180.5)"/>
> +    <path d="M4225.53 1612.5 4225.53 2311.62C4225.53 2312.89 4224.5
> 2313.91 4223.23 2313.91L583.414 2313.91 583.414 2309.33 4223.23
> 2309.33 4220.94 2311.62 4220.94 1612.5ZM588 2325.37 560.5 2311.62
> 588 2297.87Z" fill="#008563"/>
> +    <path d="M4223.5 1536.5 4223.5 1612.57" stroke="#008563" stroke-
> width="4.58333" stroke-linejoin="round" stroke-miterlimit="10" fill="none"
> fill-rule="evenodd"/>
> +    <path d="M2464 1438.17C2464 1423.72 2475.72 1412 2490.17
> 1412L3146.83 1412C3161.28 1412 3173 1423.72 3173 1438.17L3173
> 1542.83C3173 1557.28 3161.28 1569 3146.83 1569L2490.17
> 1569C2475.72 1569 2464 1557.28 2464 1542.83Z" fill="#0071C5" fill-
> rule="evenodd" fill-opacity="0.501961"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 2601 1512)">HTTP
> </text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="64" transform="matrix(1 0 0 1 2753.4
> 1512)">HEAD/GET</text>
> +    <path d="M2337 1468.5 2398 1468.5 2398 1445 2445 1492 2398 1539
> 2398 1515.5 2337 1515.5Z" fill="#0071C5" fill-rule="evenodd" fill-
> opacity="0.501961"/>
> +    <rect x="3253" y="1715" width="424" height="102" fill="#5D1682" fill-
> opacity="0.501961"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="50" transform="matrix(1 0 0 1 3362.57
> 1783)">GetData</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="50" transform="matrix(1 0 0 1 3536.17
> 1783)">()</text>
> +    <text fill="#890C58" font-family="Calibri,Calibri_MSFontService,sans-serif"
> font-style="italic" font-weight="700" font-size="46" transform="matrix(1 0 0
> 1 3195.85
> 1686)">EDKII_REDFISH_RESOURCE_ADDENDUM_PROTOCOL</text>
> +    <rect x="3256" y="1840" width="421" height="102" fill="#5D1682" fill-
> opacity="0.501961"/>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="50" transform="matrix(1 0 0 1 3322.5
> 1908)">GeOemData</text>
> +    <text font-family="Calibri,Calibri_MSFontService,sans-serif" font-
> weight="700" font-size="50" transform="matrix(1 0 0 1 3579.17
> 1908)">()</text>
> +  </g>
> +</svg>
> diff --git a/RedfishClientPkg/Readme.md b/RedfishClientPkg/Readme.md
> index 0aec0580..190ddb22 100644
> --- a/RedfishClientPkg/Readme.md
> +++ b/RedfishClientPkg/Readme.md
> @@ -31,13 +31,13 @@ Redfish property with HII option.
>
>  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
> +this requires additional 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>
> -![UEFI Redfish Client Implementation](https://github.com/changab/edk2-
> staging/blob/edk2-redfish-
> client/RedfishClientPkg/Documents/Media/RedfishClientDriverStack.svg?raw
> =true)
> +![UEFI Redfish Client Implementation](https://github.com/tianocore/edk2-
> redfish-
> client/blob/main/RedfishClientPkg/Documents/Media/RedfishClientDriverSta
> ck.svg?raw=true)
>
>  ## EFI EDK2 Redfish Client Framework
>  The functionality of each block in the diagrams are described in below
> sections,
> @@ -89,7 +89,7 @@ Redfish service to platform configurations, or vice 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
> +specific Redfish 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)
>  .
> @@ -100,18 +100,30 @@ platform configuration format and storage from
> EDK2 Redfish Feature driver.
>  This protocol provides the interfaces to get and set platform configuration
> with
>  the format and configuration storage agnostic to the Redfish feature driver.
>  The platform can provide its own EDKII Redfish Platform Config driver
> instance
> -to access platform-specific configuration format and storage. On EDK2 open
> -source, EDKII Redfish Platform Config Protocol accesses the platform
> -configuration in EDK2 HII defined format.
> +to access platform-specific configuration format and storage.
> +
> +On EDK2 open source, EDKII Redfish Platform Config Protocol accesses the
> +platform configuration in EDK2 HII defined format. Below is driver stack
> diagram
> +which implements EDKII Redfish Platform Config Protocol. The protocol
> driver
> +leverages the HII interface to get or set the HII configuration on platform. By
> +following the x-uefi-redfish Configure Language defined in UNI file, protocol
> +driver can find corresponding HII question for given Redfish attribute. In this
> +way, protocol driver creates the mapping between HII questions and Redfish
> +attributes.
> +
> +![platform config](https://github.com/nicklela/edk2-redfish-
> client/blob/update-readme/RedfishClientPkg/Documents/Media/redfish-
> platform-config-protocol-stack.svg?raw=true)
>
>  Below is the prototype of
> **EDKII_REDFISH_PLATFORM_CONFIG_PROTOCOL**,
>
>  ```C
>  struct _EDKII_REDFISH_PLATFORM_CONFIG_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;
> +  UINT64                                                Revision;
> +  EDKII_REDFISH_PLATFORM_CONFIG_GET_VALUE               GetValue;
> +  EDKII_REDFISH_PLATFORM_CONFIG_SET_VALUE               SetValue;
> +  EDKII_REDFISH_PLATFORM_CONFIG_GET_DEFAULT_VALUE
> GetDefaultValue;
> +  EDKII_REDFISH_PLATFORM_CONFIG_GET_ATTRIBUTE           GetAttribute;
> +  EDKII_REDFISH_PLATFORM_CONFIG_GET_CONFIG_LANG
> GetConfigureLang;
> +  EDKII_REDFISH_PLATFORM_CONFIG_GET_SUPPORTED_SCHEMA
> GetSupportedSchema;
>  };
>  ```
>
> @@ -181,11 +193,10 @@ 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
> +in Redfish schema.
>  - 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.
> +- The path is relative to root of [Redfish
> schema](https://redfish.dmtf.org/redfish/schema_index) defined by DMTF,
> not related to Redfish service root.
>
>  #### Examples,
>  ```C
> @@ -215,7 +226,136 @@ 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.
>
> +## EDK2 Redfish client feature driver
> +![foundation driver stack](https://github.com/nicklela/edk2-redfish-
> client/blob/update-readme/RedfishClientPkg/Documents/Media/redfish-
> foundation-driver-stack.svg?raw=true)
> +
> +Above diagram shows the way how Redfish application (Redfish feature
> driver) works with Redfish foundation
> +drivers and communicate with Redfish service. Redfish feature driver relies on
> Redfish Config driver to
> +provide the information of desired Rest Ex instance. To achieve this, Redfish
> feature driver has to provide
> +EDKII Redfish Config Handler Protocol and Redfish Config driver will use this
> protocol to deliver Redfish
> +service information.
> +
> +```C
> +struct _EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL {
> +  EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL_INIT    Init;
> +  EDKII_REDFISH_CONFIG_HANDLER_PROTOCOL_STOP    Stop;
> +};
> +```
> +
> +![feature driver call flow](https://github.com/nicklela/edk2-redfish-
> client/blob/update-readme/RedfishClientPkg/Documents/Media/redfish-
> feature-driver-call-flow.svg?raw=true)
> +
> +Above diagram shows the details of how Redfish feature core driver invokes
> Redfish feature drivers. To be called
> +by Redfish feature core driver, Redfish feature driver has to register the
> managed URI to Redfish feature core
> +driver. Then Redfish feature core driver learns the dependency of each
> different feature drivers.
> +
> +#### Dispatch Redfish feature drivers
> +When given event is signaled, Redfish feature core driver starts the operation
> of invoking Redfish feature drivers
> +by following the order from parent node to child node in the Redfish URI
> hierarchy. In the diagram, the feature
> +driver which manages service root will be invoked first. And feature driver
> which manages computer system collection
> +will be invoked at second position. Once Redfish feature core driver walks
> through entire Redfish URI, the operation
> +is stopped.
> +
> +### Interface between collection feature driver and non-collection feature
> driver
> +Redfish collection resource is a set of Redfish non-collection resource. Redfish
> collection feature driver works
> +with non-collection feature driver to manage them. For example, boot option
> collection feature driver work with
> +boot option feature driver to manage boot options in Redfish service.
> Computer system collection feature driver
> +work with computer system feature driver to manage computer system
> resource.
> +
> +The interface between collection feature driver and non-collection feature
> driver is EDKII Redfish resource config
> +protocol.
> +
> +```C
> +struct _EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL {
> +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_PROVISIONING
> Provisioning;
> +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CONSUME         Consume;
> +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_UPDATE          Update;
> +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_CHECK           Check;
> +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_IDENTIFY        Identify;
> +  EDKII_REDFISH_RESOURCE_CONFIG_PROTOCOL_GET_INFO        GetInfo;
> +};
> +```
> +
> +### Feature driver event
> +Two events are defined for feature driver to perform necessary operation at
> given time.
> +- Ready-to-Provisioning event
> +  - Feature driver which requires to do operation before Redfish feature driver
> starts the synchronization can listen to
> +    this event. For example, boot option feature driver may want to refresh
> boot order variable and get latest boot order
> +    information before provisioning the boot options to boot options resource.
> +- After-Provisioning event
> +  - Feature driver which wants to do operation after Redfish feature driver
> finish the synchronization job can listen to
> +    this event.
> +
> +### Reboot required
> +When Redfish feature drivers apply user request to platform, a system reboot
> is usually required. PCD
> `gEfiRedfishClientPkgTokenSpaceGuid.PcdRedfishSystemRebootRequired` is
> introduced for this purpose. After Redfish feature
> +core driver is done with synchronization job, Redfish feature core driver
> checks this PCD and perform system reboot when
> +PCD is set to `TRUE`.
> +
> +### Synchronization design between Redfish service and BIOS
> +The purpose of Redfish feature driver is to do the synchronization job
> between Redfish service and BIOS. The operation of synchronization can be
> simply divided into two types:
> +
> +#### Provisioning resource
> +Below is the flow diagram of provisioning platform configuration to Redfish
> service at Bios resource. With the x-uefi-redfish
> +configure language described in above section, Redfish feature driver collect
> all BIOS attributes from HII database and populated
> +them to Redfish service.
> +![provisioning](https://github.com/nicklela/edk2-redfish-
> client/blob/update-readme/RedfishClientPkg/Documents/Media/redfish-call-
> flow-provisioning.svg?raw=true)
> +
> +#### Consume resource
> +Below is the flow diagram of consuming user request from Redfish service to
> platform configuration. Redfish feature driver finds
> +corresponding HII question and apply user desired value to platform.
> +![pending settings](https://github.com/nicklela/edk2-redfish-
> client/blob/update-readme/RedfishClientPkg/Documents/Media/redfish-call-
> flow-pending-settings.svg?raw=true)
> +
> +Below diagram shows the call flow of EDKII Resource Config Protocol and
> how to use this protocol to handle synchronization
> +job.
> +![synchronization](https://github.com/nicklela/edk2-redfish-
> client/blob/update-readme/RedfishClientPkg/Documents/Media/redfish-
> synchronization-design.svg?raw=true)
> +
> +Several interfaces defined in EDKII Redfish Resource Config Protocol work
> together to support Redfish synchronization:
> +- Identify()
> +  - This function is used to check if the given Redfish resource is the one the
> feature driver wants to manage. A platform
> +    library `RedfishReesourceIdentifyLib` is introduced for platform to
> implement its own policy to identify Redfish resource.
> +- Check()
> +  - This function is used to check the attribute status on Redfish service. If all
> attributes the feature driver manages
> +    are presented in Redfish service, feature driver must provision them
> already. Otherwise, Provisioning() will be called
> +    to perform resource provisioning job.
> +- Provisioning()
> +  - When this function is called, feature driver will provision all attributes that
> it managed to Redfish service. This
> +    operation usually create new resource at Redfish service and require
> different operation that specified by Redfish service.
> +- Consume()
> +  - When there is pending settings in Redfish service, this function is called for
> feature driver to consume pending settings
> +    requested by user.
> +- Update()
> +  - When platform configuration is updated, this function is called to update
> configuration changes to Redfish service and
> +    Redfish service can show the latest settings on platform.
> +
> +The EDKII Redfish Resource Addendum Protocol is introduced to provide
> platform addendum data that Redfish service requires.
> +This protocol will be called at Provisioning() and Update() functions so
> platform can add OEM attribute or any other attribute
> +specified by Redfish service.
> +
> +```C
> +struct _EDKII_REDFISH_RESOURCE_ADDENDUM_PROTOCOL {
> +  UINT64                                  Revision;    ///< Protocol revision
> +  EDKII_REDFISH_RESOURCE_ADDENDUM_OEM     GetOemData;  ///< Get
> OEM data
> +  EDKII_REDFISH_RESOURCE_ADDENDUM_DATA    GetData;     ///< Get
> addendum data
> +};
> +```
> +
> +#### Redfish service implementation
> +The idea of Redfish synchronization design is to manage Redfish resource
> directly by platform firmware. To do this, Redfish
> +synchronization functions have to work with Redfish service implementation
> in BMC firmware. This is because the interface
> +between platform firmware and BMC firmware is not defined in any
> specification.
> +Several prerequisites must be satisfied:
> +- Platform firmware has permission to manage Redfish resource. BMC has
> ability to tell the difference between platform request
> +  and out-of-band user. This can normally be done by identifying the
> bootstrap account in HTTP request. The bootstrap account is
> +  described in Host Interface specification 1.3.0 section 9.
> +- The ability to tell if there is an user who changes to Redfish resource or not.
> Redfish feature drivers can only be executed at
> +  POST time. So the modification to BIOS managed resource is an
> asynchronous operation. Thus, we need below supports in Redfish service:
> +  - ETAG support in HTTP header.
> +  - Setting resource support (defined in Redfish specification 1.18 section
> 9.10).
> +  - Redfish Task support to POST and DELETE operation made by user in
> Redfish collection resource and Redfish actions.
> +
> +### Redfish Task design
> +TBD.
> +
>  ## The Contributors
> -Chang, Abner <abner.chang at hpe.com>\
> -Wang, Nickle <nickle.wang at hpe.com>\
> +Chang, Abner <abner.chang at amd.com>\
> +Wang, Nickle <nicklew at nvidia.com>\
>  Chen, Aaron <aaron.chen at hpe.com>
> --
> 2.17.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#109304): https://edk2.groups.io/g/devel/message/109304
Mute This Topic: https://groups.io/mt/101732254/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list