@@ -3547,6 +3547,96 @@ enum nvme_apst_entry {
35473547 NVME_APST_ENTRY_ITPT_MASK = 0xffffff ,
35483548};
35493549
3550+ /**
3551+ * struct nvme_metadata_element_desc - Metadata Element Descriptor
3552+ * @type: Element Type (ET)
3553+ * @rev: Element Revision (ER)
3554+ * @len: Element Length (ELEN)
3555+ * @val: Element Value (EVAL), UTF-8 string
3556+ */
3557+ struct nvme_metadata_element_desc {
3558+ __u8 type ;
3559+ __u8 rev ;
3560+ __u16 len ;
3561+ __u8 val [0 ];
3562+ };
3563+
3564+ /**
3565+ * struct nvme_host_metadata - Host Metadata Data Structure
3566+ * @ndesc: Number of metadata element descriptors
3567+ * @descs: Metadata element descriptors
3568+ */
3569+ struct nvme_host_metadata {
3570+ __u8 ndesc ;
3571+ __u8 rsvd1 ;
3572+ union {
3573+ struct nvme_metadata_element_desc descs [0 ];
3574+ __u8 descs_buf [4094 ];
3575+ };
3576+ };
3577+
3578+ /**
3579+ * enum nvme_ctrl_metadata_type - Controller Metadata Element Types
3580+ * @NVME_CTRL_METADATA_OS_CTRL_NAME: Name of the controller in
3581+ * the operating system.
3582+ * @NVME_CTRL_METADATA_OS_DRIVER_NAME: Name of the driver in the
3583+ * operating system.
3584+ * @NVME_CTRL_METADATA_OS_DRIVER_VER: Version of the driver in
3585+ * the operating system.
3586+ * @NVME_CTRL_METADATA_PRE_BOOT_CTRL_NAME: Name of the controller in
3587+ * the pre-boot environment.
3588+ * @NVME_CTRL_METADATA_PRE_BOOT_DRIVER_NAME: Name of the driver in the
3589+ * pre-boot environment.
3590+ * @NVME_CTRL_METADATA_PRE_BOOT_DRIVER_VER: Version of the driver in the
3591+ * pre-boot environment.
3592+ * @NVME_CTRL_METADATA_SYS_PROC_MODEL: Model of the processor.
3593+ * @NVME_CTRL_METADATA_CHIPSET_DRV_NAME: Chipset driver name.
3594+ * @NVME_CTRL_METADATA_CHIPSET_DRV_VERSION: Chipsset driver version.
3595+ * @NVME_CTRL_METADATA_OS_NAME_AND_BUILD: Operating system name and build.
3596+ * @NVME_CTRL_METADATA_SYS_PROD_NAME: System product name.
3597+ * @NVME_CTRL_METADATA_FIRMWARE_VERSION: Host firmware (e.g UEFI) version.
3598+ * @NVME_CTRL_METADATA_OS_DRIVER_FILENAME: Operating system driver filename.
3599+ * @NVME_CTRL_METADATA_DISPLAY_DRV_NAME: Display driver name.
3600+ * @NVME_CTRL_METADATA_DISPLAY_DRV_VERSION: Display driver version.
3601+ * @NVME_CTRL_METADATA_HOST_DET_FAIL_REC: Failure record.
3602+ */
3603+ enum nvme_ctrl_metadata_type {
3604+ NVME_CTRL_METADATA_OS_CTRL_NAME = 0x01 ,
3605+ NVME_CTRL_METADATA_OS_DRIVER_NAME = 0x02 ,
3606+ NVME_CTRL_METADATA_OS_DRIVER_VER = 0x03 ,
3607+ NVME_CTRL_METADATA_PRE_BOOT_CTRL_NAME = 0x04 ,
3608+ NVME_CTRL_METADATA_PRE_BOOT_DRIVER_NAME = 0x05 ,
3609+ NVME_CTRL_METADATA_PRE_BOOT_DRIVER_VER = 0x06 ,
3610+ NVME_CTRL_METADATA_SYS_PROC_MODEL = 0x07 ,
3611+ NVME_CTRL_METADATA_CHIPSET_DRV_NAME = 0x08 ,
3612+ NVME_CTRL_METADATA_CHIPSET_DRV_VERSION = 0x09 ,
3613+ NVME_CTRL_METADATA_OS_NAME_AND_BUILD = 0x0a ,
3614+ NVME_CTRL_METADATA_SYS_PROD_NAME = 0x0b ,
3615+ NVME_CTRL_METADATA_FIRMWARE_VERSION = 0x0c ,
3616+ NVME_CTRL_METADATA_OS_DRIVER_FILENAME = 0x0d ,
3617+ NVME_CTRL_METADATA_DISPLAY_DRV_NAME = 0x0e ,
3618+ NVME_CTRL_METADATA_DISPLAY_DRV_VERSION = 0x0f ,
3619+ NVME_CTRL_METADATA_HOST_DET_FAIL_REC = 0x10 ,
3620+ };
3621+
3622+ /**
3623+ * enum nvme_ns_metadata_type - Namespace Metadata Element Types
3624+ * @NVME_NS_METADATA_OS_NS_NAME: Name of the namespace in the the
3625+ * operating system
3626+ * @NVME_NS_METADATA_PRE_BOOT_NS_NAME: Name of the namespace in the pre-boot
3627+ * environment.
3628+ * @NVME_NS_METADATA_OS_NS_QUAL_1: First qualifier of the Operating System
3629+ * Namespace Name.
3630+ * @NVME_NS_METADATA_OS_NS_QUAL_2: Second qualifier of the Operating System
3631+ * Namespace Name.
3632+ */
3633+ enum nvme_ns_metadata_type {
3634+ NVME_NS_METADATA_OS_NS_NAME = 0x01 ,
3635+ NVME_NS_METADATA_PRE_BOOT_NS_NAME = 0x02 ,
3636+ NVME_NS_METADATA_OS_NS_QUAL_1 = 0x03 ,
3637+ NVME_NS_METADATA_OS_NS_QUAL_2 = 0x04 ,
3638+ };
3639+
35503640/**
35513641 * struct nvme_timestamp -
35523642 * timestamp:
@@ -5268,6 +5358,8 @@ enum nvme_cmd_get_log_lid {
52685358 * @NVME_FEAT_FID_ENDURANCE_EVT_CFG:
52695359 * @NVME_FEAT_FID_IOCS_PROFILE:
52705360 * @NVME_FEAT_FID_SPINUP_CONTROL:
5361+ * @NVME_FEAT_FID_CTRL_METADATA: Controller Metadata
5362+ * @NVME_FEAT_FID_NS_METADATA: Namespace Metadata
52715363 * @NVME_FEAT_FID_SW_PROGRESS:
52725364 * @NVME_FEAT_FID_HOST_ID:
52735365 * @NVME_FEAT_FID_RESV_MASK:
@@ -5301,6 +5393,8 @@ enum nvme_features_id {
53015393 NVME_FEAT_FID_ENDURANCE_EVT_CFG = 0x18 ,
53025394 NVME_FEAT_FID_IOCS_PROFILE = 0x19 , /* XXX: Placeholder until assigned */
53035395 NVME_FEAT_FID_SPINUP_CONTROL = 0x1a ,
5396+ NVME_FEAT_FID_CTRL_METADATA = 0x7e ,
5397+ NVME_FEAT_FID_NS_METADATA = 0x7f ,
53045398 NVME_FEAT_FID_SW_PROGRESS = 0x80 ,
53055399 NVME_FEAT_FID_HOST_ID = 0x81 ,
53065400 NVME_FEAT_FID_RESV_MASK = 0x82 ,
0 commit comments