Re: [PATCH v4 for-next 3/3] IB/core: Obtain subnet_prefix from cache in IB devices

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Anand,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on rdma/for-next]
[also build test ERROR on next-20210616]
[cannot apply to linux/master linus/master v5.13-rc6]
[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/Anand-Khoje/IB-core-Obtaining-subnet_prefix-from-cache-in/20210617-102611
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next
config: powerpc64-randconfig-r024-20210617 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 64720f57bea6a6bf033feef4a5751ab9c0c3b401)
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 powerpc64 cross compiling tool for clang build
        # apt-get install binutils-powerpc64-linux-gnu
        # https://github.com/0day-ci/linux/commit/495253a987df586d8c5f4c525999cdf39c5823f0
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Anand-Khoje/IB-core-Obtaining-subnet_prefix-from-cache-in/20210617-102611
        git checkout 495253a987df586d8c5f4c525999cdf39c5823f0
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64 

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

All errors (new ones prefixed by >>):

   In file included from drivers/infiniband/core/cache.c:36:
   In file included from include/linux/module.h:12:
   In file included from include/linux/list.h:9:
   In file included from include/linux/kernel.h:12:
   In file included from include/linux/bitops.h:32:
   In file included from arch/powerpc/include/asm/bitops.h:62:
   arch/powerpc/include/asm/barrier.h:49:9: warning: '__lwsync' macro redefined [-Wmacro-redefined]
   #define __lwsync()      __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory")
           ^
   <built-in>:308:9: note: previous definition is here
   #define __lwsync __builtin_ppc_lwsync
           ^
>> drivers/infiniband/core/cache.c:1531:29: error: no member named 'cache' in 'struct ib_device'
                   write_unlock_irq(&device->cache.lock);
                                     ~~~~~~  ^
   include/linux/rwlock.h:108:55: note: expanded from macro 'write_unlock_irq'
   #define write_unlock_irq(lock)          _raw_write_unlock_irq(lock)
                                                                 ^~~~
   1 warning and 1 error generated.


vim +1531 drivers/infiniband/core/cache.c

  1463	
  1464	static int
  1465	ib_cache_update(struct ib_device *device, u32 port, bool update_gids,
  1466			bool update_pkeys, bool enforce_security)
  1467	{
  1468		struct ib_port_attr       *tprops = NULL;
  1469		struct ib_pkey_cache      *pkey_cache = NULL;
  1470		struct ib_pkey_cache      *old_pkey_cache = NULL;
  1471		union ib_gid               gid;
  1472		int                        i;
  1473		int                        ret;
  1474	
  1475		if (!rdma_is_port_valid(device, port))
  1476			return -EINVAL;
  1477	
  1478		tprops = kmalloc(sizeof *tprops, GFP_KERNEL);
  1479		if (!tprops)
  1480			return -ENOMEM;
  1481	
  1482		ret = ib_query_port(device, port, tprops);
  1483		if (ret) {
  1484			dev_warn(&device->dev, "ib_query_port failed (%d)\n", ret);
  1485			goto err;
  1486		}
  1487	
  1488		if (!rdma_protocol_roce(device, port) && update_gids) {
  1489			ret = config_non_roce_gid_cache(device, port,
  1490							tprops->gid_tbl_len);
  1491			if (ret)
  1492				goto err;
  1493		}
  1494	
  1495		update_pkeys &= !!tprops->pkey_tbl_len;
  1496	
  1497		if (update_pkeys) {
  1498			pkey_cache = kmalloc(struct_size(pkey_cache, table,
  1499							 tprops->pkey_tbl_len),
  1500					     GFP_KERNEL);
  1501			if (!pkey_cache) {
  1502				ret = -ENOMEM;
  1503				goto err;
  1504			}
  1505	
  1506			pkey_cache->table_len = tprops->pkey_tbl_len;
  1507	
  1508			for (i = 0; i < pkey_cache->table_len; ++i) {
  1509				ret = ib_query_pkey(device, port, i,
  1510						    pkey_cache->table + i);
  1511				if (ret) {
  1512					dev_warn(&device->dev,
  1513						 "ib_query_pkey failed (%d) for index %d\n",
  1514						 ret, i);
  1515					goto err;
  1516				}
  1517			}
  1518		}
  1519	
  1520		write_lock_irq(&device->cache_lock);
  1521	
  1522		if (update_pkeys) {
  1523			old_pkey_cache = device->port_data[port].cache.pkey;
  1524			device->port_data[port].cache.pkey = pkey_cache;
  1525		}
  1526		device->port_data[port].cache.lmc = tprops->lmc;
  1527		device->port_data[port].cache.port_state = tprops->state;
  1528	
  1529		ret = rdma_query_gid(device, port, 0, &gid);
  1530		if (ret) {
> 1531			write_unlock_irq(&device->cache.lock);
  1532			goto err;
  1533		}
  1534	
  1535		device->port_data[port].cache.subnet_prefix =
  1536				be64_to_cpu(gid.global.subnet_prefix);
  1537	
  1538		write_unlock_irq(&device->cache_lock);
  1539	
  1540		if (enforce_security)
  1541			ib_security_cache_change(device,
  1542						 port,
  1543						 be64_to_cpu(gid.global.subnet_prefix));
  1544	
  1545		kfree(old_pkey_cache);
  1546		kfree(tprops);
  1547		return 0;
  1548	
  1549	err:
  1550		kfree(pkey_cache);
  1551		kfree(tprops);
  1552		return ret;
  1553	}
  1554	

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

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux