Re: [PATCH v2] i2c: ismt: Use dma_set_mask_and_coherent

From: kernel test robot
Date: Thu Dec 03 2020 - 00:13:39 EST


Hi Youling,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on wsa/i2c/for-next]
[also build test ERROR on v5.10-rc6 next-20201201]
[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/Youling-Tang/i2c-ismt-Use-dma_set_mask_and_coherent/20201203-090418
base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
config: x86_64-randconfig-r031-20201203 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 32c501dd88b62787d3a5ffda7aabcf4650dbe3cd)
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 x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/70c09af3590c87f78b3fb025c692195d97696f28
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Youling-Tang/i2c-ismt-Use-dma_set_mask_and_coherent/20201203-090418
git checkout 70c09af3590c87f78b3fb025c692195d97696f28
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

>> drivers/i2c/busses/i2c-ismt.c:906:32: error: incompatible pointer types passing 'struct pci_dev *' to parameter of type 'struct device *' [-Werror,-Wincompatible-pointer-types]
if (dma_set_mask_and_coherent(pdev, DMA_BIT_MASK(64)) != 0)
^~~~
include/linux/dma-mapping.h:420:60: note: passing argument to parameter 'dev' here
static inline int dma_set_mask_and_coherent(struct device *dev, u64 mask)
^
drivers/i2c/busses/i2c-ismt.c:907:33: error: incompatible pointer types passing 'struct pci_dev *' to parameter of type 'struct device *' [-Werror,-Wincompatible-pointer-types]
if (dma_set_mask_and_coherent(pdev, DMA_BIT_MASK(32)) != 0) {
^~~~
include/linux/dma-mapping.h:420:60: note: passing argument to parameter 'dev' here
static inline int dma_set_mask_and_coherent(struct device *dev, u64 mask)
^
2 errors generated.

vim +906 drivers/i2c/busses/i2c-ismt.c

832
833 /**
834 * ismt_probe() - probe for iSMT devices
835 * @pdev: PCI-Express device
836 * @id: PCI-Express device ID
837 */
838 static int
839 ismt_probe(struct pci_dev *pdev, const struct pci_device_id *id)
840 {
841 int err;
842 struct ismt_priv *priv;
843 unsigned long start, len;
844
845 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
846 if (!priv)
847 return -ENOMEM;
848
849 pci_set_drvdata(pdev, priv);
850
851 i2c_set_adapdata(&priv->adapter, priv);
852 priv->adapter.owner = THIS_MODULE;
853 priv->adapter.class = I2C_CLASS_HWMON;
854 priv->adapter.algo = &smbus_algorithm;
855 priv->adapter.dev.parent = &pdev->dev;
856 ACPI_COMPANION_SET(&priv->adapter.dev, ACPI_COMPANION(&pdev->dev));
857 priv->adapter.retries = ISMT_MAX_RETRIES;
858
859 priv->pci_dev = pdev;
860
861 err = pcim_enable_device(pdev);
862 if (err) {
863 dev_err(&pdev->dev, "Failed to enable SMBus PCI device (%d)\n",
864 err);
865 return err;
866 }
867
868 /* enable bus mastering */
869 pci_set_master(pdev);
870
871 /* Determine the address of the SMBus area */
872 start = pci_resource_start(pdev, SMBBAR);
873 len = pci_resource_len(pdev, SMBBAR);
874 if (!start || !len) {
875 dev_err(&pdev->dev,
876 "SMBus base address uninitialized, upgrade BIOS\n");
877 return -ENODEV;
878 }
879
880 snprintf(priv->adapter.name, sizeof(priv->adapter.name),
881 "SMBus iSMT adapter at %lx", start);
882
883 dev_dbg(&priv->pci_dev->dev, " start=0x%lX\n", start);
884 dev_dbg(&priv->pci_dev->dev, " len=0x%lX\n", len);
885
886 err = acpi_check_resource_conflict(&pdev->resource[SMBBAR]);
887 if (err) {
888 dev_err(&pdev->dev, "ACPI resource conflict!\n");
889 return err;
890 }
891
892 err = pci_request_region(pdev, SMBBAR, ismt_driver.name);
893 if (err) {
894 dev_err(&pdev->dev,
895 "Failed to request SMBus region 0x%lx-0x%lx\n",
896 start, start + len);
897 return err;
898 }
899
900 priv->smba = pcim_iomap(pdev, SMBBAR, len);
901 if (!priv->smba) {
902 dev_err(&pdev->dev, "Unable to ioremap SMBus BAR\n");
903 return -ENODEV;
904 }
905
> 906 if (dma_set_mask_and_coherent(pdev, DMA_BIT_MASK(64)) != 0)
907 if (dma_set_mask_and_coherent(pdev, DMA_BIT_MASK(32)) != 0) {
908 dev_err(&pdev->dev, "pci_set_dma_mask fail %p\n",
909 pdev);
910 return -ENODEV;
911 }
912
913 err = ismt_dev_init(priv);
914 if (err)
915 return err;
916
917 ismt_hw_init(priv);
918
919 err = ismt_int_init(priv);
920 if (err)
921 return err;
922
923 err = i2c_add_adapter(&priv->adapter);
924 if (err)
925 return -ENODEV;
926 return 0;
927 }
928

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip