Blame SOURCES/0134-libcxl-return-the-partition-alignment-field-in-bytes.patch

26ccd9
From ac0066a6095e9ed0910fc560277ec693d3b507fa Mon Sep 17 00:00:00 2001
26ccd9
From: Alison Schofield <alison.schofield@intel.com>
26ccd9
Date: Tue, 22 Feb 2022 11:56:05 -0800
26ccd9
Subject: [PATCH 134/217] libcxl: return the partition alignment field in bytes
26ccd9
26ccd9
Per the CXL specification, the partition alignment field reports
26ccd9
the alignment value in multiples of 256MB. In the libcxl API, values
26ccd9
for all capacity fields are defined to return bytes.
26ccd9
26ccd9
Update the partition alignment accessor to return bytes so that it
26ccd9
is in sync with other capacity related fields.
26ccd9
26ccd9
Since this is early in the development cycle, the expectation is that
26ccd9
no third party consumers of this library have come to depend on the
26ccd9
encoded capacity field. If that is not the case, the original format
26ccd9
can be restored, and a new _bytes version introduced.
26ccd9
26ccd9
Link: https://lore.kernel.org/r/6b937b09b61ddf95e069fd7acfda0c5bbb845be8.1645558189.git.alison.schofield@intel.com
26ccd9
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
26ccd9
Signed-off-by: Alison Schofield <alison.schofield@intel.com>
26ccd9
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
26ccd9
---
26ccd9
 cxl/lib/libcxl.c | 13 +++++--------
26ccd9
 1 file changed, 5 insertions(+), 8 deletions(-)
26ccd9
26ccd9
diff --git a/cxl/lib/libcxl.c b/cxl/lib/libcxl.c
26ccd9
index 9413384..c05c13c 100644
26ccd9
--- a/cxl/lib/libcxl.c
26ccd9
+++ b/cxl/lib/libcxl.c
26ccd9
@@ -2308,15 +2308,12 @@ CXL_EXPORT int cxl_cmd_identify_get_fw_rev(struct cxl_cmd *cmd, char *fw_rev,
26ccd9
 CXL_EXPORT unsigned long long cxl_cmd_identify_get_partition_align(
26ccd9
 		struct cxl_cmd *cmd)
26ccd9
 {
26ccd9
-	struct cxl_cmd_identify *id =
26ccd9
-			(struct cxl_cmd_identify *)cmd->send_cmd->out.payload;
26ccd9
-
26ccd9
-	if (cmd->send_cmd->id != CXL_MEM_COMMAND_ID_IDENTIFY)
26ccd9
-		return -EINVAL;
26ccd9
-	if (cmd->status < 0)
26ccd9
-		return cmd->status;
26ccd9
+	struct cxl_cmd_identify *c;
26ccd9
 
26ccd9
-	return le64_to_cpu(id->partition_align);
26ccd9
+	c = cmd_to_identify(cmd);
26ccd9
+	if (!c)
26ccd9
+		return ULLONG_MAX;
26ccd9
+	return cxl_capacity_to_bytes(c->partition_align);
26ccd9
 }
26ccd9
 
26ccd9
 CXL_EXPORT unsigned int cxl_cmd_identify_get_label_size(struct cxl_cmd *cmd)
26ccd9
-- 
26ccd9
2.27.0
26ccd9