Re: [PATCH v2 1/2] virtio_balloon: add work around for out of spec QEMU

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Michael,

kernel test robot noticed the following build errors:

[auto build test ERROR on next-20240710]
[cannot apply to uml/next remoteproc/rproc-next s390/features linus/master uml/fixes v6.10-rc7 v6.10-rc6 v6.10-rc5 v6.10-rc7]
[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#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Michael-S-Tsirkin/virtio_balloon-add-work-around-for-out-of-spec-QEMU/20240711-004346
base:   next-20240710
patch link:    https://lore.kernel.org/r/19d916257b76148f89de7386389eeb7267b1b61c.1720611677.git.mst%40redhat.com
patch subject: [PATCH v2 1/2] virtio_balloon: add work around for out of spec QEMU
config: i386-randconfig-005-20240711 (https://download.01.org/0day-ci/archive/20240711/202407112126.plGUWi8I-lkp@xxxxxxxxx/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240711/202407112126.plGUWi8I-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407112126.plGUWi8I-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

>> drivers/virtio/virtio_balloon.c:603:55: error: too few arguments to function call, expected 5, have 4
     602 |                         err = virtio_find_vqs(vb->vdev,
         |                               ~~~~~~~~~~~~~~~
     603 |                                               VIRTIO_BALLOON_VQ_REPORTING, vqs_info, NULL);
         |                                                                                          ^
   include/linux/virtio_config.h:225:5: note: 'virtio_find_vqs' declared here
     225 | int virtio_find_vqs(struct virtio_device *vdev, unsigned int nvqs,
         |     ^               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     226 |                     struct virtqueue *vqs[],
         |                     ~~~~~~~~~~~~~~~~~~~~~~~~
     227 |                     struct virtqueue_info vqs_info[],
         |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     228 |                     struct irq_affinity *desc)
         |                     ~~~~~~~~~~~~~~~~~~~~~~~~~
   1 error generated.


vim +603 drivers/virtio/virtio_balloon.c

   560	
   561	static int init_vqs(struct virtio_balloon *vb)
   562	{
   563		struct virtqueue_info vqs_info[VIRTIO_BALLOON_VQ_MAX] = {};
   564		struct virtqueue *vqs[VIRTIO_BALLOON_VQ_MAX];
   565		int err;
   566	
   567		/*
   568		 * Inflateq and deflateq are used unconditionally. The names[]
   569		 * will be NULL if the related feature is not enabled, which will
   570		 * cause no allocation for the corresponding virtqueue in find_vqs.
   571		 */
   572		vqs_info[VIRTIO_BALLOON_VQ_INFLATE].callback = balloon_ack;
   573		vqs_info[VIRTIO_BALLOON_VQ_INFLATE].name = "inflate";
   574		vqs_info[VIRTIO_BALLOON_VQ_DEFLATE].callback = balloon_ack;
   575		vqs_info[VIRTIO_BALLOON_VQ_DEFLATE].name = "deflate";
   576	
   577		if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_STATS_VQ)) {
   578			vqs_info[VIRTIO_BALLOON_VQ_STATS].name = "stats";
   579			vqs_info[VIRTIO_BALLOON_VQ_STATS].callback = stats_request;
   580		}
   581	
   582		if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
   583			vqs_info[VIRTIO_BALLOON_VQ_FREE_PAGE].name = "free_page_vq";
   584	
   585		if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING)) {
   586			vqs_info[VIRTIO_BALLOON_VQ_REPORTING].name = "reporting_vq";
   587			vqs_info[VIRTIO_BALLOON_VQ_REPORTING].callback = balloon_ack;
   588		}
   589	
   590		err = virtio_find_vqs(vb->vdev, VIRTIO_BALLOON_VQ_MAX, vqs,
   591				      vqs_info, NULL);
   592		if (err) {
   593			/*
   594			 * Try to work around QEMU bug which since 2020 confused vq numbers
   595			 * when VIRTIO_BALLOON_F_REPORTING but not
   596			 * VIRTIO_BALLOON_F_FREE_PAGE_HINT are offered.
   597			 */
   598			if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING) &&
   599			    !virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT)) {
   600				vqs_info[VIRTIO_BALLOON_VQ_FREE_PAGE].name = "reporting_vq";
   601				vqs_info[VIRTIO_BALLOON_VQ_FREE_PAGE].callback = balloon_ack;
   602				err = virtio_find_vqs(vb->vdev,
 > 603						      VIRTIO_BALLOON_VQ_REPORTING, vqs_info, NULL);
   604			}
   605	
   606			if (err)
   607				return err;
   608		}
   609	
   610		vb->inflate_vq = vqs[VIRTIO_BALLOON_VQ_INFLATE];
   611		vb->deflate_vq = vqs[VIRTIO_BALLOON_VQ_DEFLATE];
   612		if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_STATS_VQ)) {
   613			struct scatterlist sg;
   614			unsigned int num_stats;
   615			vb->stats_vq = vqs[VIRTIO_BALLOON_VQ_STATS];
   616	
   617			/*
   618			 * Prime this virtqueue with one buffer so the hypervisor can
   619			 * use it to signal us later (it can't be broken yet!).
   620			 */
   621			num_stats = update_balloon_stats(vb);
   622	
   623			sg_init_one(&sg, vb->stats, sizeof(vb->stats[0]) * num_stats);
   624			err = virtqueue_add_outbuf(vb->stats_vq, &sg, 1, vb,
   625						   GFP_KERNEL);
   626			if (err) {
   627				dev_warn(&vb->vdev->dev, "%s: add stat_vq failed\n",
   628					 __func__);
   629				return err;
   630			}
   631			virtqueue_kick(vb->stats_vq);
   632		}
   633	
   634		if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_FREE_PAGE_HINT))
   635			vb->free_page_vq = vqs[VIRTIO_BALLOON_VQ_FREE_PAGE];
   636	
   637		if (virtio_has_feature(vb->vdev, VIRTIO_BALLOON_F_REPORTING))
   638			vb->reporting_vq = vqs[VIRTIO_BALLOON_VQ_REPORTING];
   639	
   640		return 0;
   641	}
   642	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux