Blame doc/src/fpga_tools/super-rsu/super-rsu.md

Packit 534379
# Super Remote System Update User Guide #
Packit 534379
Packit 534379
.. toctree::
Packit 534379
Packit 534379
.. highlight:: c
Packit 534379
Packit 534379
.. highlight:: console
Packit 534379
Packit 534379
## Overview ##
Packit 534379
Intel Programmable Acceleration Card (PAC) devices are comprised of multiple processors
Packit 534379
and controllers that execute firmware. Maintaining and updating these firmware images
Packit 534379
manually is error-prone and does not scale well within the Data Center. The solution
Packit 534379
described here is derived with the following goals in mind:
Packit 534379
Packit 534379
* The ability to update one or more (possibly all) firwmare images with a single package.
Packit 534379
* The ability to complete all firmware updates within a stipulated time window.
Packit 534379
* The ability to update each PAC in the server, all servers in a Data Center, and multiple
Packit 534379
Data Centers remotely.
Packit 534379
* The ability to remotely initiate download of the package and its installation with a
Packit 534379
single command per server instance.
Packit 534379
* The ability to roll back firmware to a previous revision.
Packit 534379
Packit 534379
## Implementation ##
Packit 534379
A single package containing firmware images for all programmable parts on a PAC is delivered
Packit 534379
as an RPM, eg opae-super-rsu-n3000.M.m.p-r.noarch.rpm. The RPM revision will sequentially increase
Packit 534379
with every update.
Packit 534379
Packit 534379
Installing or upgrading the RPM invokes the complete update of all programmable parts on all
Packit 534379
PAC boards in the system.
Packit 534379
Packit 534379
The standard RPM dependency framework ensures that correct versions of dependecy packages
Packit 534379
opae-intel-fpga-driver and fpga-tools-extra are installed on the system.
Packit 534379
Packit 534379
Rolling back is achieved by uninstalling the current version and re-installing a previous
Packit 534379
version of the RPM.
Packit 534379
Packit 534379
.. note::
Packit 534379
```
Packit 534379
Note: once Secure Update is deployed, roll back restrictions shall be implemented to prevent
Packit 534379
rollback attacks.
Packit 534379
```
Packit 534379
Packit 534379
RPM management on remote systems is standard practice, requiring no new infrastructure/training.
Packit 534379
Packit 534379
## Details ##
Packit 534379
Packit 534379
The post-install hook of the opae-super-rsu-n3000 RPM is leveraged to call out to the super-rsu
Packit 534379
Python script to update all PAC boards. super-rsu uses the manifest file packaged within
Packit 534379
opae-super-rsu-n3000 to associate a firmware image with its version. Each of the firmware images
Packit 534379
contained in opae-super-rsu-n3000 is placed on the target system in /usr/share/opae/n3000.
Packit 534379
Packit 534379
### Algorithm ###
Packit 534379
Packit 534379
* Acquire the current firmware versions of all programmable parts.
Packit 534379
* For each programmable image, if the installed version of firmware does not equal the version
Packit 534379
provided in the RPM manifest file, then update the firmware image, and set image_updated to True.
Packit 534379
* After all updates, if image_updated, then initiate a safe reboot of all boards in the system.
Packit 534379
* After safe reboot, verify that the reported firmware versions match those of the RPM manifest.
Packit 534379
If they do not match, then RPM installation exits with a failing status.
Packit 534379
* Run board self test. If the self test fails, then the RPM installation exits with a failing status.
Packit 534379
* If all of the above checks is successful, then RPM installation exits with a success status.
Packit 534379
Packit 534379
## Dependencies ##
Packit 534379
Packit 534379
* The standard Python package for the distro (version 2.7).
Packit 534379
* The opae-intel-fpga-driver RPM. (version determined by opae-super-rsu-n3000)
Packit 534379
* The opae-tools-extra RPM. (version determined by opae-super-rsu-n3000)