Hi Marek, I love your patch! Yet something to improve: [auto build test ERROR on linuxtv-media/master] [also build test ERROR on drm-intel/for-linux-next linus/master v5.9-rc2 next-20200826] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Marek-Szyprowski/DRM-fix-struct-sg_table-nents-vs-orig_nents-misuse/20200826-143908 base: git://linuxtv.org/media_tree.git master config: arm64-randconfig-r002-20200826 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 7cfcecece0e0430937cf529ce74d3a071a4dedc6) 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 # install arm64 cross compiling tool for clang build # apt-get install binutils-aarch64-linux-gnu # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All errors (new ones prefixed by >>): aarch64-linux-gnu-ld: warning: -z norelro ignored aarch64-linux-gnu-ld: fs/orangefs/orangefs-debugfs.o: in function `orangefs_debug_read': fs/orangefs/orangefs-debugfs.c:375: undefined reference to `stpcpy' aarch64-linux-gnu-ld: security/apparmor/lsm.o: in function `param_get_mode': security/apparmor/lsm.c:1559: undefined reference to `stpcpy' aarch64-linux-gnu-ld: security/apparmor/lsm.o: in function `param_get_audit': security/apparmor/lsm.c:1530: undefined reference to `stpcpy' aarch64-linux-gnu-ld: crypto/async_tx/async_tx.o: in function `async_tx_channel_switch': crypto/async_tx/async_tx.c:118: undefined reference to `dma_wait_for_async_tx' aarch64-linux-gnu-ld: crypto/async_tx/async_tx.o: in function `async_tx_quiesce': crypto/async_tx/async_tx.c:270: undefined reference to `dma_wait_for_async_tx' aarch64-linux-gnu-ld: crypto/async_tx/async_tx.c:270: undefined reference to `dma_wait_for_async_tx' aarch64-linux-gnu-ld: crypto/async_tx/async_memcpy.o: in function `async_memcpy': crypto/async_tx/async_memcpy.c:43: undefined reference to `dmaengine_get_unmap_data' aarch64-linux-gnu-ld: crypto/async_tx/async_memcpy.c:89: undefined reference to `dmaengine_unmap_put' aarch64-linux-gnu-ld: crypto/async_tx/async_xor.o: in function `async_xor': crypto/async_tx/async_xor.c:172: undefined reference to `dmaengine_get_unmap_data' aarch64-linux-gnu-ld: crypto/async_tx/async_xor.c:199: undefined reference to `dmaengine_unmap_put' aarch64-linux-gnu-ld: crypto/async_tx/async_xor.c:199: undefined reference to `dmaengine_unmap_put' aarch64-linux-gnu-ld: crypto/async_tx/async_xor.c:196: undefined reference to `dmaengine_unmap_put' aarch64-linux-gnu-ld: crypto/async_tx/async_xor.o: in function `async_xor_val': crypto/async_tx/async_xor.c:268: undefined reference to `dmaengine_get_unmap_data' aarch64-linux-gnu-ld: crypto/async_tx/async_xor.c:324: undefined reference to `dmaengine_unmap_put' aarch64-linux-gnu-ld: crypto/async_tx/async_pq.o: in function `async_gen_syndrome': crypto/async_tx/async_pq.c:176: undefined reference to `dmaengine_get_unmap_data' aarch64-linux-gnu-ld: crypto/async_tx/async_pq.c:233: undefined reference to `dmaengine_unmap_put' aarch64-linux-gnu-ld: crypto/async_tx/async_pq.c:229: undefined reference to `dmaengine_unmap_put' aarch64-linux-gnu-ld: crypto/async_tx/async_pq.o: in function `async_syndrome_val': crypto/async_tx/async_pq.c:295: undefined reference to `dmaengine_get_unmap_data' aarch64-linux-gnu-ld: crypto/async_tx/async_pq.c:412: undefined reference to `dmaengine_unmap_put' aarch64-linux-gnu-ld: drivers/xen/sys-hypervisor.o: in function `buildid_show': drivers/xen/sys-hypervisor.c:375: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/tty/tty_io.o: in function `tty_line_name': drivers/tty/tty_io.c:1139: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/tty/tty_io.c:1139: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/tty/tty_io.c:1139: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.o: in function `dsi_dma_workaround_write': drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.o: in function `vc4_dsi_host_transfer': drivers/gpu/drm/vc4/vc4_dsi.c:564: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.o: in function `dsi_dma_workaround_write': drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.o:drivers/gpu/drm/vc4/vc4_dsi.c:581: more undefined references to `dma_sync_wait' follow aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.o: in function `vc4_dsi_bind': drivers/gpu/drm/vc4/vc4_dsi.c:1512: undefined reference to `dma_request_chan_by_mask' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.o: in function `dsi_dma_workaround_write': drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.c:581: undefined reference to `dma_sync_wait' aarch64-linux-gnu-ld: drivers/gpu/drm/vc4/vc4_dsi.o:drivers/gpu/drm/vc4/vc4_dsi.c:581: more undefined references to `dma_sync_wait' follow aarch64-linux-gnu-ld: drivers/gpu/drm/msm/msm_gpummu.o: in function `msm_gpummu_map': >> drivers/gpu/drm/msm/msm_gpummu.c:44: undefined reference to `__compiletime_assert_413' aarch64-linux-gnu-ld: drivers/gpu/drm/xlnx/zynqmp_disp.o: in function `zynqmp_disp_layer_release_dma': drivers/gpu/drm/xlnx/zynqmp_disp.c:1287: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/gpu/drm/xlnx/zynqmp_disp.c:1287: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/scsi/scsi_transport_sas.o: in function `get_sas_device_type_names': drivers/scsi/scsi_transport_sas.c:131: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/scsi/scsi_transport_sas.o: in function `get_sas_linkspeed_names': drivers/scsi/scsi_transport_sas.c:158: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/scsi/scsi_transport_sas.c:158: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/scsi/scsi_transport_sas.c:158: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/scsi/scsi_transport_sas.c:158: undefined reference to `stpcpy' aarch64-linux-gnu-ld: drivers/scsi/scsi_transport_sas.o:drivers/scsi/scsi_transport_sas.c:158: more undefined references to `stpcpy' follow aarch64-linux-gnu-ld: drivers/spi/spi-bcm2835.o: in function `bcm2835_dma_init': drivers/spi/spi-bcm2835.c:907: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-bcm2835.c:914: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-bcm2835.o: in function `dmaengine_desc_set_reuse': include/linux/dmaengine.h:1537: undefined reference to `dma_get_slave_caps' aarch64-linux-gnu-ld: include/linux/dmaengine.h:1537: undefined reference to `dma_get_slave_caps' aarch64-linux-gnu-ld: include/linux/dmaengine.h:1537: undefined reference to `dma_get_slave_caps' aarch64-linux-gnu-ld: include/linux/dmaengine.h:1537: undefined reference to `dma_get_slave_caps' aarch64-linux-gnu-ld: include/linux/dmaengine.h:1537: undefined reference to `dma_get_slave_caps' aarch64-linux-gnu-ld: drivers/spi/spi-bcm2835.o: in function `bcm2835_dma_release': drivers/spi/spi-bcm2835.c:867: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-bcm2835.c:884: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-fsl-dspi.o: in function `dspi_request_dma': drivers/spi/spi-fsl-dspi.c:506: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-fsl-dspi.c:513: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-fsl-dspi.c:572: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-fsl-dspi.c:574: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-fsl-dspi.o: in function `dspi_release_dma': drivers/spi/spi-fsl-dspi.c:593: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-fsl-dspi.c:599: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-pxa2xx-dma.o: in function `dma_request_slave_channel_compat': include/linux/dmaengine.h:1587: undefined reference to `dma_request_slave_channel' aarch64-linux-gnu-ld: include/linux/dmaengine.h:1587: undefined reference to `dma_request_slave_channel' aarch64-linux-gnu-ld: include/linux/dmaengine.h:1594: undefined reference to `__dma_request_channel' aarch64-linux-gnu-ld: include/linux/dmaengine.h:1594: undefined reference to `__dma_request_channel' aarch64-linux-gnu-ld: drivers/spi/spi-pxa2xx-dma.o: in function `pxa2xx_spi_dma_setup': drivers/spi/spi-pxa2xx-dma.c:209: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-pxa2xx-dma.o: in function `pxa2xx_spi_dma_release': drivers/spi/spi-pxa2xx-dma.c:223: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-pxa2xx-dma.c:228: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-qup.o: in function `spi_qup_init_dma': drivers/spi/spi-qup.c:935: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-qup.c:939: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-qup.c:973: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-qup.o: in function `spi_qup_release_dma': drivers/spi/spi-qup.c:921: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-qup.c:923: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-qup.o: in function `spi_qup_init_dma': drivers/spi/spi-qup.c:971: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-qup.o: in function `spi_qup_release_dma': drivers/spi/spi-qup.c:921: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-qup.o:drivers/spi/spi-qup.c:923: more undefined references to `dma_release_channel' follow aarch64-linux-gnu-ld: drivers/spi/spi-rockchip.o: in function `rockchip_spi_probe': drivers/spi/spi-rockchip.c:748: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-rockchip.c:759: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-rockchip.c:788: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-rockchip.c:785: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-rockchip.o: in function `rockchip_spi_remove': drivers/spi/spi-rockchip.c:816: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-rockchip.c:818: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-rspi.o: in function `rspi_request_dma': drivers/spi/spi-rspi.c:1135: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-rspi.o:drivers/spi/spi-rspi.c:1148: more undefined references to `dma_release_channel' follow aarch64-linux-gnu-ld: drivers/spi/spi-rspi.o: in function `dma_request_slave_channel_compat': include/linux/dmaengine.h:1587: undefined reference to `dma_request_slave_channel' aarch64-linux-gnu-ld: include/linux/dmaengine.h:1594: undefined reference to `__dma_request_channel' aarch64-linux-gnu-ld: drivers/spi/spi-rspi.o: in function `rspi_request_dma_chan': drivers/spi/spi-rspi.c:1102: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-uniphier.o: in function `uniphier_spi_probe': drivers/spi/spi-uniphier.c:716: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-uniphier.c:725: undefined reference to `dma_get_slave_caps' aarch64-linux-gnu-ld: drivers/spi/spi-uniphier.c:734: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/spi/spi-uniphier.c:743: undefined reference to `dma_get_slave_caps' aarch64-linux-gnu-ld: drivers/spi/spi-uniphier.o: in function `uniphier_spi_remove': drivers/spi/spi-uniphier.c:773: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/spi/spi-uniphier.c:775: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/slimbus/qcom-ngd-ctrl.o: in function `qcom_slim_ngd_exit_dma': drivers/slimbus/qcom-ngd-ctrl.c:1051: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/slimbus/qcom-ngd-ctrl.c:1056: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/slimbus/qcom-ngd-ctrl.o: in function `qcom_slim_ngd_init_rx_msgq': drivers/slimbus/qcom-ngd-ctrl.c:669: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/slimbus/qcom-ngd-ctrl.c:697: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/slimbus/qcom-ngd-ctrl.o: in function `qcom_slim_ngd_init_tx_msgq': drivers/slimbus/qcom-ngd-ctrl.c:708: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/slimbus/qcom-ngd-ctrl.c:732: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/i2c/busses/i2c-sh_mobile.o: in function `sh_mobile_i2c_release_dma': drivers/i2c/busses/i2c-sh_mobile.c:783: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/i2c/busses/i2c-sh_mobile.c:788: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/i2c/busses/i2c-sh_mobile.c:783: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/i2c/busses/i2c-sh_mobile.c:788: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/i2c/busses/i2c-sh_mobile.o: in function `sh_mobile_i2c_request_dma_chan': drivers/i2c/busses/i2c-sh_mobile.c:483: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/i2c/busses/i2c-sh_mobile.c:483: undefined reference to `dma_request_chan' aarch64-linux-gnu-ld: drivers/i2c/busses/i2c-sh_mobile.c:503: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/i2c/busses/i2c-sh_mobile.c:503: undefined reference to `dma_release_channel' aarch64-linux-gnu-ld: drivers/md/raid5.o: in function `raid5d': drivers/md/raid5.c:6367: undefined reference to `dma_issue_pending_all' aarch64-linux-gnu-ld: drivers/md/raid5.o: in function `raid5_do_work': drivers/md/raid5.c:6280: undefined reference to `dma_issue_pending_all' # https://github.com/0day-ci/linux/commit/ea1faf41c87f65cbbd61c902b1c773a681347a34 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Marek-Szyprowski/DRM-fix-struct-sg_table-nents-vs-orig_nents-misuse/20200826-143908 git checkout ea1faf41c87f65cbbd61c902b1c773a681347a34 vim +44 drivers/gpu/drm/msm/msm_gpummu.c 27 28 static int msm_gpummu_map(struct msm_mmu *mmu, uint64_t iova, 29 struct sg_table *sgt, size_t len, int prot) 30 { 31 struct msm_gpummu *gpummu = to_msm_gpummu(mmu); 32 unsigned idx = (iova - GPUMMU_VA_START) / GPUMMU_PAGE_SIZE; 33 struct sg_dma_page_iter dma_iter; 34 unsigned prot_bits = 0; 35 36 if (prot & IOMMU_WRITE) 37 prot_bits |= 1; 38 if (prot & IOMMU_READ) 39 prot_bits |= 2; 40 41 for_each_sgtable_dma_page(sgt, &dma_iter, 0) { 42 dma_addr_t addr = sg_page_iter_dma_address(&dma_iter); 43 > 44 BUILD_BUG_ON(GPUMMU_PAGE_SIZE != PAGE_SIZE); 45 gpummu->table[idx++] = addr | prot_bits; 46 } 47 48 /* we can improve by deferring flush for multiple map() */ 49 gpu_write(gpummu->gpu, REG_A2XX_MH_MMU_INVALIDATE, 50 A2XX_MH_MMU_INVALIDATE_INVALIDATE_ALL | 51 A2XX_MH_MMU_INVALIDATE_INVALIDATE_TC); 52 return 0; 53 } 54 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org