M. Sc.
Abhijeet Badurkar
Software Engineering 
Business Unit Computing Systems, duagon

duagon Germany GmbH
Neuwieder Straße 1-7
90411 Nürnberg
Deutschland
Phone           +49 911 99 33 5 - 219
www.duagon.com

duagon Germany GmbH - Geschäftsführer: Dr. Michael Goldbach - Mathias Kamolz - 
Kalina Scott - Handelsregister/Trade Register AG Nürnberg HRB 5540

This message and/or attachments may be privileged or confidential. If you are 
not the intended recipient, you are hereby notified that you have received this 
transmittal in error; any review, dissemination, or copying is strictly 
prohibited. If you received this transmittal in error, please notify us 
immediately by reply and immediately delete this message and all its 
attachments. Thank you.
On 16.10.20 09:55, Marc Kleine-Budde wrote:
> * PGP Signed by an unknown key
> 
> On 10/16/20 1:49 AM, kernel test robot wrote:
>> Hi Abhijeet,
>>
>> Thank you for the patch! Perhaps something to improve:
>>
>> [auto build test WARNING on 549738f15da0e5a00275977623be199fbbf7df50]
>>
>> url:    
>> https://github.com/0day-ci/linux/commits/Abhijeet-Badurkar/net-can-Introduce-MEN-16Z192-00-CAN-controller-driver/20201005-192132
>> base:    549738f15da0e5a00275977623be199fbbf7df50
>> config: openrisc-randconfig-s031-20201015 (attached as .config)
>> compiler: or1k-linux-gcc (GCC) 9.3.0
>> reproduce:
>>         wget 
>> https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
>> ~/bin/make.cross
>>         chmod +x ~/bin/make.cross
>>         # apt-get install sparse
>>         # sparse version: v0.6.3-rc1-dirty
>>         # 
>> https://github.com/0day-ci/linux/commit/267876771a434b2be3278c2c87d36146c0fac77d
>>         git remote add linux-review https://github.com/0day-ci/linux
>>         git fetch --no-tags linux-review 
>> Abhijeet-Badurkar/net-can-Introduce-MEN-16Z192-00-CAN-controller-driver/20201005-192132
>>         git checkout 267876771a434b2be3278c2c87d36146c0fac77d
>>         # save the attached .config to linux build tree
>>         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 
>> CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=openrisc 
> 
> I think it's the openrisc arch to blame^w ask here, since their iounmap 
> doesn't
> have __iomem annotation.
Yes, only the iounmap of openrisc arch has the problem. Is there any specific 
reason why it does not have __iomem annotation? What's the possible way to fix 
this? Wait for iounmap funtion of openrisc to get fixed?
> 
>>
>> If you fix the issue, kindly add following tag as appropriate
>> Reported-by: kernel test robot <l...@intel.com>
>>
>>
>> "sparse warnings: (new ones prefixed by >>)"
>>>> drivers/net/can/men_z192_can.c:1057:17: sparse: sparse: incorrect type in 
>>>> argument 1 (different address spaces) @@     expected void *addr @@     
>>>> got void [noderef] __iomem *[assigned] dev_base @@
>>>> drivers/net/can/men_z192_can.c:1057:17: sparse:     expected void *addr
>>>> drivers/net/can/men_z192_can.c:1057:17: sparse:     got void [noderef] 
>>>> __iomem *[assigned] dev_base
>>>> drivers/net/can/men_z192_can.c:1071:21: sparse: sparse: incorrect type in 
>>>> argument 1 (different address spaces) @@     expected void *addr @@     
>>>> got void [noderef] __iomem *dev_base @@
>>    drivers/net/can/men_z192_can.c:1071:21: sparse:     expected void *addr
>>>> drivers/net/can/men_z192_can.c:1071:21: sparse:     got void [noderef] 
>>>> __iomem *dev_base
>>
>> vim +1057 drivers/net/can/men_z192_can.c
>>
>>    962       
>>    963       static int men_z192_probe(struct mcb_device *mdev,
>>    964                                 const struct mcb_device_id *id)
>>    965       {
>>    966               struct device *dev = &mdev->dev;
>>    967               struct men_z192 *priv;
>>    968               struct net_device *ndev;
>>    969               void __iomem *dev_base;
>>    970               struct resource *mem;
>>    971               u32 timebase;
>>    972               int ret = 0;
>>    973               int irq;
>>    974       
>>    975               mem = mcb_request_mem(mdev, dev_name(dev));
>>    976               if (IS_ERR(mem)) {
>>    977                       dev_err(dev, "failed to request device memory");
>>    978                       return PTR_ERR(mem);
>>    979               }
>>    980       
>>    981               dev_base = ioremap(mem->start, resource_size(mem));
>>    982               if (!dev_base) {
>>    983                       dev_err(dev, "failed to ioremap device memory");
>>    984                       ret = -ENXIO;
>>    985                       goto out_release;
>>    986               }
>>    987       
>>    988               irq = mcb_get_irq(mdev);
>>    989               if (irq <= 0) {
>>    990                       ret = -ENODEV;
>>    991                       goto out_unmap;
>>    992               }
>>    993       
>>    994               ndev = alloc_candev(sizeof(struct men_z192), 0);
>>    995               if (!ndev) {
>>    996                       dev_err(dev, "failed to allocat the can 
>> device");
>>    997                       ret = -ENOMEM;
>>    998                       goto out_unmap;
>>    999               }
>>   1000       
>>   1001               ndev->netdev_ops = &men_z192_netdev_ops;
>>   1002               ndev->irq = irq;
>>   1003               ndev->flags |= IFF_ECHO;
>>   1004       
>>   1005               priv = netdev_priv(ndev);
>>   1006               priv->ndev = ndev;
>>   1007               priv->dev = dev;
>>   1008       
>>   1009               priv->mem = mem;
>>   1010               priv->dev_base = dev_base;
>>   1011               priv->regs = priv->dev_base + MEN_Z192_REGS_OFFS;
>>   1012       
>>   1013               timebase = readl(&priv->regs->timebase);
>>   1014               if (!timebase) {
>>   1015                       dev_err(dev, "invalid timebase configured 
>> (timebase=%d)\n",
>>   1016                               timebase);
>>   1017                       ret = -EINVAL;
>>   1018                       goto out_free_candev;
>>   1019               }
>>   1020       
>>   1021               priv->can.clock.freq = timebase;
>>   1022               priv->can.bittiming_const = &men_z192_bittiming_const;
>>   1023               priv->can.do_set_mode = men_z192_set_mode;
>>   1024               priv->can.do_get_berr_counter = 
>> men_z192_get_berr_counter;
>>   1025               priv->can.ctrlmode_supported = CAN_CTRLMODE_LISTENONLY |
>>   1026                                              CAN_CTRLMODE_3_SAMPLES |
>>   1027                                              CAN_CTRLMODE_LOOPBACK;
>>   1028       
>>   1029               spin_lock_init(&priv->lock);
>>   1030       
>>   1031               netif_napi_add(ndev, &priv->napi, men_z192_poll,
>>   1032                              NAPI_POLL_WEIGHT);
>>   1033       
>>   1034               skb_queue_head_init(&priv->echoq);
>>   1035       
>>   1036               mcb_set_drvdata(mdev, ndev);
>>   1037               SET_NETDEV_DEV(ndev, dev);
>>   1038       
>>   1039               ndev->ethtool_ops = &men_z192_ethtool_ops;
>>   1040       
>>   1041               ret = men_z192_register(ndev);
>>   1042               if (ret) {
>>   1043                       dev_err(dev, "failed to register CAN device");
>>   1044                       goto out_free_candev;
>>   1045               }
>>   1046       
>>   1047               devm_can_led_init(ndev);
>>   1048       
>>   1049               dev_info(dev, "MEN 16z192 CAN driver successfully 
>> registered\n");
>>   1050       
>>   1051               return 0;
>>   1052       
>>   1053       out_free_candev:
>>   1054               netif_napi_del(&priv->napi);
>>   1055               free_candev(ndev);
>>   1056       out_unmap:
>>> 1057                iounmap(dev_base);
>>   1058       out_release:
>>   1059               mcb_release_mem(mem);
>>   1060               return ret;
>>   1061       }
>>   1062       
>>   1063       static void men_z192_remove(struct mcb_device *mdev)
>>   1064       {
>>   1065               struct net_device *ndev = mcb_get_drvdata(mdev);
>>   1066               struct men_z192 *priv = netdev_priv(ndev);
>>   1067       
>>   1068               unregister_candev(ndev);
>>   1069               netif_napi_del(&priv->napi);
>>   1070       
>>> 1071                iounmap(priv->dev_base);
>>   1072               mcb_release_mem(priv->mem);
>>   1073       
>>   1074               free_candev(ndev);
>>   1075       }
>>   1076       
>>
>> ---
>> 0-DAY CI Kernel Test Service, Intel Corporation
>> https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
>>
> 
> Marc
> 

-- 
Abhijeet Badurkar - Software Engineer

 

Reply via email to