]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
libnvdimm/label: Define CXL region labels
authorDan Williams <dan.j.williams@intel.com>
Tue, 24 Aug 2021 16:06:36 +0000 (09:06 -0700)
committerDan Williams <dan.j.williams@intel.com>
Tue, 24 Aug 2021 19:08:29 +0000 (12:08 -0700)
Add a definition of the CXL 2.0 region label format. Note this is done
as a separate patch to make the next patch that adds namespace label
support easier to read.

Reported-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/r/162982119604.1124374.8364301519543316156.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/label.h

index 31f94fad7b929869c385d60cf4cb5acdc7d7be09..76ecd0347dc27e6d57c60bd00281cfe24cac1040 100644 (file)
@@ -65,6 +65,36 @@ struct nd_namespace_index {
        u8 free[];
 };
 
+/**
+ * struct cxl_region_label - CXL 2.0 Table 211
+ * @type: uuid identifying this label format (region)
+ * @uuid: uuid for the region this label describes
+ * @flags: NSLABEL_FLAG_UPDATING (all other flags reserved)
+ * @position: this label's position in the set
+ * @dpa: start address in device-local capacity for this label
+ * @rawsize: size of this label's contribution to region
+ * @hpa: mandatory system physical address to map this region
+ * @slot: slot id of this label in label area
+ * @ig: interleave granularity (1 << @ig) * 256 bytes
+ * @align: alignment in SZ_256M blocks
+ * @checksum: fletcher64 sum of this label
+ */
+struct cxl_region_label {
+       u8 type[NSLABEL_UUID_LEN];
+       u8 uuid[NSLABEL_UUID_LEN];
+       __le32 flags;
+       __le16 nlabel;
+       __le16 position;
+       __le64 dpa;
+       __le64 rawsize;
+       __le64 hpa;
+       __le32 slot;
+       __le32 ig;
+       __le32 align;
+       u8 reserved[0xac];
+       __le64 checksum;
+};
+
 /**
  * struct nd_namespace_label - namespace superblock
  * @uuid: UUID per RFC 4122