diff --git a/src/nvme/types.h b/src/nvme/types.h index 17de43e27..74db346bb 100644 --- a/src/nvme/types.h +++ b/src/nvme/types.h @@ -8914,6 +8914,10 @@ enum nvme_features_id { * @NVME_FEAT_FDP_INDEX_MASK: * @NVME_FEAT_FDP_EVENTS_ENABLE_SHIFT: * @NVME_FEAT_FDP_EVENTS_ENABLE_MASK: + * @NVME_FEAT_BPWPC_BP0WPS_SHIFT: + * @NVME_FEAT_BPWPC_BP0WPS_MASK: + * @NVME_FEAT_BPWPC_BP1WPS_SHIFT: + * @NVME_FEAT_BPWPC_BP1WPS_MASK: */ enum nvme_feat { NVME_FEAT_ARBITRATION_BURST_SHIFT = 0, @@ -9054,6 +9058,10 @@ enum nvme_feat { NVME_FEAT_FDP_INDEX_MASK = 0xf, NVME_FEAT_FDP_EVENTS_ENABLE_SHIFT = 0, NVME_FEAT_FDP_EVENTS_ENABLE_MASK = 0x1, + NVME_FEAT_BPWPC_BP0WPS_SHIFT = 0, + NVME_FEAT_BPWPC_BP0WPS_MASK = 0x7, + NVME_FEAT_BPWPC_BP1WPS_SHIFT = 3, + NVME_FEAT_BPWPC_BP1WPS_MASK = 0x7, }; /** @@ -9495,6 +9503,22 @@ enum nvme_feat_perfc_r4karl { NVME_FEAT_PERFC_R4KARL_GE_1_NS = 0x17, }; +/** + * enum nvme_feat_bpwp_state - Boot Partition Write Protection State + * @NVME_FEAT_BPWPS_CHANGE_NOT_REQUESTED: Change in state not requested + * @NVME_FEAT_BPWPS_WRITE_UNLOCKED: Write Unlocked + * @NVME_FEAT_BPWPS_WRITE_LOCKED: Write Locked + * @NVME_FEAT_BPWPS_WRITE_LOCKED_PWR_CYCLE: Write Locked Until Power Cycle + * @NVME_FEAT_BPWPS_WRITE_PROTECTION_RPMB: Write Protection controlled by RPMB + */ +enum nvme_feat_bpwp_state { + NVME_FEAT_BPWPS_CHANGE_NOT_REQUESTED = 0, + NVME_FEAT_BPWPS_WRITE_UNLOCKED = 1, + NVME_FEAT_BPWPS_WRITE_LOCKED = 2, + NVME_FEAT_BPWPS_WRITE_LOCKED_PWR_CYCLE = 3, + NVME_FEAT_BPWPS_WRITE_PROTECTION_RPMB = 4, +}; + /** * enum nvme_fctype - Fabrics Command Types * @nvme_fabrics_type_property_set: Property set diff --git a/src/nvme/util.h b/src/nvme/util.h index 60865fa03..1b0c4c5ff 100644 --- a/src/nvme/util.h +++ b/src/nvme/util.h @@ -502,6 +502,9 @@ static inline void nvme_feature_decode_namespace_write_protect(__u32 value, *wps = NVME_FEAT_WP_WPS(value); } +#define NVME_FEAT_BPWPC_BP0WPS(v) NVME_GET(v, FEAT_BPWPC_BP0WPS) +#define NVME_FEAT_BPWPC_BP1WPS(v) NVME_GET(v, FEAT_BPWPC_BP1WPS) + static inline void nvme_id_ns_flbas_to_lbaf_inuse(__u8 flbas, __u8 *lbaf_inuse) { *lbaf_inuse = ((NVME_FLBAS_HIGHER(flbas) << 4) |