net/sfc/base: add firmware image layout option
Signed-off-by: Andy Moreton <amoreton@solarflare.com> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
This commit is contained in:
parent
912e603706
commit
1a8ceb4055
@ -115,6 +115,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += siena_vpd.c
|
|||||||
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_ev.c
|
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_ev.c
|
||||||
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_filter.c
|
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_filter.c
|
||||||
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_intr.c
|
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_intr.c
|
||||||
|
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_image.c
|
||||||
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_mac.c
|
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_mac.c
|
||||||
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_mcdi.c
|
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_mcdi.c
|
||||||
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_nic.c
|
SRCS-$(CONFIG_RTE_LIBRTE_SFC_EFX_PMD) += ef10_nic.c
|
||||||
|
20
drivers/net/sfc/base/ef10_image.c
Normal file
20
drivers/net/sfc/base/ef10_image.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017-2018 Solarflare Communications Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "efx.h"
|
||||||
|
#include "efx_impl.h"
|
||||||
|
|
||||||
|
#if EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
|
||||||
|
|
||||||
|
#if EFSYS_OPT_IMAGE_LAYOUT
|
||||||
|
|
||||||
|
#include "ef10_signed_image_layout.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* EFSYS_OPT_IMAGE_LAYOUT */
|
||||||
|
|
||||||
|
#endif /* EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
|
62
drivers/net/sfc/base/ef10_signed_image_layout.h
Normal file
62
drivers/net/sfc/base/ef10_signed_image_layout.h
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/* SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016-2018 Solarflare Communications Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* 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 */
|
@ -182,6 +182,13 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif /* EFSYS_OPT_NVRAM */
|
#endif /* EFSYS_OPT_NVRAM */
|
||||||
|
|
||||||
|
#if EFSYS_OPT_IMAGE_LAYOUT
|
||||||
|
/* Support signed image layout handling */
|
||||||
|
# if !(EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
|
||||||
|
# error "IMAGE_LAYOUT requires MEDFORD or MEDFORD2"
|
||||||
|
# endif
|
||||||
|
#endif /* EFSYS_OPT_IMAGE_LAYOUT */
|
||||||
|
|
||||||
#ifdef EFSYS_OPT_NVRAM_FALCON_BOOTROM
|
#ifdef EFSYS_OPT_NVRAM_FALCON_BOOTROM
|
||||||
# error "NVRAM_FALCON_BOOTROM is obsolete and is not supported."
|
# error "NVRAM_FALCON_BOOTROM is obsolete and is not supported."
|
||||||
#endif
|
#endif
|
||||||
|
@ -34,6 +34,7 @@ sources = [
|
|||||||
'siena_vpd.c',
|
'siena_vpd.c',
|
||||||
'ef10_ev.c',
|
'ef10_ev.c',
|
||||||
'ef10_filter.c',
|
'ef10_filter.c',
|
||||||
|
'ef10_image.c',
|
||||||
'ef10_intr.c',
|
'ef10_intr.c',
|
||||||
'ef10_mac.c',
|
'ef10_mac.c',
|
||||||
'ef10_mcdi.c',
|
'ef10_mcdi.c',
|
||||||
|
@ -178,6 +178,7 @@ prefetch_read_once(const volatile void *addr)
|
|||||||
#define EFSYS_OPT_VPD 0
|
#define EFSYS_OPT_VPD 0
|
||||||
#define EFSYS_OPT_NVRAM 0
|
#define EFSYS_OPT_NVRAM 0
|
||||||
#define EFSYS_OPT_BOOTCFG 0
|
#define EFSYS_OPT_BOOTCFG 0
|
||||||
|
#define EFSYS_OPT_IMAGE_LAYOUT 0
|
||||||
|
|
||||||
#define EFSYS_OPT_DIAG 0
|
#define EFSYS_OPT_DIAG 0
|
||||||
#define EFSYS_OPT_RX_SCALE 1
|
#define EFSYS_OPT_RX_SCALE 1
|
||||||
|
Loading…
Reference in New Issue
Block a user