<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Are there Redfish methods of initiating this now?  I recall a workgroup at OCP was trying to get this done there. <div><br id="lineBreakAtBeginningOfSignature"><div dir="ltr"><span style="background-color: rgba(255, 255, 255, 0);">— Patrick Williams</span></div><div dir="ltr"><br><blockquote type="cite">On Aug 15, 2025, at 8:15 AM, Tom Joseph <rushtotom@gmail.com> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:1rem 0px 0.5rem;letter-spacing:0.08px"><font face="arial, sans-serif">Hello All,</font></p><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:1rem 0px 0.5rem;letter-spacing:0.08px"><font face="arial, sans-serif">SPI Staged Update enables pre-downloading firmware component images for supported devices, significantly reducing downtime during firmware updates and activation. This requires devices to support at least two slots — one for the running firmware and another for staging the new image.</font></p><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:1rem 0px 0.5rem;letter-spacing:0.08px"><font face="arial, sans-serif">The update process occurs in <span style="box-sizing:border-box;border-width:0px;border-style:solid">two iterations</span>:</font></p><ol class="gmail-marker:text-quiet gmail-list-decimal" style="box-sizing:border-box;border-width:0px;border-style:solid;list-style-position:initial;margin:0px;padding:0px;letter-spacing:0.08px"><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><span style="box-sizing:border-box;border-width:0px;border-style:solid"><font face="arial, sans-serif">First Iteration:</font></span></p><ul class="gmail-marker:text-quiet gmail-list-disc" style="box-sizing:border-box;border-width:0px;border-style:solid;list-style:disc;margin:0.75em 0px;padding:0px"><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><font face="arial, sans-serif">The PLDM UA initiates the PLDM T5 flow with the PLDM FD supporting staged updates.</font></p></li><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><font face="arial, sans-serif">All stages (Transfer, Verify, Apply) are completed <span style="box-sizing:border-box;border-width:0px;border-style:solid">except</span> activation. This is achieved by PLDM UA skipping the PLDM T5 <span style="font-family:monospace;letter-spacing:0.08px">ActivateFirmware</span> command.</font></p></li><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><font face="arial, sans-serif">Upon state machine timeout, the PLDM FD marks the new image as <em style="box-sizing:border-box;border-width:0px;border-style:solid">staged</em> (not failed update). Since it’s staged, it remains inactive until explicitly activated later.</font></p></li></ul></li><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><span style="box-sizing:border-box;border-width:0px;border-style:solid"><font face="arial, sans-serif">Second Iteration:</font></span></p><ul class="gmail-marker:text-quiet gmail-list-disc" style="box-sizing:border-box;border-width:0px;border-style:solid;list-style:disc;margin:0.75em 0px;padding:0px"><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><font face="arial, sans-serif">The same PLDM package is used. Since the image is already staged, the PLDM FD skips most of the Transfer stage, reducing downtime.</font></p></li><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><font face="arial, sans-serif">This iteration is typically scheduled during a maintenance window.</font></p></li><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><font face="arial, sans-serif">Devices that do not support SPI staging are updated in this iteration.</font></p></li><li class="gmail-py-0 gmail-my-0 gmail-prose-p:pt-0 gmail-prose-p:mb-2 gmail-prose-p:my-0 gmail-[&>p]:pt-0 gmail-[&>p]:mb-2 gmail-[&>p]:my-0" style="box-sizing:border-box;border-width:0px;border-style:solid;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-bottom:0px"><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0px 0px 0.5rem;padding-top:0px"><font face="arial, sans-serif">All firmware is activated after this iteration.</font></p></li></ul></li></ol><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:0.5rem 0px;letter-spacing:0.08px"><font face="arial, sans-serif">To enable this, we propose introducing a <span style="box-sizing:border-box;border-width:0px;border-style:solid">new OEM parameter</span> in the MultiPart API to instruct the PLDM UA to skip sending the <code style="box-sizing:border-box;border-width:0px;border-style:solid;font-feature-settings:normal;background-color:rgba(0,0,0,0);border-radius:0.3125rem;padding:0px 4px;font-synthesis:none">ActivateFirmware</code>command, along with necessary PLDM UA modifications to support the SPI staged flow.</font></p><p class="gmail-my-2 gmail-[&+p]:mt-4 gmail-[&_strong:has(+br)]:inline-block gmail-[&_strong:has(+br)]:pb-2" style="box-sizing:border-box;border-width:0px;border-style:solid;margin:1rem 0px 0.5rem;letter-spacing:0.08px"><font face="arial, sans-serif" style="">If there is interest within the OpenBMC community to adopt and collaborate on this feature, please feel free to reach out.<br><br></font></p></div><div><font face="arial, sans-serif"><span style="color:rgb(26,26,26)">[1] </span><a href="https://docs.nvidia.com/multi-node-nvlink-systems/nvfupd-guide/appendix/spi-staged.html">https://docs.nvidia.com/multi-node-nvlink-systems/nvfupd-guide/appendix/spi-staged.html</a></font></div><div><br></div><div>Regards,</div><div>Tom</div></div>
</div>
</div></blockquote></div></body></html>