From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [narmstrong-oxnas:oxnas/v5.18/dma 2/4] drivers/dma/oxnas_adma.c:915:40: warning: cast to pointer from integer of different size
Date: Sat, 08 Jan 2022 09:32:22 +0800 [thread overview]
Message-ID: <202201080904.ADmkINrx-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 17690 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/narmstrong/linux-oxnas.git oxnas/v5.18/dma
head: 8a4b70b0d54020bfae32041369422c3b41c0cd56
commit: 90ad9e59c40581027a2fd9134e4e160ad0a7f5d2 [2/4] dmaengine: Add Oxford Semiconductor OXNAS DMA Controller
config: arc-allmodconfig (https://download.01.org/0day-ci/archive/20220108/202201080904.ADmkINrx-lkp(a)intel.com/config)
compiler: arceb-elf-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/narmstrong/linux-oxnas.git/commit/?id=90ad9e59c40581027a2fd9134e4e160ad0a7f5d2
git remote add narmstrong-oxnas https://git.kernel.org/pub/scm/linux/kernel/git/narmstrong/linux-oxnas.git
git fetch --no-tags narmstrong-oxnas oxnas/v5.18/dma
git checkout 90ad9e59c40581027a2fd9134e4e160ad0a7f5d2
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arc SHELL=/bin/bash drivers/dma/ drivers/net/wireless/ath/wcn36xx/ drivers/nvme/host/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
| |
| unsigned int
| %08llx
In file included from include/linux/printk.h:555,
from include/linux/kernel.h:20,
from include/linux/cpumask.h:10,
from include/linux/mm_types_task.h:14,
from include/linux/mm_types.h:5,
from include/linux/buildid.h:5,
from include/linux/module.h:14,
from drivers/dma/oxnas_adma.c:7:
drivers/dma/oxnas_adma.c:655:37: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
655 | dev_dbg(&dmadev->pdev->dev, "preparing memcpy from %08x to %08x, %lubytes (flags %x)\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call'
134 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call'
166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/dma/oxnas_adma.c:655:9: note: in expansion of macro 'dev_dbg'
655 | dev_dbg(&dmadev->pdev->dev, "preparing memcpy from %08x to %08x, %lubytes (flags %x)\n",
| ^~~~~~~
drivers/dma/oxnas_adma.c:655:71: note: format string is defined here
655 | dev_dbg(&dmadev->pdev->dev, "preparing memcpy from %08x to %08x, %lubytes (flags %x)\n",
| ~~~^
| |
| unsigned int
| %08llx
In file included from include/linux/printk.h:555,
from include/linux/kernel.h:20,
from include/linux/cpumask.h:10,
from include/linux/mm_types_task.h:14,
from include/linux/mm_types.h:5,
from include/linux/buildid.h:5,
from include/linux/module.h:14,
from drivers/dma/oxnas_adma.c:7:
drivers/dma/oxnas_adma.c: In function 'oxnas_dma_probe':
drivers/dma/oxnas_adma.c:869:37: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call'
134 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call'
166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/dma/oxnas_adma.c:869:17: note: in expansion of macro 'dev_dbg'
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ^~~~~~~
drivers/dma/oxnas_adma.c:869:43: note: format string is defined here
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ~~~^
| |
| unsigned int
| %08llx
In file included from include/linux/printk.h:555,
from include/linux/kernel.h:20,
from include/linux/cpumask.h:10,
from include/linux/mm_types_task.h:14,
from include/linux/mm_types.h:5,
from include/linux/buildid.h:5,
from include/linux/module.h:14,
from drivers/dma/oxnas_adma.c:7:
drivers/dma/oxnas_adma.c:869:37: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call'
134 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call'
166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/dma/oxnas_adma.c:869:17: note: in expansion of macro 'dev_dbg'
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ^~~~~~~
drivers/dma/oxnas_adma.c:869:50: note: format string is defined here
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ~~~^
| |
| unsigned int
| %08llx
>> drivers/dma/oxnas_adma.c:915:40: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
915 | (dma_addr_t)&(((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->entries[i]);
| ^
>> drivers/dma/oxnas_adma.c:915:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
915 | (dma_addr_t)&(((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->entries[i]);
| ^
drivers/dma/oxnas_adma.c:944:39: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
944 | (dma_addr_t)&((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->infos[i];
| ^
drivers/dma/oxnas_adma.c:944:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
944 | (dma_addr_t)&((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->infos[i];
| ^
vim +915 drivers/dma/oxnas_adma.c
794
795 static int oxnas_dma_probe(struct platform_device *pdev)
796 {
797 struct oxnas_dma_device *dmadev;
798 struct resource *res;
799 int hwid, i, ret;
800
801 dmadev = devm_kzalloc(&pdev->dev, sizeof(struct oxnas_dma_device), GFP_KERNEL);
802 if (!dmadev)
803 return -ENOMEM;
804
805 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
806 dmadev->dma_base = devm_ioremap_resource(&pdev->dev, res);
807 if (IS_ERR(dmadev->dma_base))
808 return PTR_ERR(dmadev->dma_base);
809
810 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
811 dmadev->sgdma_base = devm_ioremap_resource(&pdev->dev, res);
812 if (IS_ERR(dmadev->sgdma_base))
813 return PTR_ERR(dmadev->sgdma_base);
814
815 dmadev->dma_rst = devm_reset_control_get(&pdev->dev, "dma");
816 if (IS_ERR(dmadev->dma_rst))
817 return PTR_ERR(dmadev->dma_rst);
818
819 dmadev->sgdma_rst = devm_reset_control_get(&pdev->dev, "sgdma");
820 if (IS_ERR(dmadev->sgdma_rst))
821 return PTR_ERR(dmadev->sgdma_rst);
822
823 dmadev->dma_clk = devm_clk_get(&pdev->dev, 0);
824 if (IS_ERR(dmadev->dma_clk))
825 return PTR_ERR(dmadev->dma_clk);
826
827 ret = of_property_count_elems_of_size(pdev->dev.of_node, "oxsemi,targets-types", 4);
828 if (ret <= 0 || (ret % 3) != 0) {
829 dev_err(&pdev->dev, "malformed or missing oxsemi,targets-types\n");
830 return -EINVAL;
831 }
832
833 dmadev->authorized_types_count = ret / 3;
834 dmadev->authorized_types = devm_kzalloc(&pdev->dev,
835 sizeof(*dmadev->authorized_types) * dmadev->authorized_types_count, GFP_KERNEL);
836
837 if (!dmadev->authorized_types)
838 return -ENOMEM;
839
840 for (i = 0 ; i < dmadev->authorized_types_count ; ++i) {
841 u32 value;
842
843 ret = of_property_read_u32_index(pdev->dev.of_node,
844 "oxsemi,targets-types",
845 (i * 3), &value);
846 if (ret < 0)
847 return ret;
848
849 dmadev->authorized_types[i].start = value;
850 ret = of_property_read_u32_index(pdev->dev.of_node,
851 "oxsemi,targets-types",
852 (i * 3) + 1, &value);
853 if (ret < 0)
854 return ret;
855
856 dmadev->authorized_types[i].end = value;
857 ret = of_property_read_u32_index(pdev->dev.of_node,
858 "oxsemi,targets-types",
859 (i * 3) + 2, &value);
860 if (ret < 0)
861 return ret;
862
863 dmadev->authorized_types[i].type = value;
864 }
865
866 dev_dbg(&pdev->dev, "Authorized memory ranges :\n");
867 dev_dbg(&pdev->dev, " Start - End = Type\n");
868 for (i = 0 ; i < dmadev->authorized_types_count ; ++i)
869 dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
870 dmadev->authorized_types[i].start,
871 dmadev->authorized_types[i].end,
872 dmadev->authorized_types[i].type);
873
874 dmadev->pdev = pdev;
875
876 spin_lock_init(&dmadev->lock);
877
878 tasklet_init(&dmadev->tasklet, oxnas_dma_sched, (unsigned long)dmadev);
879 INIT_LIST_HEAD(&dmadev->common.channels);
880 INIT_LIST_HEAD(&dmadev->pending);
881 INIT_LIST_HEAD(&dmadev->free_entries);
882
883 /* Enable HW & Clocks */
884 reset_control_reset(dmadev->dma_rst);
885 reset_control_reset(dmadev->sgdma_rst);
886 clk_prepare_enable(dmadev->dma_clk);
887
888 /* Discover the number of channels available */
889 hwid = readl(dmadev->dma_base + DMA_CALC_REG_ADR(0, DMA_INTR_ID));
890 dmadev->channels_count = DMA_INTR_ID_GET_NUM_CHANNELS(hwid);
891 dmadev->hwversion = DMA_INTR_ID_GET_VERSION(hwid);
892
893 dev_dbg(&pdev->dev, "OXNAS DMA v%x with %d channels\n",
894 dmadev->hwversion, dmadev->channels_count);
895
896 /* Limit channels count */
897 if (dmadev->channels_count > MAX_OXNAS_DMA_CHANNELS)
898 dmadev->channels_count = MAX_OXNAS_DMA_CHANNELS;
899
900 /* Allocate coherent memory for sg descriptors */
901 dmadev->sg_data = dma_alloc_coherent(&pdev->dev, sizeof(struct oxnas_dma_sg_data),
902 &dmadev->p_sg_data, GFP_KERNEL);
903 if (!dmadev->sg_data) {
904 ret = -ENOMEM;
905 goto disable_clks;
906 }
907
908 /* Reset SG descritors */
909 memset(dmadev->sg_data, 0, sizeof(struct oxnas_dma_sg_data));
910 atomic_set(&dmadev->free_entries_count, 0);
911
912 /* Initialize and add all sg entries to the free list */
913 for (i = 0 ; i < MAX_OXNAS_SG_ENTRIES ; ++i) {
914 dmadev->sg_data->entries[i].this_paddr =
> 915 (dma_addr_t)&(((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->entries[i]);
916 INIT_LIST_HEAD(&dmadev->sg_data->entries[i].entry);
917 list_add_tail(&dmadev->sg_data->entries[i].entry,
918 &dmadev->free_entries);
919 atomic_inc(&dmadev->free_entries_count);
920 }
921
922 /* Init all channels */
923 for (i = 0 ; i < dmadev->channels_count ; ++i) {
924 struct oxnas_dma_channel *ch = &dmadev->channels[i];
925
926 ch->dmadev = dmadev;
927 ch->id = i;
928
929 ch->irq = irq_of_parse_and_map(pdev->dev.of_node, i);
930 if (ch->irq <= 0) {
931 dev_err(&pdev->dev, "invalid irq%d from platform\n", i);
932 goto free_coherent;
933 }
934
935 ret = devm_request_irq(&pdev->dev, ch->irq,
936 oxnas_dma_interrupt, 0,
937 "DMA", ch);
938 if (ret < 0) {
939 dev_err(&pdev->dev, "failed to request irq%d\n", i);
940 goto free_coherent;
941 }
942
943 ch->p_sg_info =
944 (dma_addr_t)&((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->infos[i];
945 ch->sg_info = &dmadev->sg_data->infos[i];
946 memset(ch->sg_info, 0, sizeof(struct oxnas_dma_sg_info));
947
948 atomic_set(&ch->active, 0);
949
950 ch->vc.desc_free = oxnas_dma_desc_free;
951 vchan_init(&ch->vc, &dmadev->common);
952 INIT_LIST_HEAD(&ch->node);
953 }
954
955 platform_set_drvdata(pdev, dmadev);
956
957 dma_cap_set(DMA_MEMCPY, dmadev->common.cap_mask);
958 dmadev->common.chancnt = dmadev->channels_count;
959 dmadev->common.device_free_chan_resources = oxnas_dma_free_chan_resources;
960 dmadev->common.device_tx_status = oxnas_dma_tx_status;
961 dmadev->common.device_issue_pending = oxnas_dma_issue_pending;
962 dmadev->common.device_prep_dma_memcpy = oxnas_dma_prep_dma_memcpy;
963 dmadev->common.device_prep_slave_sg = oxnas_dma_prep_slave_sg;
964 dmadev->common.device_config = oxnas_dma_slave_config;
965 dmadev->common.copy_align = DMAENGINE_ALIGN_4_BYTES;
966 dmadev->common.src_addr_widths = DMA_SLAVE_BUSWIDTH_4_BYTES;
967 dmadev->common.dst_addr_widths = DMA_SLAVE_BUSWIDTH_4_BYTES;
968 dmadev->common.directions = BIT(DMA_MEM_TO_MEM);
969 dmadev->common.residue_granularity = DMA_RESIDUE_GRANULARITY_DESCRIPTOR;
970 dmadev->common.dev = &pdev->dev;
971
972 ret = dma_async_device_register(&dmadev->common);
973 if (ret)
974 goto free_coherent;
975
976 ret = of_dma_controller_register(pdev->dev.of_node,
977 of_dma_xlate_by_chan_id,
978 &dmadev->common);
979 if (ret) {
980 dev_warn(&pdev->dev, "Failed to register DMA Controller\n");
981 goto dma_unregister;
982 }
983
984 dev_info(&pdev->dev, "OXNAS DMA Registered\n");
985
986 return 0;
987
988 dma_unregister:
989 dma_async_device_unregister(&dmadev->common);
990
991 free_coherent:
992 dma_free_coherent(&pdev->dev, sizeof(struct oxnas_dma_sg_data),
993 dmadev->sg_data, dmadev->p_sg_data);
994
995 disable_clks:
996 clk_disable_unprepare(dmadev->dma_clk);
997
998 return ret;
999 }
1000
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Neil Armstrong <narmstrong@baylibre.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: [narmstrong-oxnas:oxnas/v5.18/dma 2/4] drivers/dma/oxnas_adma.c:915:40: warning: cast to pointer from integer of different size
Date: Sat, 8 Jan 2022 09:32:22 +0800 [thread overview]
Message-ID: <202201080904.ADmkINrx-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/narmstrong/linux-oxnas.git oxnas/v5.18/dma
head: 8a4b70b0d54020bfae32041369422c3b41c0cd56
commit: 90ad9e59c40581027a2fd9134e4e160ad0a7f5d2 [2/4] dmaengine: Add Oxford Semiconductor OXNAS DMA Controller
config: arc-allmodconfig (https://download.01.org/0day-ci/archive/20220108/202201080904.ADmkINrx-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/narmstrong/linux-oxnas.git/commit/?id=90ad9e59c40581027a2fd9134e4e160ad0a7f5d2
git remote add narmstrong-oxnas https://git.kernel.org/pub/scm/linux/kernel/git/narmstrong/linux-oxnas.git
git fetch --no-tags narmstrong-oxnas oxnas/v5.18/dma
git checkout 90ad9e59c40581027a2fd9134e4e160ad0a7f5d2
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arc SHELL=/bin/bash drivers/dma/ drivers/net/wireless/ath/wcn36xx/ drivers/nvme/host/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
| |
| unsigned int
| %08llx
In file included from include/linux/printk.h:555,
from include/linux/kernel.h:20,
from include/linux/cpumask.h:10,
from include/linux/mm_types_task.h:14,
from include/linux/mm_types.h:5,
from include/linux/buildid.h:5,
from include/linux/module.h:14,
from drivers/dma/oxnas_adma.c:7:
drivers/dma/oxnas_adma.c:655:37: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
655 | dev_dbg(&dmadev->pdev->dev, "preparing memcpy from %08x to %08x, %lubytes (flags %x)\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call'
134 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call'
166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/dma/oxnas_adma.c:655:9: note: in expansion of macro 'dev_dbg'
655 | dev_dbg(&dmadev->pdev->dev, "preparing memcpy from %08x to %08x, %lubytes (flags %x)\n",
| ^~~~~~~
drivers/dma/oxnas_adma.c:655:71: note: format string is defined here
655 | dev_dbg(&dmadev->pdev->dev, "preparing memcpy from %08x to %08x, %lubytes (flags %x)\n",
| ~~~^
| |
| unsigned int
| %08llx
In file included from include/linux/printk.h:555,
from include/linux/kernel.h:20,
from include/linux/cpumask.h:10,
from include/linux/mm_types_task.h:14,
from include/linux/mm_types.h:5,
from include/linux/buildid.h:5,
from include/linux/module.h:14,
from drivers/dma/oxnas_adma.c:7:
drivers/dma/oxnas_adma.c: In function 'oxnas_dma_probe':
drivers/dma/oxnas_adma.c:869:37: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call'
134 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call'
166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/dma/oxnas_adma.c:869:17: note: in expansion of macro 'dev_dbg'
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ^~~~~~~
drivers/dma/oxnas_adma.c:869:43: note: format string is defined here
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ~~~^
| |
| unsigned int
| %08llx
In file included from include/linux/printk.h:555,
from include/linux/kernel.h:20,
from include/linux/cpumask.h:10,
from include/linux/mm_types_task.h:14,
from include/linux/mm_types.h:5,
from include/linux/buildid.h:5,
from include/linux/module.h:14,
from drivers/dma/oxnas_adma.c:7:
drivers/dma/oxnas_adma.c:869:37: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t' {aka 'long long unsigned int'} [-Wformat=]
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call'
134 | func(&id, ##__VA_ARGS__); \
| ^~~~~~~~~~~
include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call'
166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \
| ^~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~~~~~~~~
include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt'
155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/dma/oxnas_adma.c:869:17: note: in expansion of macro 'dev_dbg'
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ^~~~~~~
drivers/dma/oxnas_adma.c:869:50: note: format string is defined here
869 | dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
| ~~~^
| |
| unsigned int
| %08llx
>> drivers/dma/oxnas_adma.c:915:40: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
915 | (dma_addr_t)&(((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->entries[i]);
| ^
>> drivers/dma/oxnas_adma.c:915:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
915 | (dma_addr_t)&(((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->entries[i]);
| ^
drivers/dma/oxnas_adma.c:944:39: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
944 | (dma_addr_t)&((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->infos[i];
| ^
drivers/dma/oxnas_adma.c:944:25: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
944 | (dma_addr_t)&((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->infos[i];
| ^
vim +915 drivers/dma/oxnas_adma.c
794
795 static int oxnas_dma_probe(struct platform_device *pdev)
796 {
797 struct oxnas_dma_device *dmadev;
798 struct resource *res;
799 int hwid, i, ret;
800
801 dmadev = devm_kzalloc(&pdev->dev, sizeof(struct oxnas_dma_device), GFP_KERNEL);
802 if (!dmadev)
803 return -ENOMEM;
804
805 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
806 dmadev->dma_base = devm_ioremap_resource(&pdev->dev, res);
807 if (IS_ERR(dmadev->dma_base))
808 return PTR_ERR(dmadev->dma_base);
809
810 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
811 dmadev->sgdma_base = devm_ioremap_resource(&pdev->dev, res);
812 if (IS_ERR(dmadev->sgdma_base))
813 return PTR_ERR(dmadev->sgdma_base);
814
815 dmadev->dma_rst = devm_reset_control_get(&pdev->dev, "dma");
816 if (IS_ERR(dmadev->dma_rst))
817 return PTR_ERR(dmadev->dma_rst);
818
819 dmadev->sgdma_rst = devm_reset_control_get(&pdev->dev, "sgdma");
820 if (IS_ERR(dmadev->sgdma_rst))
821 return PTR_ERR(dmadev->sgdma_rst);
822
823 dmadev->dma_clk = devm_clk_get(&pdev->dev, 0);
824 if (IS_ERR(dmadev->dma_clk))
825 return PTR_ERR(dmadev->dma_clk);
826
827 ret = of_property_count_elems_of_size(pdev->dev.of_node, "oxsemi,targets-types", 4);
828 if (ret <= 0 || (ret % 3) != 0) {
829 dev_err(&pdev->dev, "malformed or missing oxsemi,targets-types\n");
830 return -EINVAL;
831 }
832
833 dmadev->authorized_types_count = ret / 3;
834 dmadev->authorized_types = devm_kzalloc(&pdev->dev,
835 sizeof(*dmadev->authorized_types) * dmadev->authorized_types_count, GFP_KERNEL);
836
837 if (!dmadev->authorized_types)
838 return -ENOMEM;
839
840 for (i = 0 ; i < dmadev->authorized_types_count ; ++i) {
841 u32 value;
842
843 ret = of_property_read_u32_index(pdev->dev.of_node,
844 "oxsemi,targets-types",
845 (i * 3), &value);
846 if (ret < 0)
847 return ret;
848
849 dmadev->authorized_types[i].start = value;
850 ret = of_property_read_u32_index(pdev->dev.of_node,
851 "oxsemi,targets-types",
852 (i * 3) + 1, &value);
853 if (ret < 0)
854 return ret;
855
856 dmadev->authorized_types[i].end = value;
857 ret = of_property_read_u32_index(pdev->dev.of_node,
858 "oxsemi,targets-types",
859 (i * 3) + 2, &value);
860 if (ret < 0)
861 return ret;
862
863 dmadev->authorized_types[i].type = value;
864 }
865
866 dev_dbg(&pdev->dev, "Authorized memory ranges :\n");
867 dev_dbg(&pdev->dev, " Start - End = Type\n");
868 for (i = 0 ; i < dmadev->authorized_types_count ; ++i)
869 dev_dbg(&pdev->dev, "0x%08x-0x%08x = %d\n",
870 dmadev->authorized_types[i].start,
871 dmadev->authorized_types[i].end,
872 dmadev->authorized_types[i].type);
873
874 dmadev->pdev = pdev;
875
876 spin_lock_init(&dmadev->lock);
877
878 tasklet_init(&dmadev->tasklet, oxnas_dma_sched, (unsigned long)dmadev);
879 INIT_LIST_HEAD(&dmadev->common.channels);
880 INIT_LIST_HEAD(&dmadev->pending);
881 INIT_LIST_HEAD(&dmadev->free_entries);
882
883 /* Enable HW & Clocks */
884 reset_control_reset(dmadev->dma_rst);
885 reset_control_reset(dmadev->sgdma_rst);
886 clk_prepare_enable(dmadev->dma_clk);
887
888 /* Discover the number of channels available */
889 hwid = readl(dmadev->dma_base + DMA_CALC_REG_ADR(0, DMA_INTR_ID));
890 dmadev->channels_count = DMA_INTR_ID_GET_NUM_CHANNELS(hwid);
891 dmadev->hwversion = DMA_INTR_ID_GET_VERSION(hwid);
892
893 dev_dbg(&pdev->dev, "OXNAS DMA v%x with %d channels\n",
894 dmadev->hwversion, dmadev->channels_count);
895
896 /* Limit channels count */
897 if (dmadev->channels_count > MAX_OXNAS_DMA_CHANNELS)
898 dmadev->channels_count = MAX_OXNAS_DMA_CHANNELS;
899
900 /* Allocate coherent memory for sg descriptors */
901 dmadev->sg_data = dma_alloc_coherent(&pdev->dev, sizeof(struct oxnas_dma_sg_data),
902 &dmadev->p_sg_data, GFP_KERNEL);
903 if (!dmadev->sg_data) {
904 ret = -ENOMEM;
905 goto disable_clks;
906 }
907
908 /* Reset SG descritors */
909 memset(dmadev->sg_data, 0, sizeof(struct oxnas_dma_sg_data));
910 atomic_set(&dmadev->free_entries_count, 0);
911
912 /* Initialize and add all sg entries to the free list */
913 for (i = 0 ; i < MAX_OXNAS_SG_ENTRIES ; ++i) {
914 dmadev->sg_data->entries[i].this_paddr =
> 915 (dma_addr_t)&(((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->entries[i]);
916 INIT_LIST_HEAD(&dmadev->sg_data->entries[i].entry);
917 list_add_tail(&dmadev->sg_data->entries[i].entry,
918 &dmadev->free_entries);
919 atomic_inc(&dmadev->free_entries_count);
920 }
921
922 /* Init all channels */
923 for (i = 0 ; i < dmadev->channels_count ; ++i) {
924 struct oxnas_dma_channel *ch = &dmadev->channels[i];
925
926 ch->dmadev = dmadev;
927 ch->id = i;
928
929 ch->irq = irq_of_parse_and_map(pdev->dev.of_node, i);
930 if (ch->irq <= 0) {
931 dev_err(&pdev->dev, "invalid irq%d from platform\n", i);
932 goto free_coherent;
933 }
934
935 ret = devm_request_irq(&pdev->dev, ch->irq,
936 oxnas_dma_interrupt, 0,
937 "DMA", ch);
938 if (ret < 0) {
939 dev_err(&pdev->dev, "failed to request irq%d\n", i);
940 goto free_coherent;
941 }
942
943 ch->p_sg_info =
944 (dma_addr_t)&((struct oxnas_dma_sg_data *)dmadev->p_sg_data)->infos[i];
945 ch->sg_info = &dmadev->sg_data->infos[i];
946 memset(ch->sg_info, 0, sizeof(struct oxnas_dma_sg_info));
947
948 atomic_set(&ch->active, 0);
949
950 ch->vc.desc_free = oxnas_dma_desc_free;
951 vchan_init(&ch->vc, &dmadev->common);
952 INIT_LIST_HEAD(&ch->node);
953 }
954
955 platform_set_drvdata(pdev, dmadev);
956
957 dma_cap_set(DMA_MEMCPY, dmadev->common.cap_mask);
958 dmadev->common.chancnt = dmadev->channels_count;
959 dmadev->common.device_free_chan_resources = oxnas_dma_free_chan_resources;
960 dmadev->common.device_tx_status = oxnas_dma_tx_status;
961 dmadev->common.device_issue_pending = oxnas_dma_issue_pending;
962 dmadev->common.device_prep_dma_memcpy = oxnas_dma_prep_dma_memcpy;
963 dmadev->common.device_prep_slave_sg = oxnas_dma_prep_slave_sg;
964 dmadev->common.device_config = oxnas_dma_slave_config;
965 dmadev->common.copy_align = DMAENGINE_ALIGN_4_BYTES;
966 dmadev->common.src_addr_widths = DMA_SLAVE_BUSWIDTH_4_BYTES;
967 dmadev->common.dst_addr_widths = DMA_SLAVE_BUSWIDTH_4_BYTES;
968 dmadev->common.directions = BIT(DMA_MEM_TO_MEM);
969 dmadev->common.residue_granularity = DMA_RESIDUE_GRANULARITY_DESCRIPTOR;
970 dmadev->common.dev = &pdev->dev;
971
972 ret = dma_async_device_register(&dmadev->common);
973 if (ret)
974 goto free_coherent;
975
976 ret = of_dma_controller_register(pdev->dev.of_node,
977 of_dma_xlate_by_chan_id,
978 &dmadev->common);
979 if (ret) {
980 dev_warn(&pdev->dev, "Failed to register DMA Controller\n");
981 goto dma_unregister;
982 }
983
984 dev_info(&pdev->dev, "OXNAS DMA Registered\n");
985
986 return 0;
987
988 dma_unregister:
989 dma_async_device_unregister(&dmadev->common);
990
991 free_coherent:
992 dma_free_coherent(&pdev->dev, sizeof(struct oxnas_dma_sg_data),
993 dmadev->sg_data, dmadev->p_sg_data);
994
995 disable_clks:
996 clk_disable_unprepare(dmadev->dma_clk);
997
998 return ret;
999 }
1000
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
next reply other threads:[~2022-01-08 1:32 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-08 1:32 kernel test robot [this message]
2022-01-08 1:32 ` [narmstrong-oxnas:oxnas/v5.18/dma 2/4] drivers/dma/oxnas_adma.c:915:40: warning: cast to pointer from integer of different size kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202201080904.ADmkINrx-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.