[avpatel:riscv_trace_support_v5 62/108] arch/riscv/kvm/aia_imsic.c:919:2: warning: variable 'vcpu' is used uninitialized whenever 'if' condition is false
kernel test robot <[email protected]>
| Newsgroups | dev.linux.lists.oe-kbuild-all |
|---|---|
| Message-ID | <[email protected]> |
tree: https://github.com/avpatel/linux.git riscv_trace_support_v5 head: e58ea3f194d326370813c549a76ecdfa211a4768 commit: ccdd3c493dc8ce3acb64600af8437ebb28775ceb [62/108] RISC-V: KVM: Add guest file irqbypass support config: riscv-randconfig-r061-20260820 (https://download.01.org/0day-ci/archive/20260820/[email protected]/config) compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 935bfc708590c60147a79c7df145bb6e68b1d388) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260820/[email protected]/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 <[email protected]> | Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ All warnings (new ones prefixed by >>): >> arch/riscv/kvm/aia_imsic.c:919:2: warning: variable 'vcpu' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] 919 | kvm_for_each_vcpu(tmp, vcpu, kvm) { | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/kvm_host.h:1012:6: note: expanded from macro 'kvm_for_each_vcpu' 1012 | if (atomic_read(&kvm->online_vcpus)) \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/riscv/kvm/aia_imsic.c:923:7: note: uninitialized use occurs here 923 | if (!vcpu) | ^~~~ arch/riscv/kvm/aia_imsic.c:919:2: note: remove the 'if' if its condition is always true 919 | kvm_for_each_vcpu(tmp, vcpu, kvm) { | ^ include/linux/kvm_host.h:1012:2: note: expanded from macro 'kvm_for_each_vcpu' 1012 | if (atomic_read(&kvm->online_vcpus)) \ | ^ arch/riscv/kvm/aia_imsic.c:883:23: note: initialize the variable 'vcpu' to silence this warning 883 | struct kvm_vcpu *vcpu; | ^ | = NULL 1 warning generated. vim +919 arch/riscv/kvm/aia_imsic.c 872 873 void kvm_arch_update_irqfd_routing(struct kvm_kernel_irqfd *irqfd, 874 struct kvm_kernel_irq_routing_entry *old, 875 struct kvm_kernel_irq_routing_entry *new) 876 { 877 struct riscv_iommu_ir_vcpu_info vcpu_info; 878 struct kvm *kvm = irqfd->kvm; 879 struct kvm_aia *aia = &kvm->arch.aia; 880 int host_irq; 881 struct irq_data *irqdata; 882 unsigned long tmp, flags; 883 struct kvm_vcpu *vcpu; 884 struct imsic *imsic; 885 struct msi_msg msg; 886 u64 msi_addr_mask; 887 gpa_t target; 888 int ret; 889 890 host_irq = irqfd->producer->irq; 891 irqdata = irq_get_irq_data(host_irq); 892 893 if (old && old->type == KVM_IRQ_ROUTING_MSI && 894 new && new->type == KVM_IRQ_ROUTING_MSI && 895 !memcmp(&old->msi, &new->msi, sizeof(new->msi))) 896 return; 897 898 if (!new) { 899 if (!WARN_ON_ONCE(!old) && old->type == KVM_IRQ_ROUTING_MSI) { 900 ret = irq_set_vcpu_affinity(host_irq, NULL); 901 WARN_ON_ONCE(ret && ret != -EOPNOTSUPP); 902 } 903 return; 904 } 905 906 if (new->type != KVM_IRQ_ROUTING_MSI) 907 return; 908 909 target = ((gpa_t)new->msi.address_hi << 32) | new->msi.address_lo; 910 if (WARN_ON_ONCE(target & (IMSIC_MMIO_PAGE_SZ - 1))) 911 return; 912 913 msg = (struct msi_msg){ 914 .address_hi = new->msi.address_hi, 915 .address_lo = new->msi.address_lo, 916 .data = new->msi.data, 917 }; 918 > 919 kvm_for_each_vcpu(tmp, vcpu, kvm) { 920 if (target == vcpu->arch.aia_context.imsic_addr) 921 break; 922 } 923 if (!vcpu) 924 return; 925 926 msi_addr_mask = kvm_riscv_aia_msi_addr_mask(aia); 927 vcpu_info = (struct riscv_iommu_ir_vcpu_info){ 928 .gpa = target, 929 .msi_addr_mask = msi_addr_mask, 930 .msi_addr_pattern = (target >> IMSIC_MMIO_PAGE_SHIFT) & ~msi_addr_mask, 931 .group_index_bits = aia->nr_group_bits, 932 .group_index_shift = aia->nr_group_shift, 933 }; 934 935 imsic = vcpu->arch.aia_context.imsic_state; 936 937 read_lock_irqsave(&imsic->vsfile_lock, flags); 938 939 if (imsic->vsfile_cpu < 0) 940 goto out; 941 942 vcpu_info.hpa = imsic->vsfile_pa; 943 944 ret = irq_set_vcpu_affinity(host_irq, &vcpu_info); 945 WARN_ON_ONCE(ret && ret != -EOPNOTSUPP); 946 if (ret) 947 goto out; 948 949 /* 950 * Unlike x86 (which updates the IRTE) and arm64 (which updates 951 * the ITS ITTE), RISC-V reprograms the device MSI target address 952 * to the guest IMSIC GPA. The device writes to the guest GPA; 953 * the IOMMU MSI table maps guest GPA -> host VS-file HPA. 954 */ 955 irq_data_get_irq_chip(irqdata)->irq_write_msi_msg(irqdata, &msg); 956 957 out: 958 read_unlock_irqrestore(&imsic->vsfile_lock, flags); 959 } 960 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki