On Fri, Nov 03, 2023 at 08:33:06AM +0800, kernel test robot wrote: > Hi Yishai, > > kernel test robot noticed the following build warnings: > > [auto build test WARNING on awilliam-vfio/for-linus] > [also build test WARNING on linus/master v6.6] > [cannot apply to awilliam-vfio/next mst-vhost/linux-next next-20231102] > [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/Yishai-Hadas/virtio-Define-feature-bit-for-administration-virtqueue/20231030-000414 > base: https://github.com/awilliam/linux-vfio.git for-linus > patch link: https://lore.kernel.org/r/20231029155952.67686-6-yishaih%40nvidia.com > patch subject: [PATCH V2 vfio 5/9] virtio-pci: Initialize the supported admin commands > config: i386-randconfig-061-20231102 (https://download.01.org/0day-ci/archive/20231103/202311030838.GjyaBTjM-lkp@xxxxxxxxx/config) > compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0 > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231103/202311030838.GjyaBTjM-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/202311030838.GjyaBTjM-lkp@xxxxxxxxx/ > > sparse warnings: (new ones prefixed by >>) > >> drivers/virtio/virtio_pci_modern.c:726:16: sparse: sparse: restricted __le16 degrades to integer > > vim +726 drivers/virtio/virtio_pci_modern.c > > 673 > 674 static int vp_modern_admin_cmd_exec(struct virtio_device *vdev, > 675 struct virtio_admin_cmd *cmd) > 676 { > 677 struct scatterlist *sgs[VIRTIO_AVQ_SGS_MAX], hdr, stat; > 678 struct virtio_pci_device *vp_dev = to_vp_device(vdev); > 679 struct virtio_admin_cmd_status *va_status; > 680 unsigned int out_num = 0, in_num = 0; > 681 struct virtio_admin_cmd_hdr *va_hdr; > 682 struct virtqueue *avq; > 683 u16 status; > 684 int ret; > 685 > 686 avq = virtio_has_feature(vdev, VIRTIO_F_ADMIN_VQ) ? > 687 vp_dev->admin_vq.info.vq : NULL; > 688 if (!avq) > 689 return -EOPNOTSUPP; > 690 > 691 va_status = kzalloc(sizeof(*va_status), GFP_KERNEL); > 692 if (!va_status) > 693 return -ENOMEM; > 694 > 695 va_hdr = kzalloc(sizeof(*va_hdr), GFP_KERNEL); > 696 if (!va_hdr) { > 697 ret = -ENOMEM; > 698 goto err_alloc; > 699 } > 700 > 701 va_hdr->opcode = cmd->opcode; > 702 va_hdr->group_type = cmd->group_type; > 703 va_hdr->group_member_id = cmd->group_member_id; > 704 > 705 /* Add header */ > 706 sg_init_one(&hdr, va_hdr, sizeof(*va_hdr)); > 707 sgs[out_num] = &hdr; > 708 out_num++; > 709 > 710 if (cmd->data_sg) { > 711 sgs[out_num] = cmd->data_sg; > 712 out_num++; > 713 } > 714 > 715 /* Add return status */ > 716 sg_init_one(&stat, va_status, sizeof(*va_status)); > 717 sgs[out_num + in_num] = &stat; > 718 in_num++; > 719 > 720 if (cmd->result_sg) { > 721 sgs[out_num + in_num] = cmd->result_sg; > 722 in_num++; > 723 } > 724 > 725 if (cmd->opcode == VIRTIO_ADMIN_CMD_LIST_QUERY || > > 726 cmd->opcode == VIRTIO_ADMIN_CMD_LIST_USE) yes, this is broken on BE. You need to convert enums to LE before you compare. > 727 ret = __virtqueue_exec_admin_cmd(&vp_dev->admin_vq, sgs, > 728 out_num, in_num, > 729 sgs, GFP_KERNEL); > 730 else > 731 ret = virtqueue_exec_admin_cmd(&vp_dev->admin_vq, sgs, > 732 out_num, in_num, > 733 sgs, GFP_KERNEL); > 734 if (ret) { > 735 dev_err(&vdev->dev, > 736 "Failed to execute command on admin vq: %d\n.", ret); > 737 goto err_cmd_exec; > 738 } > 739 > 740 status = le16_to_cpu(va_status->status); > 741 if (status != VIRTIO_ADMIN_STATUS_OK) { > 742 dev_err(&vdev->dev, > 743 "admin command error: status(%#x) qualifier(%#x)\n", > 744 status, le16_to_cpu(va_status->status_qualifier)); > 745 ret = -status; > 746 } > 747 > 748 err_cmd_exec: > 749 kfree(va_hdr); > 750 err_alloc: > 751 kfree(va_status); > 752 return ret; > 753 } > 754 > > -- > 0-DAY CI Kernel Test Service > https://github.com/intel/lkp-tests/wiki