sfc: add missing NVRAM partition types for EF10
authorEdward Cree <ecree@solarflare.com>
Wed, 7 Nov 2018 18:12:42 +0000 (18:12 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 8 Nov 2018 06:58:00 +0000 (22:58 -0800)
Expose the MUM/SUC Firmware, UEFI Expansion ROM and MC Status partitions
 of the NIC's NVRAM as MTDs if found on the NIC.  The first two are needed
 in order to properly update them when performing firmware updates; the MC
 Status partition is used to determine whether a signed firmware image was
 accepted or rejected by a Secure NIC.

Signed-off-by: Edward Cree <ecree@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/sfc/ef10.c

index 7eeac3d6cfe898a9a4ef6df9378d8c6d29383ce1..b6a50058bb8db90b0f8c459469b3cc058692efdc 100644 (file)
@@ -6041,6 +6041,10 @@ static const struct efx_ef10_nvram_type_info efx_ef10_nvram_types[] = {
        { NVRAM_PARTITION_TYPE_EXPROM_CONFIG_PORT3, 0,   3, "sfc_exp_rom_cfg" },
        { NVRAM_PARTITION_TYPE_LICENSE,            0,    0, "sfc_license" },
        { NVRAM_PARTITION_TYPE_PHY_MIN,            0xff, 0, "sfc_phy_fw" },
+       /* MUM and SUC firmware share the same partition type */
+       { NVRAM_PARTITION_TYPE_MUM_FIRMWARE,       0,    0, "sfc_mumfw" },
+       { NVRAM_PARTITION_TYPE_EXPANSION_UEFI,     0,    0, "sfc_uefi" },
+       { NVRAM_PARTITION_TYPE_STATUS,             0,    0, "sfc_status" }
 };
 
 static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
@@ -6091,6 +6095,9 @@ static int efx_ef10_mtd_probe_partition(struct efx_nic *efx,
        part->common.mtd.flags = MTD_CAP_NORFLASH;
        part->common.mtd.size = size;
        part->common.mtd.erasesize = erase_size;
+       /* sfc_status is read-only */
+       if (!erase_size)
+               part->common.mtd.flags |= MTD_NO_ERASE;
 
        return 0;
 }