numam-dpdk/drivers/net/sfc/base/ef10_signed_image_layout.h
Andrew Jackson 58b1393e75 net/sfc/base: highlight that image layout header generated
EF10 signed image layout header is generated from firmware sources.

Signed-off-by: Andrew Jackson <ajackson@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
2018-09-28 01:41:02 +02:00

71 lines
2.4 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
*
* Copyright (c) 2016-2018 Solarflare Communications Inc.
* All rights reserved.
*/
/*
* This is NOT the original source file. Do NOT edit it.
* To update the image layout headers, please edit the copy in
* the sfregistry repo and then, in that repo,
* "make layout_headers" or "make export" to
* regenerate and export all types of headers.
*/
/* These structures define the layouts for the signed firmware image binary
* saved in NVRAM. The original image is in the Cryptographic message
* syntax (CMS) format which contains the bootable firmware binary plus the
* signatures. The entire image is written into NVRAM to enable the firmware
* to validate the signatures. However, the bootrom still requires the
* bootable-image to start at offset 0 of the NVRAM partition. Hence the image
* is parsed upfront by host utilities (sfupdate) and written into nvram as
* 'signed_image_chunks' described by a header.
*
* This file is used by the MC as well as host-utilities (sfupdate).
*/
#ifndef CI_MGMT_SIGNED_IMAGE_LAYOUT_H
#define CI_MGMT_SIGNED_IMAGE_LAYOUT_H
/* Signed image chunk type identifiers */
enum {
SIGNED_IMAGE_CHUNK_CMS_HEADER, /* CMS header describing the signed data */
SIGNED_IMAGE_CHUNK_REFLASH_HEADER, /* Reflash header */
SIGNED_IMAGE_CHUNK_IMAGE, /* Bootable binary image */
SIGNED_IMAGE_CHUNK_REFLASH_TRAILER, /* Reflash trailer */
SIGNED_IMAGE_CHUNK_SIGNATURE, /* Remaining contents of the signed image,
* including the certifiates and signature */
NUM_SIGNED_IMAGE_CHUNKS,
};
/* Magic */
#define SIGNED_IMAGE_CHUNK_HDR_MAGIC 0xEF105161 /* EF10 SIGned Image */
/* Initial version definition - version 1 */
#define SIGNED_IMAGE_CHUNK_HDR_VERSION 0x1
/* Header length is 32 bytes */
#define SIGNED_IMAGE_CHUNK_HDR_LEN 32
/* Structure describing the header of each chunk of signed image
* as stored in nvram
*/
typedef struct signed_image_chunk_hdr_e {
/* Magic field to recognise a valid entry
* should match SIGNED_IMAGE_CHUNK_HDR_MAGIC
*/
uint32_t magic;
/* Version number of this header */
uint32_t version;
/* Chunk type identifier */
uint32_t id;
/* Chunk offset */
uint32_t offset;
/* Chunk length */
uint32_t len;
/* Reserved for future expansion of this structure - always set to zeros */
uint32_t reserved[3];
} signed_image_chunk_hdr_t;
#endif /* CI_MGMT_SIGNED_IMAGE_LAYOUT_H */