Message ID | 20210528113018.52290-6-jinpu.wang@ionos.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | RTRS update for 5.14 | expand |
Hi Jack, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on rdma/for-next] [also build test WARNING on v5.13-rc3 next-20210528] [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/Jack-Wang/RTRS-update-for-5-14/20210528-193313 base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next config: x86_64-randconfig-a012-20210526 (attached as .config) compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 6505c630407c5feec818f0bb1c284f9eeebf2071) 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/66f95f659060028d1f0f91473ad1c16a6595fcac git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Jack-Wang/RTRS-update-for-5-14/20210528-193313 git checkout 66f95f659060028d1f0f91473ad1c16a6595fcac # 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@intel.com> All warnings (new ones prefixed by >>): >> drivers/infiniband/ulp/rtrs/rtrs-clt.c:1786:19: warning: result of comparison of constant 'MAX_SESS_QUEUE_DEPTH' (65536) with expression of type 'u16' (aka 'unsigned short') is always false [-Wtautological-constant-out-of-range-compare] if (queue_depth > MAX_SESS_QUEUE_DEPTH) { ~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value' (cond) ? \ ^~~~ >> drivers/infiniband/ulp/rtrs/rtrs-clt.c:1786:19: warning: result of comparison of constant 'MAX_SESS_QUEUE_DEPTH' (65536) with expression of type 'u16' (aka 'unsigned short') is always false [-Wtautological-constant-out-of-range-compare] if (queue_depth > MAX_SESS_QUEUE_DEPTH) { ~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ >> drivers/infiniband/ulp/rtrs/rtrs-clt.c:1786:19: warning: result of comparison of constant 'MAX_SESS_QUEUE_DEPTH' (65536) with expression of type 'u16' (aka 'unsigned short') is always false [-Wtautological-constant-out-of-range-compare] if (queue_depth > MAX_SESS_QUEUE_DEPTH) { ~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:56:47: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^~~~ include/linux/compiler.h:58:61: note: expanded from macro '__trace_if_var' #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond)) ^~~~ 3 warnings generated. vim +1786 drivers/infiniband/ulp/rtrs/rtrs-clt.c 6a98d71daea186 Jack Wang 2020-05-11 1750 6a98d71daea186 Jack Wang 2020-05-11 1751 static int rtrs_rdma_conn_established(struct rtrs_clt_con *con, 6a98d71daea186 Jack Wang 2020-05-11 1752 struct rdma_cm_event *ev) 6a98d71daea186 Jack Wang 2020-05-11 1753 { 6a98d71daea186 Jack Wang 2020-05-11 1754 struct rtrs_clt_sess *sess = to_clt_sess(con->c.sess); 6a98d71daea186 Jack Wang 2020-05-11 1755 struct rtrs_clt *clt = sess->clt; 6a98d71daea186 Jack Wang 2020-05-11 1756 const struct rtrs_msg_conn_rsp *msg; 6a98d71daea186 Jack Wang 2020-05-11 1757 u16 version, queue_depth; 6a98d71daea186 Jack Wang 2020-05-11 1758 int errno; 6a98d71daea186 Jack Wang 2020-05-11 1759 u8 len; 6a98d71daea186 Jack Wang 2020-05-11 1760 6a98d71daea186 Jack Wang 2020-05-11 1761 msg = ev->param.conn.private_data; 6a98d71daea186 Jack Wang 2020-05-11 1762 len = ev->param.conn.private_data_len; 6a98d71daea186 Jack Wang 2020-05-11 1763 if (len < sizeof(*msg)) { 6a98d71daea186 Jack Wang 2020-05-11 1764 rtrs_err(clt, "Invalid RTRS connection response\n"); 6a98d71daea186 Jack Wang 2020-05-11 1765 return -ECONNRESET; 6a98d71daea186 Jack Wang 2020-05-11 1766 } 6a98d71daea186 Jack Wang 2020-05-11 1767 if (le16_to_cpu(msg->magic) != RTRS_MAGIC) { 6a98d71daea186 Jack Wang 2020-05-11 1768 rtrs_err(clt, "Invalid RTRS magic\n"); 6a98d71daea186 Jack Wang 2020-05-11 1769 return -ECONNRESET; 6a98d71daea186 Jack Wang 2020-05-11 1770 } 6a98d71daea186 Jack Wang 2020-05-11 1771 version = le16_to_cpu(msg->version); 6a98d71daea186 Jack Wang 2020-05-11 1772 if (version >> 8 != RTRS_PROTO_VER_MAJOR) { 6a98d71daea186 Jack Wang 2020-05-11 1773 rtrs_err(clt, "Unsupported major RTRS version: %d, expected %d\n", 6a98d71daea186 Jack Wang 2020-05-11 1774 version >> 8, RTRS_PROTO_VER_MAJOR); 6a98d71daea186 Jack Wang 2020-05-11 1775 return -ECONNRESET; 6a98d71daea186 Jack Wang 2020-05-11 1776 } 6a98d71daea186 Jack Wang 2020-05-11 1777 errno = le16_to_cpu(msg->errno); 6a98d71daea186 Jack Wang 2020-05-11 1778 if (errno) { 6a98d71daea186 Jack Wang 2020-05-11 1779 rtrs_err(clt, "Invalid RTRS message: errno %d\n", 6a98d71daea186 Jack Wang 2020-05-11 1780 errno); 6a98d71daea186 Jack Wang 2020-05-11 1781 return -ECONNRESET; 6a98d71daea186 Jack Wang 2020-05-11 1782 } 6a98d71daea186 Jack Wang 2020-05-11 1783 if (con->c.cid == 0) { 6a98d71daea186 Jack Wang 2020-05-11 1784 queue_depth = le16_to_cpu(msg->queue_depth); 6a98d71daea186 Jack Wang 2020-05-11 1785 6a98d71daea186 Jack Wang 2020-05-11 @1786 if (queue_depth > MAX_SESS_QUEUE_DEPTH) { 6a98d71daea186 Jack Wang 2020-05-11 1787 rtrs_err(clt, "Invalid RTRS message: queue=%d\n", 6a98d71daea186 Jack Wang 2020-05-11 1788 queue_depth); 6a98d71daea186 Jack Wang 2020-05-11 1789 return -ECONNRESET; 6a98d71daea186 Jack Wang 2020-05-11 1790 } 6a98d71daea186 Jack Wang 2020-05-11 1791 if (!sess->rbufs || sess->queue_depth < queue_depth) { 6a98d71daea186 Jack Wang 2020-05-11 1792 kfree(sess->rbufs); 6a98d71daea186 Jack Wang 2020-05-11 1793 sess->rbufs = kcalloc(queue_depth, sizeof(*sess->rbufs), 6a98d71daea186 Jack Wang 2020-05-11 1794 GFP_KERNEL); 6a98d71daea186 Jack Wang 2020-05-11 1795 if (!sess->rbufs) 6a98d71daea186 Jack Wang 2020-05-11 1796 return -ENOMEM; 6a98d71daea186 Jack Wang 2020-05-11 1797 } 6a98d71daea186 Jack Wang 2020-05-11 1798 sess->queue_depth = queue_depth; 6a98d71daea186 Jack Wang 2020-05-11 1799 sess->max_hdr_size = le32_to_cpu(msg->max_hdr_size); 6a98d71daea186 Jack Wang 2020-05-11 1800 sess->max_io_size = le32_to_cpu(msg->max_io_size); 6a98d71daea186 Jack Wang 2020-05-11 1801 sess->flags = le32_to_cpu(msg->flags); 6a98d71daea186 Jack Wang 2020-05-11 1802 sess->chunk_size = sess->max_io_size + sess->max_hdr_size; 6a98d71daea186 Jack Wang 2020-05-11 1803 6a98d71daea186 Jack Wang 2020-05-11 1804 /* 6a98d71daea186 Jack Wang 2020-05-11 1805 * Global queue depth and IO size is always a minimum. 6a98d71daea186 Jack Wang 2020-05-11 1806 * If while a reconnection server sends us a value a bit 6a98d71daea186 Jack Wang 2020-05-11 1807 * higher - client does not care and uses cached minimum. 6a98d71daea186 Jack Wang 2020-05-11 1808 * 6a98d71daea186 Jack Wang 2020-05-11 1809 * Since we can have several sessions (paths) restablishing 6a98d71daea186 Jack Wang 2020-05-11 1810 * connections in parallel, use lock. 6a98d71daea186 Jack Wang 2020-05-11 1811 */ 6a98d71daea186 Jack Wang 2020-05-11 1812 mutex_lock(&clt->paths_mutex); 6a98d71daea186 Jack Wang 2020-05-11 1813 clt->queue_depth = min_not_zero(sess->queue_depth, 6a98d71daea186 Jack Wang 2020-05-11 1814 clt->queue_depth); 6a98d71daea186 Jack Wang 2020-05-11 1815 clt->max_io_size = min_not_zero(sess->max_io_size, 6a98d71daea186 Jack Wang 2020-05-11 1816 clt->max_io_size); 6a98d71daea186 Jack Wang 2020-05-11 1817 mutex_unlock(&clt->paths_mutex); 6a98d71daea186 Jack Wang 2020-05-11 1818 6a98d71daea186 Jack Wang 2020-05-11 1819 /* 6a98d71daea186 Jack Wang 2020-05-11 1820 * Cache the hca_port and hca_name for sysfs 6a98d71daea186 Jack Wang 2020-05-11 1821 */ 6a98d71daea186 Jack Wang 2020-05-11 1822 sess->hca_port = con->c.cm_id->port_num; 6a98d71daea186 Jack Wang 2020-05-11 1823 scnprintf(sess->hca_name, sizeof(sess->hca_name), 6a98d71daea186 Jack Wang 2020-05-11 1824 sess->s.dev->ib_dev->name); 6a98d71daea186 Jack Wang 2020-05-11 1825 sess->s.src_addr = con->c.cm_id->route.addr.src_addr; 03e9b33a0fd677 Md Haris Iqbal 2021-02-12 1826 /* set for_new_clt, to allow future reconnect on any path */ 03e9b33a0fd677 Md Haris Iqbal 2021-02-12 1827 sess->for_new_clt = 1; 6a98d71daea186 Jack Wang 2020-05-11 1828 } 6a98d71daea186 Jack Wang 2020-05-11 1829 6a98d71daea186 Jack Wang 2020-05-11 1830 return 0; 6a98d71daea186 Jack Wang 2020-05-11 1831 } 6a98d71daea186 Jack Wang 2020-05-11 1832 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
On Fri, May 28, 2021 at 6:20 PM kernel test robot <lkp@intel.com> wrote: > > Hi Jack, > > Thank you for the patch! Perhaps something to improve: > > [auto build test WARNING on rdma/for-next] > [also build test WARNING on v5.13-rc3 next-20210528] > [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/Jack-Wang/RTRS-update-for-5-14/20210528-193313 > base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next > config: x86_64-randconfig-a012-20210526 (attached as .config) > compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 6505c630407c5feec818f0bb1c284f9eeebf2071) > 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/66f95f659060028d1f0f91473ad1c16a6595fcac > git remote add linux-review https://github.com/0day-ci/linux > git fetch --no-tags linux-review Jack-Wang/RTRS-update-for-5-14/20210528-193313 > git checkout 66f95f659060028d1f0f91473ad1c16a6595fcac > # 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@intel.com> > > All warnings (new ones prefixed by >>): > > >> drivers/infiniband/ulp/rtrs/rtrs-clt.c:1786:19: warning: result of comparison of constant 'MAX_SESS_QUEUE_DEPTH' (65536) with expression of type 'u16' (aka 'unsigned short') is always false [-Wtautological-constant-out-of-range-compare] > if (queue_depth > MAX_SESS_QUEUE_DEPTH) { > ~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~ Thanks for the reporting. As the check is checking against u16 max,I think we should reduce MAX_SESS_QUEUE_DEPTH to 65535, and drop the check in line rtrs-clt: 1786 Jason, you mentioned v3 is applied in for-next, I guess I'll wait when you push it out, and send the patch to fix this. is it ok? Thanks!
On Mon, May 31, 2021 at 01:44:22PM +0200, Jinpu Wang wrote: > On Fri, May 28, 2021 at 6:20 PM kernel test robot <lkp@intel.com> wrote: > > > > Hi Jack, > > > > Thank you for the patch! Perhaps something to improve: > > > > [auto build test WARNING on rdma/for-next] > > [also build test WARNING on v5.13-rc3 next-20210528] > > [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/Jack-Wang/RTRS-update-for-5-14/20210528-193313 > > base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next > > config: x86_64-randconfig-a012-20210526 (attached as .config) > > compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 6505c630407c5feec818f0bb1c284f9eeebf2071) > > 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/66f95f659060028d1f0f91473ad1c16a6595fcac > > git remote add linux-review https://github.com/0day-ci/linux > > git fetch --no-tags linux-review Jack-Wang/RTRS-update-for-5-14/20210528-193313 > > git checkout 66f95f659060028d1f0f91473ad1c16a6595fcac > > # 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@intel.com> > > > > All warnings (new ones prefixed by >>): > > > > >> drivers/infiniband/ulp/rtrs/rtrs-clt.c:1786:19: warning: result of comparison of constant 'MAX_SESS_QUEUE_DEPTH' (65536) with expression of type 'u16' (aka 'unsigned short') is always false [-Wtautological-constant-out-of-range-compare] > > if (queue_depth > MAX_SESS_QUEUE_DEPTH) { > > ~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~ > Thanks for the reporting. > > As the check is checking against u16 max,I think we should reduce > MAX_SESS_QUEUE_DEPTH to 65535, and drop the check in line rtrs-clt: > 1786 > > Jason, you mentioned v3 is applied in for-next, I guess I'll wait when > you push it out, and send the patch to fix this. is it ok? Send me a fix right away and I'll fix the original patch Jason
On Mon, May 31, 2021 at 2:17 PM Jason Gunthorpe <jgg@ziepe.ca> wrote: > > On Mon, May 31, 2021 at 01:44:22PM +0200, Jinpu Wang wrote: > > On Fri, May 28, 2021 at 6:20 PM kernel test robot <lkp@intel.com> wrote: > > > > > > Hi Jack, > > > > > > Thank you for the patch! Perhaps something to improve: > > > > > > [auto build test WARNING on rdma/for-next] > > > [also build test WARNING on v5.13-rc3 next-20210528] > > > [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/Jack-Wang/RTRS-update-for-5-14/20210528-193313 > > > base: https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next > > > config: x86_64-randconfig-a012-20210526 (attached as .config) > > > compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 6505c630407c5feec818f0bb1c284f9eeebf2071) > > > 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/66f95f659060028d1f0f91473ad1c16a6595fcac > > > git remote add linux-review https://github.com/0day-ci/linux > > > git fetch --no-tags linux-review Jack-Wang/RTRS-update-for-5-14/20210528-193313 > > > git checkout 66f95f659060028d1f0f91473ad1c16a6595fcac > > > # 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@intel.com> > > > > > > All warnings (new ones prefixed by >>): > > > > > > >> drivers/infiniband/ulp/rtrs/rtrs-clt.c:1786:19: warning: result of comparison of constant 'MAX_SESS_QUEUE_DEPTH' (65536) with expression of type 'u16' (aka 'unsigned short') is always false [-Wtautological-constant-out-of-range-compare] > > > if (queue_depth > MAX_SESS_QUEUE_DEPTH) { > > > ~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~ > > Thanks for the reporting. > > > > As the check is checking against u16 max,I think we should reduce > > MAX_SESS_QUEUE_DEPTH to 65535, and drop the check in line rtrs-clt: > > 1786 > > > > Jason, you mentioned v3 is applied in for-next, I guess I'll wait when > > you push it out, and send the patch to fix this. is it ok? > > Send me a fix right away and I'll fix the original patch ok, it's here: https://lore.kernel.org/linux-rdma/20210531122835.58329-1-jinpu.wang@ionos.com/T/#u > > Jason Thanks!
diff --git a/drivers/infiniband/ulp/rtrs/rtrs-pri.h b/drivers/infiniband/ulp/rtrs/rtrs-pri.h index 86e65cf30cab..d957bbf1ddd3 100644 --- a/drivers/infiniband/ulp/rtrs/rtrs-pri.h +++ b/drivers/infiniband/ulp/rtrs/rtrs-pri.h @@ -47,12 +47,15 @@ enum { MAX_PATHS_NUM = 128, /* - * With the size of struct rtrs_permit allocated on the client, 4K - * is the maximum number of rtrs_permits we can allocate. This number is - * also used on the client to allocate the IU for the user connection - * to receive the RDMA addresses from the server. + * Max IB immediate data size is 2^28 (MAX_IMM_PAYL_BITS) + * and the minimum chunk size is 4096 (2^12). + * So the maximum sess_queue_depth is 65536 (2^16) in theory. + * But mempool_create, create_qp and ib_post_send fail with + * "cannot allocate memory" error if sess_queue_depth is too big. + * Therefore the pratical max value of sess_queue_depth is + * somewhere between 1 and 65536 and it depends on the system. */ - MAX_SESS_QUEUE_DEPTH = 4096, + MAX_SESS_QUEUE_DEPTH = 65536, RTRS_HB_INTERVAL_MS = 5000, RTRS_HB_MISSED_MAX = 5,