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 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") ^ :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@lists.01.org