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

From: kernel test robot
Date: Thu Jun 17 2021 - 06:12:44 EST


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-r012-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>:310: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