|
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)
|