tree: https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-4.9 head: 72260bd4999b1a400ace77f186ded8429ce02bbc commit: 9f43ba4aad20b2f53352083143bb22aee0b190b0 [77/128] RDMA/cxgb4: Validate the number of CQEs config: i386-allyesconfig (attached as .config) compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0 reproduce (this is a W=1 build): # https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git/commit/?id=9f43ba4aad20b2f53352083143bb22aee0b190b0 git remote add sashal-linux-stable https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git git fetch --no-tags sashal-linux-stable queue-4.9 git checkout 9f43ba4aad20b2f53352083143bb22aee0b190b0 # save the attached .config to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>): drivers/infiniband/hw/cxgb4/cq.c: In function 'c4iw_create_cq': >> drivers/infiniband/hw/cxgb4/cq.c:897:10: warning: return makes pointer from integer without a cast [-Wint-conversion] return -EINVAL; ^ vim +897 drivers/infiniband/hw/cxgb4/cq.c 874 875 struct ib_cq *c4iw_create_cq(struct ib_device *ibdev, 876 const struct ib_cq_init_attr *attr, 877 struct ib_ucontext *ib_context, 878 struct ib_udata *udata) 879 { 880 int entries = attr->cqe; 881 int vector = attr->comp_vector; 882 struct c4iw_dev *rhp; 883 struct c4iw_cq *chp; 884 struct c4iw_create_cq_resp uresp; 885 struct c4iw_ucontext *ucontext = NULL; 886 int ret, wr_len; 887 size_t memsize, hwentries; 888 struct c4iw_mm_entry *mm, *mm2; 889 890 PDBG("%s ib_dev %p entries %d\n", __func__, ibdev, entries); 891 if (attr->flags) 892 return ERR_PTR(-EINVAL); 893 894 rhp = to_c4iw_dev(ibdev); 895 896 if (entries < 1 || entries > ibdev->attrs.max_cqe) > 897 return -EINVAL; 898 899 if (vector >= rhp->rdev.lldi.nciq) 900 return ERR_PTR(-EINVAL); 901 902 chp = kzalloc(sizeof(*chp), GFP_KERNEL); 903 if (!chp) 904 return ERR_PTR(-ENOMEM); 905 906 wr_len = sizeof(struct fw_ri_res_wr) + sizeof(struct fw_ri_res); 907 chp->destroy_skb = alloc_skb(wr_len, GFP_KERNEL); 908 if (!chp->destroy_skb) { 909 ret = -ENOMEM; 910 goto err1; 911 } 912 913 if (ib_context) 914 ucontext = to_c4iw_ucontext(ib_context); 915 916 /* account for the status page. */ 917 entries++; 918 919 /* IQ needs one extra entry to differentiate full vs empty. */ 920 entries++; 921 922 /* 923 * entries must be multiple of 16 for HW. 924 */ 925 entries = roundup(entries, 16); 926 927 /* 928 * Make actual HW queue 2x to avoid cdix_inc overflows. 929 */ 930 hwentries = min(entries * 2, rhp->rdev.hw_queue.t4_max_iq_size); 931 932 /* 933 * Make HW queue at least 64 entries so GTS updates aren't too 934 * frequent. 935 */ 936 if (hwentries < 64) 937 hwentries = 64; 938 939 memsize = hwentries * sizeof *chp->cq.queue; 940 941 /* 942 * memsize must be a multiple of the page size if its a user cq. 943 */ 944 if (ucontext) 945 memsize = roundup(memsize, PAGE_SIZE); 946 chp->cq.size = hwentries; 947 chp->cq.memsize = memsize; 948 chp->cq.vector = vector; 949 950 ret = create_cq(&rhp->rdev, &chp->cq, 951 ucontext ? &ucontext->uctx : &rhp->rdev.uctx); 952 if (ret) 953 goto err2; 954 955 chp->rhp = rhp; 956 chp->cq.size--; /* status page */ 957 chp->ibcq.cqe = entries - 2; 958 spin_lock_init(&chp->lock); 959 spin_lock_init(&chp->comp_handler_lock); 960 atomic_set(&chp->refcnt, 1); 961 init_waitqueue_head(&chp->wait); 962 ret = insert_handle(rhp, &rhp->cqidr, chp, chp->cq.cqid); 963 if (ret) 964 goto err3; 965 966 if (ucontext) { 967 mm = kmalloc(sizeof *mm, GFP_KERNEL); 968 if (!mm) 969 goto err4; 970 mm2 = kmalloc(sizeof *mm2, GFP_KERNEL); 971 if (!mm2) 972 goto err5; 973 974 uresp.qid_mask = rhp->rdev.cqmask; 975 uresp.cqid = chp->cq.cqid; 976 uresp.size = chp->cq.size; 977 uresp.memsize = chp->cq.memsize; 978 spin_lock(&ucontext->mmap_lock); 979 uresp.key = ucontext->key; 980 ucontext->key += PAGE_SIZE; 981 uresp.gts_key = ucontext->key; 982 ucontext->key += PAGE_SIZE; 983 spin_unlock(&ucontext->mmap_lock); 984 ret = ib_copy_to_udata(udata, &uresp, 985 sizeof(uresp) - sizeof(uresp.reserved)); 986 if (ret) 987 goto err6; 988 989 mm->key = uresp.key; 990 mm->addr = virt_to_phys(chp->cq.queue); 991 mm->len = chp->cq.memsize; 992 insert_mmap(ucontext, mm); 993 994 mm2->key = uresp.gts_key; 995 mm2->addr = chp->cq.bar2_pa; 996 mm2->len = PAGE_SIZE; 997 insert_mmap(ucontext, mm2); 998 } 999 PDBG("%s cqid 0x%0x chp %p size %u memsize %zu, dma_addr 0x%0llx\n", 1000 __func__, chp->cq.cqid, chp, chp->cq.size, 1001 chp->cq.memsize, (unsigned long long) chp->cq.dma_addr); 1002 return &chp->ibcq; 1003 err6: 1004 kfree(mm2); 1005 err5: 1006 kfree(mm); 1007 err4: 1008 remove_handle(rhp, &rhp->cqidr, chp->cq.cqid); 1009 err3: 1010 destroy_cq(&chp->rhp->rdev, &chp->cq, 1011 ucontext ? &ucontext->uctx : &rhp->rdev.uctx, 1012 chp->destroy_skb); 1013 err2: 1014 kfree_skb(chp->destroy_skb); 1015 err1: 1016 kfree(chp); 1017 return ERR_PTR(ret); 1018 } 1019 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org