Docs: Intel N3000 FPGA Support - Device Image Flashing

Bug #1884776 reported by Teresa Ho
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
StarlingX
Fix Released
Medium
M Camp

Bug Description

This is a documentation request for the Story 2006740 - Intel N3000 FPGA Integration

Brief Description
-----------------
This feature provides the integration of Intel N3000 FPGA in StarlingX.

    The N3000 FPGA PAC has two Intel XL710 NICs, memory and an Intel FPGA.
    The system discovers and inventories the device as a NIC, with the XL710 ports
    available in the host port list and host interface list.

Updating an Intel N3000 FPGA Image
    The N3000 FPGA as shipped from the factory is expected to have production BMC and factory
    images. The following procedure describes how to update the N3000 FPGA user image on a host.

    Device image types:
        - root-key
            The root-key image sets the main authentication key on the hardware.
        - functional-key
            The functional device image performs the desired work on behalf of the application.
            If a rootkey device image has been written to the hardware, then the functional image
            will only be accepted if it has been signed by a code-signing key (CSK) generated from
            the root key which has not been revoked.
        - key-revocation
            The key-revocation device image will revoke a code-signing key (CSK). If a root-key device
            image has been written to the hardware, then the key-revocation device image will only be
            accepted if it has been signed by the root key.

        Specifically for the N3000, the root-key image can only be set once, CSKs are revoked by
        specifying an integer CSK ID, and there are 128 CSK ID cancellation slots.
        The root-key device image is known as the "root entry hash bitstream", the functional device
        image is known as the "user image", and the key-revocation device image is known as the "CSK
        ID cancellation bitstream". For the N3000 a CSK is revoked by specifying an integer ID, and all
        CSKs with that ID will be revoked. Writing the root-key device image or a key-revocation device
        image is essentially permanent. Reverting to factory status requires physical access to the card
        and specialized equipment.

    1. Upload the device image.
        To upload a root-key device image:
            ~(keystone_admin)$ system device-image-upload imagefile root-key pci_vendor
            pci_device --key-signature key_signature --name imagename --description
            description --image-version version
        To upload a functional device image:
            ~(keystone_admin)$ system device-image-upload imagefile functional pci_vendor
            pci_device --functional bitstream_id --name imagename --description description
            -image-version version
        To upload a revocation key device image:
            ~(keystone_admin)$ system device-image-upload imagefile key-revocation
            pci_vendor pci_device --revoke-key-id revoke_key_id --name imagename --
            description description --image-version version

        where:

        imagefile The filepath of the binary device image file.
        pci_vendor The hexadecimal string identifying the PCI vendor ID of the device this image applies to.
        pci_device The hexadecimal string identifying the PCI device ID of the device this image applies to.
        key_signature A hexidecimal string identifying the root key device image.
        revoke_key_id A decimal key ID for the key revocation device image.
        bitstream_id A hexidecimal string of the functional device image.
        name The name of the device image (optional).
        description The description of the device image (optional).
        image-version The version of the device image (optional).

    2. Assign a device label to the device.
        Labels are key-value pairs that are assigned to host PCI devices and are used to specify
        attributes of the devices. Labels can be used to identify certain properties of the PCI devices
        where the same device image can be used.
        The command syntax is:
            system host-device-label-assign [--overwrite] hostname_or_id pci_name_or_address
            name=value [name=value ...]
        The label can be overwritten using the --overwrite option. This option is not allowed while the
        image update is in progress after running host-device-image-update.
        Once assigned, a device label can be referenced by multiple device-image-apply commands.

    3. Apply the device image on one or all supported devices.
        Note: A device firmware update in progress alarm is raised once the first device image
        is applied.
        The system device-image-state-list will show the status of the device as pending.
        - Apply a device image to all supported devices:
            ~(keystone_admin)$ system device-image-apply image_uuid
        - Alternatively, apply a device image to devices with a specified label:
            ~(keystone_admin)$ system device-image-apply image_uuid key1=value1

    4. Write pending device images on the host to hardware.
        ~(keystone)admin)$ system host-device-image-update hostname
        Note: This operation currently supports one pending device image at a time.
        Any previously-attempted device image writes for this host that are in a failed state will be
        reset to pending and retried.
        Root and revocation key updates can be expected to take 1-2 minutes. Functional image
        updates can take approximately 40 minutes for the N3000 FPGA.
        - Once a device update is complete, system device-image-state-list will show the status as
            completed for that device/image.
        - Once all pending device updates for the host are complete, system host-show hostname
            will again display an empty string for device_image_update.

    5. Lock and unlock the host.

    6. Optional: Upload, apply, and update any additional key-revocation device images or
        functional device images as needed.
        New device images can be uploaded as needed, and already-uploaded images can be applied
        with new labels. Devices can also have new labels applied to them and any device images
        with matching labels will be automatically applied.

Device Management commands
    Listing uploaded device images
        system device-image-list

    Listing device labels
        system host-device-label-list hostname_or_id devicename_or_address

    Removing device labels
        system host-device-label-remove hostname_or_id key

    Remove a device image
        To remove a device image from all devices
            system device-image-remove image_uuid
        To remove the device image from all devices with a matching label
            system device-image-remove image_uuid key1=value1

    Initiating a Device Image Update for a Host
        system host-device-image-update hostname_or_host_ID

    Displaying the status of device images
        system device-image-state-list

Revision history for this message
Ghada Khalil (gkhalil) wrote :

Doc updates for an stx.4.0 feature - StoryBoard: https://storyboard.openstack.org/#!/story/2006740

Changed in starlingx:
assignee: nobody → M Camp (mcamp859)
importance: Undecided → Medium
status: New → Triaged
tags: added: stx.4.0
Ghada Khalil (gkhalil)
summary: - Docs: Intel N3000 FPGA Support
+ Docs: Intel N3000 FPGA Support - Device Image Flashing
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to docs (master)

Fix proposed to branch: master
Review: https://review.opendev.org/739088

Changed in starlingx:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to docs (master)

Reviewed: https://review.opendev.org/739088
Committed: https://git.openstack.org/cgit/starlingx/docs/commit/?id=31a46c273c44e61ac430b7755867bf989a0d5282
Submitter: Zuul
Branch: master

commit 31a46c273c44e61ac430b7755867bf989a0d5282
Author: MCamp859 <email address hidden>
Date: Thu Jul 2 12:10:15 2020 -0400

    Add Intel N3000 FPGA Guide

    Include sections for Device Flashing & FEC interface

    Closes-Bug: 1884776

    Closes-Bug: 1885053

    Change-Id: If34e9e11b6ac1670334eb130a1d42bd5820b7e7a
    Signed-off-by: MCamp859 <email address hidden>

Changed in starlingx:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to docs (r/stx.4.0)

Fix proposed to branch: r/stx.4.0
Review: https://review.opendev.org/741673

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to docs (r/stx.4.0)

Reviewed: https://review.opendev.org/741673
Committed: https://git.openstack.org/cgit/starlingx/docs/commit/?id=e9cdf644f8d8255c6f0df569dec5470669f499b9
Submitter: Zuul
Branch: r/stx.4.0

commit e9cdf644f8d8255c6f0df569dec5470669f499b9
Author: MCamp859 <email address hidden>
Date: Thu Jul 2 12:10:15 2020 -0400

    Add Intel N3000 FPGA Guide

    Include sections for Device Flashing & FEC interface

    Closes-Bug: 1884776

    Closes-Bug: 1885053

    Change-Id: If34e9e11b6ac1670334eb130a1d42bd5820b7e7a
    Signed-off-by: MCamp859 <email address hidden>
    (cherry picked from commit 31a46c273c44e61ac430b7755867bf989a0d5282)

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.