From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754562AbdBNVXr (ORCPT ); Tue, 14 Feb 2017 16:23:47 -0500 Received: from mout.kundenserver.de ([212.227.126.134]:61059 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750810AbdBNVXi (ORCPT ); Tue, 14 Feb 2017 16:23:38 -0500 From: Arnd Bergmann To: "James E.J. Bottomley" , "Martin K. Petersen" Cc: Arnd Bergmann , Kashyap Desai , Sumit Saxena , Shivasharan S , Tomas Henzl , Hannes Reinecke , Sasikumar Chandrasekaran , megaraidlinux.pdl@broadcom.com, linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] scsi: megaraid_sas: handle dma_addr_t right on 32-bit Date: Tue, 14 Feb 2017 22:21:51 +0100 Message-Id: <20170214212238.2696334-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:c1BhQI5aZNrRfQEqhsjaXf7FQl1tG9JrBMYJ2+ekuNOocUQQELu PbjgQN0KENdVvwwW7Sgcd6Ffx7WHbRCWUfCy9aUr+K1ozgxuHUF7LToSzOzuYwkSwT1xc+G BSBixb6JLoMBUKfkDDUXjTd9P9pgR95ZXgJ/Q4sesLAp/r/5xWI4vcL8QSc509lDqss//uq HTqv2rQFYQlkIjQfH+PJw== X-UI-Out-Filterresults: notjunk:1;V01:K0:/DWwiqZdQro=:uuJR1vVGr29ZvnzVsq1ioM 6euFh6GbPYmLX04wDxTEMzuBQWF92YIM4HLyUnmKNiaLuLQgRkwuVWLHVVKho1VuAzSeR/SL4 3U61EkyPHFT/X849GqCwMU5eCjCkbehhVA8nihUFcZ5ltdpVIPaycZkNcY53j+y9cBfPq96ki KQQl11R23YImKBRq3GZpBjTZbxo+7wGjX/vnKzR+i/tw5qTkJRx/w+4C7LOt4fx1kMkx+y+jG 0lrOLbaQ1aTYz7o2KX0Zo3LBnzyQnmHtfteJmYYqANcerFL0rzhmbZJyUQYC5ESr75k7Ws1x3 63LDEJhFkaLEu9bZmlqZZEA2DKFfR9GFMk6E1zrKiUVjYXLJSENHXYamEFo7Jl7srJE+8NhBn DFfkLcEqLxlm+eta56Jv1rl0q/8Y1YuW+q/D1Z1vjeIKeRcfCk4NXM0Usststf0rzGC/qOfOP C3QHajna2Jc/764t9UQ+6sabt3RufEDPEy1nI/qiL+V2iGliFY+/Uc5stUNviGC2tUoEPWjlN t/JQk/j1ierLBY5CQFPpOEZsdzV6z2GefIAQfSWEf7DbN3glK6faFk1SQAQ5Vqyz2V/QZC0l0 iljMlMjayouIXQKOYHJBYQhCavFmHsvMlOl5C17OAKF7yZKkrr1XG8JT1E4VgRubmi1Zf1nKZ JzPcnnp0x5/mTZpixv7ZIJm/j6Zjqc+ICKRHHzRUVdjUcOJNdKJ9qYBRACxUj+xkloEc= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When building with a dma_addr_t that is different from pointer size, we get this warning: drivers/scsi/megaraid/megaraid_sas_fusion.c: In function 'megasas_make_prp_nvme': drivers/scsi/megaraid/megaraid_sas_fusion.c:1654:17: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast] It's better to not pretend that the dma address is a pointer and instead use a dma_addr_t consistently. Fixes: 33203bc4d61b ("scsi: megaraid_sas: NVME fast path io support") Signed-off-by: Arnd Bergmann --- drivers/scsi/megaraid/megaraid_sas_fusion.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c index 750090119f81..29650ba669da 100644 --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c @@ -1619,7 +1619,8 @@ megasas_make_prp_nvme(struct megasas_instance *instance, struct scsi_cmnd *scmd, { int sge_len, offset, num_prp_in_chain = 0; struct MPI25_IEEE_SGE_CHAIN64 *main_chain_element, *ptr_first_sgl; - u64 *ptr_sgl, *ptr_sgl_phys; + u64 *ptr_sgl; + dma_addr_t ptr_sgl_phys; u64 sge_addr; u32 page_mask, page_mask_result; struct scatterlist *sg_scmd; @@ -1651,14 +1652,14 @@ megasas_make_prp_nvme(struct megasas_instance *instance, struct scsi_cmnd *scmd, */ page_mask = mr_nvme_pg_size - 1; ptr_sgl = (u64 *)cmd->sg_frame; - ptr_sgl_phys = (u64 *)cmd->sg_frame_phys_addr; + ptr_sgl_phys = cmd->sg_frame_phys_addr; memset(ptr_sgl, 0, instance->max_chain_frame_sz); /* Build chain frame element which holds all prps except first*/ main_chain_element = (struct MPI25_IEEE_SGE_CHAIN64 *) ((u8 *)sgl_ptr + sizeof(struct MPI25_IEEE_SGE_CHAIN64)); - main_chain_element->Address = cpu_to_le64((uintptr_t)ptr_sgl_phys); + main_chain_element->Address = cpu_to_le64(ptr_sgl_phys); main_chain_element->NextChainOffset = 0; main_chain_element->Flags = IEEE_SGE_FLAGS_CHAIN_ELEMENT | IEEE_SGE_FLAGS_SYSTEM_ADDR | @@ -1696,16 +1697,15 @@ megasas_make_prp_nvme(struct megasas_instance *instance, struct scsi_cmnd *scmd, scmd_printk(KERN_NOTICE, scmd, "page boundary ptr_sgl: 0x%p\n", ptr_sgl); - ptr_sgl_phys++; - *ptr_sgl = - cpu_to_le64((uintptr_t)ptr_sgl_phys); + ptr_sgl_phys += 8; + *ptr_sgl = cpu_to_le64(ptr_sgl_phys); ptr_sgl++; num_prp_in_chain++; } *ptr_sgl = cpu_to_le64(sge_addr); ptr_sgl++; - ptr_sgl_phys++; + ptr_sgl_phys += 8; num_prp_in_chain++; sge_addr += mr_nvme_pg_size; -- 2.9.0