tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git vhost
head:   2b91e7f7cb5a6f12a2f43b200cb2d65a218237ed
commit: 2b91e7f7cb5a6f12a2f43b200cb2d65a218237ed [6/6] vhost: batching fetches
config: x86_64-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
        git checkout 2b91e7f7cb5a6f12a2f43b200cb2d65a218237ed
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <l...@intel.com>

All errors (new ones prefixed by >>):

   drivers/vhost/vhost.c: In function 'vhost_get_vq_desc_batch':
>> drivers/vhost/vhost.c:2672:9: error: 'desc' undeclared (first use in this 
>> function); did you mean 'rdtsc'?
      if (!(desc->flags & VRING_DESC_F_NEXT))
            ^~~~
            rdtsc
   drivers/vhost/vhost.c:2672:9: note: each undeclared identifier is reported 
only once for each function it appears in

vim +2672 drivers/vhost/vhost.c

  2569  
  2570  /* This looks in the virtqueue and for the first available buffer, and 
converts
  2571   * it to an iovec for convenient access.  Since descriptors consist of 
some
  2572   * number of output then some number of input descriptors, it's 
actually two
  2573   * iovecs, but we pack them into one and note how many of each there 
were.
  2574   *
  2575   * This function returns the descriptor number found, or vq->num (which 
is
  2576   * never a valid descriptor number) if none was found.  A negative code 
is
  2577   * returned on error. */
  2578  int vhost_get_vq_desc_batch(struct vhost_virtqueue *vq,
  2579                        struct iovec iov[], unsigned int iov_size,
  2580                        unsigned int *out_num, unsigned int *in_num,
  2581                        struct vhost_log *log, unsigned int *log_num)
  2582  {
  2583          int ret = fetch_descs(vq);
  2584          struct vhost_desc *last;
  2585          u16 id;
  2586          int i;
  2587  
  2588          if (ret)
  2589                  return ret;
  2590  
  2591          /* Note: indirect descriptors are not batched */
  2592          /* TODO: batch up to a limit */
  2593          last = peek_split_desc(vq);
  2594          id = last->id;
  2595  
  2596          if (last->flags & VRING_DESC_F_INDIRECT) {
  2597                          int r;
  2598  
  2599                          pop_split_desc(vq);
  2600                          r = fetch_indirect_descs(vq, last, id);
  2601                          if (unlikely(r < 0)) {
  2602                                  if (r != -EAGAIN)
  2603                                          vq_err(vq, "Failure detected "
  2604                                                 "in indirect descriptor 
at idx %d\n", id);
  2605                                  return ret;
  2606                          }
  2607          }
  2608  
  2609          /* Now convert to IOV */
  2610          /* When we start there are none of either input nor output. */
  2611          *out_num = *in_num = 0;
  2612          if (unlikely(log))
  2613                  *log_num = 0;
  2614  
  2615          for (i = vq->first_desc; i < vq->ndescs; ++i) {
  2616                  unsigned iov_count = *in_num + *out_num;
  2617                  struct vhost_desc *desc = &vq->descs[i];
  2618                  int access;
  2619  
  2620                  if (desc->flags & ~VHOST_DESC_FLAGS) {
  2621                          vq_err(vq, "Unexpected flags: 0x%x at 
descriptor id 0x%x\n",
  2622                                 desc->flags, desc->id);
  2623                          ret = -EINVAL;
  2624                          goto err;
  2625                  }
  2626                  if (desc->flags & VRING_DESC_F_WRITE)
  2627                          access = VHOST_ACCESS_WO;
  2628                  else
  2629                          access = VHOST_ACCESS_RO;
  2630                  ret = translate_desc(vq, desc->addr,
  2631                                       desc->len, iov + iov_count,
  2632                                       iov_size - iov_count, access);
  2633                  if (unlikely(ret < 0)) {
  2634                          if (ret != -EAGAIN)
  2635                                  vq_err(vq, "Translation failure %d 
descriptor idx %d\n",
  2636                                          ret, i);
  2637                          goto err;
  2638                  }
  2639                  if (access == VHOST_ACCESS_WO) {
  2640                          /* If this is an input descriptor,
  2641                           * increment that count. */
  2642                          *in_num += ret;
  2643                          if (unlikely(log && ret)) {
  2644                                  log[*log_num].addr = desc->addr;
  2645                                  log[*log_num].len = desc->len;
  2646                                  ++*log_num;
  2647                          }
  2648                  } else {
  2649                          /* If it's an output descriptor, they're all 
supposed
  2650                           * to come before any input descriptors. */
  2651                          if (unlikely(*in_num)) {
  2652                                  vq_err(vq, "Descriptor has out after 
in: "
  2653                                         "idx %d\n", i);
  2654                                  ret = -EINVAL;
  2655                                  goto err;
  2656                          }
  2657                          *out_num += ret;
  2658                  }
  2659  
  2660                  ret = desc->id;
  2661  
  2662                  if (!(desc->flags & VRING_DESC_F_NEXT))
  2663                          break;
  2664          }
  2665  
  2666          vq->first_desc = i + 1;
  2667  
  2668          return ret;
  2669  
  2670  err:
  2671          for (i = vq->first_desc; i < vq->ndescs; ++i)
> 2672                  if (!(desc->flags & VRING_DESC_F_NEXT))
  2673                          vhost_discard_vq_desc(vq, 1);
  2674          vq->ndescs = 0;
  2675  
  2676          return ret;
  2677  }
  2678  EXPORT_SYMBOL_GPL(vhost_get_vq_desc_batch);
  2679  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to