Commit d24e091d authored by Martin K. Petersen's avatar Martin K. Petersen
Browse files

Merge patch series "mpi3mr: Enhancements for mpi3mr"

Ranjan Kumar <ranjan.kumar@broadcom.com> says:

Enhancements for mpi3mr driver

Link: https://patch.msgid.link/20260116060719.32937-1-ranjan.kumar@broadcom.com


Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parents 15df721f 943e9049
Loading
Loading
Loading
Loading
+89 −3
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *  Copyright 2017-2023 Broadcom Inc. All rights reserved.
 *  Copyright 2017-2026 Broadcom Inc. All rights reserved.
 */
#ifndef MPI30_CNFG_H
#define MPI30_CNFG_H     1
@@ -1037,6 +1037,7 @@ struct mpi3_io_unit_page5 {
#define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SATA_SSD_SHIFT        (2)
#define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SAS_SSD_MASK          (0x0003)
#define MPI3_IOUNIT5_DEVICE_SHUTDOWN_SAS_SSD_SHIFT         (0)
#define MPI3_IOUNIT5_DEVICE_SHUTDOWN_HDD_SPINDOWN_ENABLE    (0x8000)
#define MPI3_IOUNIT5_FLAGS_SATAPUIS_MASK                   (0x0c)
#define MPI3_IOUNIT5_FLAGS_SATAPUIS_NOT_SUPPORTED          (0x00)
#define MPI3_IOUNIT5_FLAGS_SATAPUIS_OS_CONTROLLED          (0x04)
@@ -1074,7 +1075,8 @@ struct mpi3_io_unit_page8 {
	u8                                 current_key_encryption_algo;
	u8                                 key_digest_hash_algo;
	union mpi3_version_union              current_svn;
	__le32                             reserved14;
	__le16                             pending_svn_time;
	__le16                             reserved16;
	__le32                             current_key[128];
	union mpi3_iounit8_digest             digest[MPI3_IOUNIT8_DIGEST_MAX];
};
@@ -1406,6 +1408,7 @@ struct mpi3_driver_page1 {
};

#define MPI3_DRIVER1_PAGEVERSION               (0x00)
#define MPI3_DRIVER1_FLAGS_DEVICE_SHUTDOWN_ON_UNLOAD_DISABLE		(0x0001)
#ifndef MPI3_DRIVER2_TRIGGER_MAX
#define MPI3_DRIVER2_TRIGGER_MAX           (1)
#endif
@@ -1561,7 +1564,9 @@ struct mpi3_security1_key_record {
	u8                                 consumer;
	__le16                             key_data_size;
	__le32                             additional_key_data;
	__le32                             reserved08[2];
	u8                                 library_version;
	u8                                 reserved09[3];
	__le32                             reserved0c;
	union mpi3_security1_key_data         key_data;
};

@@ -1614,6 +1619,85 @@ struct mpi3_security_page2 {
	u8                                 reserved9d[3];
	struct mpi3_security2_trusted_root     trusted_root[MPI3_SECURITY2_TRUSTED_ROOT_MAX];
};

struct mpi3_security_page3 {
	struct mpi3_config_page_header         header;
	__le16                             key_data_length;
	__le16                             reserved0a;
	u8                                 key_number;
	u8                                 reserved0d[3];
	union mpi3_security_mac               mac;
	union mpi3_security_nonce             nonce;
	__le32                             reserved90[12];
	u8                                 flags;
	u8                                 consumer;
	__le16                             key_data_size;
	__le32                             additional_key_data;
	u8                                 library_version;
	u8                                 reserved_c9[3];
	__le32                             reserved_cc;
	u8                                 key_data[];
};

#define MPI3_SECURITY3_PAGEVERSION               (0x00)
#define MPI3_SECURITY3_FLAGS_TYPE_MASK           (0x0f)
#define MPI3_SECURITY3_FLAGS_TYPE_SHIFT          (0)
#define MPI3_SECURITY3_FLAGS_TYPE_NOT_VALID      (0)
#define MPI3_SECURITY3_FLAGS_TYPE_MLDSA_PRIVATE  (1)
#define MPI3_SECURITY3_FLAGS_TYPE_MLDSA_PUBLIC   (2)
struct mpi3_security_page10 {
	struct mpi3_config_page_header         header;
	__le32                             reserved08[2];
	union mpi3_security_mac               mac;
	union mpi3_security_nonce             nonce;
	__le64                             current_token_nonce;
	__le64                             previous_token_nonce;
	__le32                             reserved_a0[8];
	u8                                 diagnostic_auth_id[64];
};
#define MPI3_SECURITY10_PAGEVERSION               (0x00)

struct mpi3_security_page11 {
	struct mpi3_config_page_header         header;
	u8                                 flags;
	u8                                 reserved09[3];
	__le32                             reserved0c;
	__le32                             diagnostic_token_length;
	__le32                             reserved14[3];
	u8                                 diagnostic_token[];
};
#define MPI3_SECURITY11_PAGEVERSION               (0x00)
#define MPI3_SECURITY11_FLAGS_TOKEN_ENABLED       (0x01)

struct mpi3_security12_diag_feature {
	__le32                             feature_identifier;
	u8                                 feature_size;
	u8                                 feature_type;
	__le16                             reserved06;
	u8                                 status;
	u8                                 section;
	__le16                             reserved0a;
	__le32                             reserved0c;
	u8                                 feature_data[64];
};
#define MPI3_SECURITY12_DIAG_FEATURE_STATUS_MASK                 (0x03)
#define MPI3_SECURITY12_DIAG_FEATURE_STATUS_SHIFT                (0)
#define MPI3_SECURITY12_DIAG_FEATURE_STATUS_UNKNOWN              (0x00)
#define MPI3_SECURITY12_DIAG_FEATURE_STATUS_DISABLED             (0x01)
#define MPI3_SECURITY12_DIAG_FEATURE_STATUS_ENABLED              (0x02)
#define MPI3_SECURITY12_DIAG_FEATURE_SECTION_PROTECTED           (0x00)
#define MPI3_SECURITY12_DIAG_FEATURE_SECTION_UNPROTECTED         (0x01)
#define MPI3_SECURITY12_DIAG_FEATURE_SECTION_PAYLOAD             (0x02)
#define MPI3_SECURITY12_DIAG_FEATURE_SECTION_SIGNATURE           (0x03)
struct mpi3_security_page12 {
	struct mpi3_config_page_header         header;
	__le32                             reserved08[2];
	u8                                 num_diag_features;
	u8                                 reserved11[3];
	__le32                             reserved14[3];
	struct mpi3_security12_diag_feature    diag_feature[];
};

#define MPI3_SECURITY2_PAGEVERSION               (0x00)
struct mpi3_sas_io_unit0_phy_data {
	u8                 io_unit_port;
@@ -2314,6 +2398,8 @@ struct mpi3_device0_sas_sata_format {
	u8         attached_phy_identifier;
	u8         max_port_connections;
	u8         zone_group;
	u8         reserved10[3];
	u8         negotiated_link_rate;
};

#define MPI3_DEVICE0_SASSATA_FLAGS_WRITE_SAME_UNMAP_NCQ (0x0400)
+99 −3
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *  Copyright 2018-2023 Broadcom Inc. All rights reserved.
 *  Copyright 2018-2026 Broadcom Inc. All rights reserved.
 */
#ifndef MPI30_IMAGE_H
#define MPI30_IMAGE_H     1
@@ -135,7 +135,7 @@ struct mpi3_ci_manifest_mpi {
	__le32                                   package_version_string_offset;
	__le32                                   package_build_date_string_offset;
	__le32                                   package_build_time_string_offset;
	__le32                                   reserved4c;
	__le32                                   diag_authorization_key_offset;
	__le32                                   diag_authorization_identifier[16];
	struct mpi3_ci_manifest_mpi_comp_image_ref   component_image_ref[MPI3_CI_MANIFEST_MPI_MAX];
};
@@ -148,16 +148,112 @@ struct mpi3_ci_manifest_mpi {
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_GCA                        (0x50)
#define MPI3_CI_MANIFEST_MPI_RELEASE_LEVEL_POINT                      (0x60)
#define MPI3_CI_MANIFEST_MPI_FLAGS_DIAG_AUTHORIZATION                 (0x01)
#define MPI3_CI_MANIFEST_MPI_FLAGS_DIAG_AUTH_ANCHOR_MASK		(0x06)
#define MPI3_CI_MANIFEST_MPI_FLAGS_DIAG_AUTH_ANCHOR_SHIFT		(1)
#define MPI3_CI_MANIFEST_MPI_FLAGS_DIAG_AUTH_ANCHOR_IDENTIFIER		(0x00)
#define MPI3_CI_MANIFEST_MPI_FLAGS_DIAG_AUTH_ANCHOR_KEY_OFFSET		(0x02)
#define MPI3_CI_MANIFEST_MPI_SUBSYSTEMID_IGNORED                   (0xffff)
#define MPI3_CI_MANIFEST_MPI_PKG_VER_STR_OFF_UNSPECIFIED           (0x00000000)
#define MPI3_CI_MANIFEST_MPI_PKG_BUILD_DATE_STR_OFF_UNSPECIFIED    (0x00000000)
#define MPI3_CI_MANIFEST_MPI_PKG_BUILD_TIME_STR_OFF_UNSPECIFIED    (0x00000000)

struct mpi3_sb_manifest_ci_digest {
	__le32                      signature1;
	__le32                      reserved04[2];
	u8                          hash_algorithm;
	u8                          reserved09[3];
	struct mpi3_comp_image_version  component_image_version;
	__le32                      component_image_version_string_offset;
	__le32                      digest[16];
};

struct mpi3_sb_manifest_ci_ref_element {
	u8                              num_ci_digests;
	u8                              reserved01[3];
	struct mpi3_sb_manifest_ci_digest	ci_digest[];
};

struct mpi3_sb_manifest_embedded_key_element {
	__le32                      reserved00[3];
	u8                          key_algorithm;
	u8                          flags;
	__le16                      public_key_size;
	__le32                      start_tag;
	__le32                      public_key[];
};

#define MPI3_SB_MANIFEST_EMBEDDED_KEY_FLAGS_KEYINDEX_MASK		(0x03)
#define MPI3_SB_MANIFEST_EMBEDDED_KEY_FLAGS_KEYINDEX_STRT		(0x00)
#define MPI3_SB_MANIFEST_EMBEDDED_KEY_FLAGS_KEYINDEX_K2GO		(0x01)
#define MPI3_SB_MANIFEST_EMBEDDED_KEY_STARTTAG_STRT			(0x54525453)
#define MPI3_SB_MANIFEST_EMBEDDED_KEY_STARTTAG_K2GO			(0x4f47324b)
#define MPI3_SB_MANIFEST_EMBEDDED_KEY_ENDTAG_STOP			(0x504f5453)
#define MPI3_SB_MANIFEST_EMBEDDED_KEY_ENDTAG_K2ST			(0x5453324b)

struct mpi3_sb_manifest_diag_key_element {
	__le32                      reserved00[3];
	u8                          key_algorithm;
	u8                          flags;
	__le16                      public_key_size;
	__le32                      public_key[];
};

#define MPI3_SB_MANIFEST_DIAG_KEY_FLAGS_KEYINDEX_MASK		(0x03)
#define MPI3_SB_MANIFEST_DIAG_KEY_FLAGS_KEYSELECT_FW_KEY	(0x04)
union mpi3_sb_manifest_element_data {
	struct mpi3_sb_manifest_ci_ref_element           ci_ref;
	struct mpi3_sb_manifest_embedded_key_element     embed_key;
	struct mpi3_sb_manifest_diag_key_element         diag_key;
	__le32                                       dword;
};
struct mpi3_sb_manifest_element {
	u8                                   manifest_element_form;
	u8                                   reserved01[3];
	union mpi3_sb_manifest_element_data     form_specific[];
};
#define MPI3_SB_MANIFEST_ELEMENT_FORM_CI_REFS		(0x01)
#define MPI3_SB_MANIFEST_ELEMENT_FORM_EMBED_KEY		(0x02)
#define MPI3_SB_MANIFEST_ELEMENT_FORM_DIAG_KEY		(0x03)
struct mpi3_sb_manifest_mpi {
	u8                                       manifest_type;
	u8                                       reserved01[3];
	__le32                                   reserved04[3];
	u8                                       reserved10;
	u8                                       release_level;
	__le16                                   reserved12;
	__le16                                   reserved14;
	__le16                                   flags;
	__le32                                   reserved18[2];
	__le16                                   vendor_id;
	__le16                                   device_id;
	__le16                                   subsystem_vendor_id;
	__le16                                   subsystem_id;
	__le32                                   reserved28[2];
	union mpi3_version_union                    package_security_version;
	__le32                                   reserved34;
	struct mpi3_comp_image_version               package_version;
	__le32                                   package_version_string_offset;
	__le32                                   package_build_date_string_offset;
	__le32                                   package_build_time_string_offset;
	__le32                                   component_image_references_offset;
	__le32                                   embedded_key0offset;
	__le32                                   embedded_key1offset;
	__le32                                   diag_authorization_key_offset;
	__le32                                   reserved5c[9];
	struct mpi3_sb_manifest_element              manifest_elements[];
};

union mpi3_ci_manifest {
	struct mpi3_ci_manifest_mpi               mpi;
	struct mpi3_sb_manifest_mpi               sb_mpi;
	__le32                                dword[1];
};

#define MPI3_SB_MANIFEST_APU_IMMEDIATE_DEFER_APU_ENABLE			(0x01)

#define MPI3_CI_MANIFEST_TYPE_MPI			(0x00)
#define MPI3_CI_MANIFEST_TYPE_SB			(0x01)

struct mpi3_extended_image_header {
	u8                                image_type;
	u8                                reserved01[3];
+1 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *  Copyright 2016-2023 Broadcom Inc. All rights reserved.
 *  Copyright 2016-2026 Broadcom Inc. All rights reserved.
 */
#ifndef MPI30_INIT_H
#define MPI30_INIT_H     1
+1 −0
Original line number Diff line number Diff line
@@ -661,6 +661,7 @@ struct mpi3_event_data_diag_buffer_status_change {
#define MPI3_EVENT_DIAG_BUFFER_STATUS_CHANGE_RC_RELEASED             (0x01)
#define MPI3_EVENT_DIAG_BUFFER_STATUS_CHANGE_RC_PAUSED               (0x02)
#define MPI3_EVENT_DIAG_BUFFER_STATUS_CHANGE_RC_RESUMED              (0x03)
#define MPI3_EVENT_DIAG_BUFFER_STATUS_CHANGE_RC_CLEARED (0x04)
#define MPI3_PEL_LOCALE_FLAGS_NON_BLOCKING_BOOT_EVENT   (0x0200)
#define MPI3_PEL_LOCALE_FLAGS_BLOCKING_BOOT_EVENT       (0x0100)
#define MPI3_PEL_LOCALE_FLAGS_PCIE                      (0x0080)
+1 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *  Copyright 2016-2023 Broadcom Inc. All rights reserved.
 *  Copyright 2016-2026 Broadcom Inc. All rights reserved.
 *
 */
#ifndef MPI30_PCI_H
Loading