.. toctree::
.. highlight:: c
.. highlight:: console
Intel Programmable Acceleration Card (PAC) devices are comprised of multiple processors and controllers that execute firmware. Maintaining and updating these firmware images manually is error-prone and does not scale well within the Data Center. The solution described here is derived with the following goals in mind:
A single package containing firmware images for all programmable parts on a PAC is delivered as an RPM, eg opae-super-rsu-n3000.M.m.p-r.noarch.rpm. The RPM revision will sequentially increase with every update.
Installing or upgrading the RPM invokes the complete update of all programmable parts on all PAC boards in the system.
The standard RPM dependency framework ensures that correct versions of dependecy packages opae-intel-fpga-driver and fpga-tools-extra are installed on the system.
Rolling back is achieved by uninstalling the current version and re-installing a previous version of the RPM.
.. note::
Note: once Secure Update is deployed, roll back restrictions shall be implemented to prevent rollback attacks.
RPM management on remote systems is standard practice, requiring no new infrastructure/training.
The post-install hook of the opae-super-rsu-n3000 RPM is leveraged to call out to the super-rsu Python script to update all PAC boards. super-rsu uses the manifest file packaged within opae-super-rsu-n3000 to associate a firmware image with its version. Each of the firmware images contained in opae-super-rsu-n3000 is placed on the target system in /usr/share/opae/n3000.