summaryrefslogtreecommitdiffstats
path: root/debian/patches/upstream/0001-ftbfs-big-endian.patch
blob: f92cc8f3336a1f704bed8dd09f9a17a91320a710 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Author: Jeremy Kerr <jk@codeconstruct.com.au>
Description: mi: endian fixes
 We have a couple of endian issues in the mi code: one where we're not
 converting cdw0 for MI commands, and one where we're using the wrong
 byte length for an existing conversion. There is also an error in the
 test suite, where we should be converting the nsze field of a
 nvme_id_ns.
 .
 This change fixes those, so that the test suite passes on a BE platform
 (ppc64 in my case).

diff -Naurp libnvme.orig/src/nvme/mi.c libnvme/src/nvme/mi.c
--- libnvme.orig/src/nvme/mi.c
+++ libnvme/src/nvme/mi.c
@@ -139,7 +139,7 @@ int nvme_mi_scan_ep(nvme_mi_ep_t ep, boo
 		struct nvme_mi_ctrl *ctrl;
 		__u16 id;
 
-		id = le32_to_cpu(list.identifier[i]);
+		id = le16_to_cpu(list.identifier[i]);
 		if (!id)
 			continue;
 
@@ -985,7 +985,7 @@ static int nvme_mi_read_data(nvme_mi_ep_
 	req_hdr.hdr.nmp = (NVME_MI_ROR_REQ << 7) |
 		(NVME_MI_MT_MI << 3); /* we always use command slot 0 */
 	req_hdr.opcode = nvme_mi_mi_opcode_mi_data_read;
-	req_hdr.cdw0 = cdw0;
+	req_hdr.cdw0 = cpu_to_le32(cdw0);
 
 	memset(&req, 0, sizeof(req));
 	req.hdr = &req_hdr.hdr;
diff -Naurp libnvme.orig/test/mi.c libnvme/test/mi.c
--- libnvme.orig/test/mi.c
+++ libnvme/test/mi.c
@@ -1287,7 +1287,7 @@ static void test_admin_ns_mgmt_create(st
 	assert(!rc);
 	assert(ns == 0x01020304);
 
-	nsid.nsze = 42;
+	nsid.nsze = cpu_to_le64(42);
 	rc = nvme_mi_admin_ns_mgmt_create(ctrl, &nsid, 0, &ns);
 	assert(rc);
 }