Skip to content

Commit 7ad7ab9

Browse files
committed
nvme-apple: fix sparse endianess warnings
The new nvme-apple driver is missing a few conversions to and from little-endian data: drivers/nvme/host/apple.c:291:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] prp1 @@ got restricted __le64 [usertype] prp1 @@ drivers/nvme/host/apple.c:291:19: sparse: expected unsigned long long [usertype] prp1 drivers/nvme/host/apple.c:291:19: sparse: got restricted __le64 [usertype] prp1 drivers/nvme/host/apple.c:292:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] prp2 @@ got restricted __le64 [usertype] prp2 @@ drivers/nvme/host/apple.c:293:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] length @@ got restricted __le16 [usertype] length @@ drivers/nvme/host/apple.c:351:52: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int [usertype] next_dma_addr @@ got restricted __le64 [usertype] @@ drivers/nvme/host/apple.c:456:45: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] @@ got unsigned int [addressable] [usertype] prp_dma @@ drivers/nvme/host/apple.c:459:31: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] @@ got unsigned long long [assigned] [usertype] dma_addr @@ drivers/nvme/host/apple.c:474:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] prp1 @@ got unsigned int [usertype] dma_address @@ drivers/nvme/host/apple.c:475:25: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] prp2 @@ got unsigned int [usertype] first_dma @@ Reported-by: kernel test robot <[email protected]> Signed-off-by: Arnd Bergmann <[email protected]>
1 parent bdc33da commit 7ad7ab9

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

drivers/nvme/host/apple.c

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@ struct apple_nvmmu_tcb {
112112

113113
u8 command_id;
114114
u8 _unk0;
115-
u32 length;
116-
u8 _unk1[16];
117-
u64 prp1;
118-
u64 prp2;
115+
__le16 length;
116+
u8 _unk1[18];
117+
__le64 prp1;
118+
__le64 prp2;
119119
u8 _unk2[16];
120120
u8 aes_iv[8];
121121
u8 _aes_unk[64];
@@ -348,7 +348,7 @@ static void apple_nvme_free_prps(struct apple_nvme *anv, struct request *req)
348348

349349
for (i = 0; i < iod->npages; i++) {
350350
__le64 *prp_list = apple_nvme_iod_list(req)[i];
351-
dma_addr_t next_dma_addr = prp_list[last_prp];
351+
dma_addr_t next_dma_addr = le64_to_cpu(prp_list[last_prp]);
352352

353353
dma_pool_free(anv->prp_page_pool, prp_list, dma_addr);
354354
dma_addr = next_dma_addr;
@@ -453,10 +453,10 @@ static blk_status_t apple_nvme_setup_prps(struct apple_nvme *anv,
453453
goto free_prps;
454454
list[iod->npages++] = prp_list;
455455
prp_list[0] = old_prp_list[i - 1];
456-
old_prp_list[i - 1] = prp_dma;
456+
old_prp_list[i - 1] = cpu_to_le64(prp_dma);
457457
i = 1;
458458
}
459-
prp_list[i++] = dma_addr;
459+
prp_list[i++] = cpu_to_le64(dma_addr);
460460
dma_len -= NVME_CTRL_PAGE_SIZE;
461461
dma_addr += NVME_CTRL_PAGE_SIZE;
462462
length -= NVME_CTRL_PAGE_SIZE;
@@ -471,8 +471,8 @@ static blk_status_t apple_nvme_setup_prps(struct apple_nvme *anv,
471471
dma_len = sg_dma_len(sg);
472472
}
473473
done:
474-
cmnd->dptr.prp1 = sg_dma_address(iod->sg);
475-
cmnd->dptr.prp2 = iod->first_dma;
474+
cmnd->dptr.prp1 = cpu_to_le64(sg_dma_address(iod->sg));
475+
cmnd->dptr.prp2 = cpu_to_le64(iod->first_dma);
476476
return BLK_STS_OK;
477477
free_prps:
478478
apple_nvme_free_prps(anv, req);
@@ -498,9 +498,9 @@ static blk_status_t apple_nvme_setup_prp_simple(struct apple_nvme *anv,
498498
return BLK_STS_RESOURCE;
499499
iod->dma_len = bv->bv_len;
500500

501-
cmnd->dptr.prp1 = iod->first_dma;
501+
cmnd->dptr.prp1 = cpu_to_le64(iod->first_dma);
502502
if (bv->bv_len > first_prp_len)
503-
cmnd->dptr.prp2 = iod->first_dma + first_prp_len;
503+
cmnd->dptr.prp2 = cpu_to_le64(iod->first_dma + first_prp_len);
504504
return BLK_STS_OK;
505505
}
506506

@@ -570,7 +570,7 @@ static inline bool apple_nvme_cqe_pending(struct apple_nvme_queue *q)
570570
{
571571
struct nvme_completion *hcqe = &q->cqes[q->cq_head];
572572

573-
return (READ_ONCE(hcqe->status) & 1) == q->cq_phase;
573+
return (le16_to_cpu(READ_ONCE(hcqe->status)) & 1) == q->cq_phase;
574574
}
575575

576576
static inline struct blk_mq_tags *
@@ -682,11 +682,11 @@ static int apple_nvme_create_cq(struct apple_nvme *anv)
682682
* is attached to the request.
683683
*/
684684
c.create_cq.opcode = nvme_admin_create_cq;
685-
c.create_cq.prp1 = anv->ioq.cq_dma_addr;
686-
c.create_cq.cqid = 1;
687-
c.create_cq.qsize = APPLE_ANS_MAX_QUEUE_DEPTH - 1;
688-
c.create_cq.cq_flags = NVME_QUEUE_PHYS_CONTIG | NVME_CQ_IRQ_ENABLED;
689-
c.create_cq.irq_vector = 0;
685+
c.create_cq.prp1 = cpu_to_le64(anv->ioq.cq_dma_addr);
686+
c.create_cq.cqid = cpu_to_le16(1);
687+
c.create_cq.qsize = cpu_to_le16(APPLE_ANS_MAX_QUEUE_DEPTH - 1);
688+
c.create_cq.cq_flags = cpu_to_le16(NVME_QUEUE_PHYS_CONTIG | NVME_CQ_IRQ_ENABLED);
689+
c.create_cq.irq_vector = cpu_to_le16(0);
690690

691691
return nvme_submit_sync_cmd(anv->ctrl.admin_q, &c, NULL, 0);
692692
}
@@ -696,7 +696,7 @@ static int apple_nvme_remove_cq(struct apple_nvme *anv)
696696
struct nvme_command c = {};
697697

698698
c.delete_queue.opcode = nvme_admin_delete_cq;
699-
c.delete_queue.qid = 1;
699+
c.delete_queue.qid = cpu_to_le16(1);
700700

701701
return nvme_submit_sync_cmd(anv->ctrl.admin_q, &c, NULL, 0);
702702
}
@@ -710,11 +710,11 @@ static int apple_nvme_create_sq(struct apple_nvme *anv)
710710
* is attached to the request.
711711
*/
712712
c.create_sq.opcode = nvme_admin_create_sq;
713-
c.create_sq.prp1 = anv->ioq.sq_dma_addr;
714-
c.create_sq.sqid = 1;
715-
c.create_sq.qsize = APPLE_ANS_MAX_QUEUE_DEPTH - 1;
716-
c.create_sq.sq_flags = NVME_QUEUE_PHYS_CONTIG;
717-
c.create_sq.cqid = 1;
713+
c.create_sq.prp1 = cpu_to_le64(anv->ioq.sq_dma_addr);
714+
c.create_sq.sqid = cpu_to_le16(1);
715+
c.create_sq.qsize = cpu_to_le16(APPLE_ANS_MAX_QUEUE_DEPTH - 1);
716+
c.create_sq.sq_flags = cpu_to_le16(NVME_QUEUE_PHYS_CONTIG);
717+
c.create_sq.cqid = cpu_to_le16(1);
718718

719719
return nvme_submit_sync_cmd(anv->ctrl.admin_q, &c, NULL, 0);
720720
}
@@ -724,7 +724,7 @@ static int apple_nvme_remove_sq(struct apple_nvme *anv)
724724
struct nvme_command c = {};
725725

726726
c.delete_queue.opcode = nvme_admin_delete_sq;
727-
c.delete_queue.qid = 1;
727+
c.delete_queue.qid = cpu_to_le16(1);
728728

729729
return nvme_submit_sync_cmd(anv->ctrl.admin_q, &c, NULL, 0);
730730
}

0 commit comments

Comments
 (0)