* arch/x86/kvm/svm/avic.c:984:50: error: implicit declaration of function 'kvm_cpu_get_apicid'; did you mean 'kvm_cpu_get_extint'?
@ 2026-08-10 11:53 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-08-10 11:53 UTC (permalink / raw)
To: Sairaj Kodilkar; +Cc: oe-kbuild-all, 0day robot
tree: https://github.com/intel-lab-lkp/linux/commits/Sairaj-Kodilkar/iommu-amd-kvm-svm-Improve-API-between-SVM-and-AMD-IOMMU/20260806-223438
head: 51c8e1a2e7e7a48f09a27b87014d46f6731728a3
commit: 6cb2b8d8101192002c42cc0fb5b16b5568d583e2 kvm/svm: Update the per-CPU wakeup-list during vCPU load and unload
date: 4 days ago
config: x86_64-rhel-9.4-bpf (https://download.01.org/0day-ci/archive/20260810/202608101324.p3oCfgNo-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260810/202608101324.p3oCfgNo-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608101324.p3oCfgNo-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/x86/kvm/svm/avic.c: In function 'avic_pi_update_irte':
>> arch/x86/kvm/svm/avic.c:984:50: error: implicit declaration of function 'kvm_cpu_get_apicid'; did you mean 'kvm_cpu_get_extint'? [-Wimplicit-function-declaration]
984 | pi_data.apicid = kvm_cpu_get_apicid(svm->gappi_cpu);
| ^~~~~~~~~~~~~~~~~~
| kvm_cpu_get_extint
vim +984 arch/x86/kvm/svm/avic.c
931
932 int avic_pi_update_irte(struct kvm_kernel_irqfd *irqfd, struct kvm *kvm,
933 unsigned int host_irq, uint32_t guest_irq,
934 struct kvm_vcpu *vcpu, u32 vector)
935 {
936 /*
937 * If the IRQ was affined to a different vCPU, remove the IRTE metadata
938 * from the *previous* vCPU's list.
939 */
940 svm_ir_list_del(irqfd);
941
942 if (vcpu) {
943 /*
944 * Try to enable guest_mode in IRTE, unless AVIC is inhibited,
945 * in which case configure the IRTE for legacy mode, but track
946 * the IRTE metadata so that it can be converted to guest mode
947 * if AVIC is enabled/uninhibited in the future.
948 */
949 struct amd_iommu_pi_data pi_data = {
950 .ga_tag = AVIC_GATAG(to_kvm_svm(kvm)->avic_vm_id,
951 vcpu->vcpu_idx),
952 .is_guest_mode = kvm_vcpu_apicv_active(vcpu),
953 .vapic_addr = avic_get_backing_page_address(to_svm(vcpu)),
954 .vector = vector,
955 };
956 struct vcpu_svm *svm = to_svm(vcpu);
957 u64 entry;
958 int ret;
959 int posted_intr;
960 bool is_vcpu_waiting = false;
961
962 /*
963 * Prevent the vCPU from being scheduled out or migrated until
964 * the IRTE is updated and its metadata has been added to the
965 * list of IRQs being posted to the vCPU, to ensure the IRTE
966 * isn't programmed with stale pCPU/IsRunning information.
967 */
968 guard(raw_spinlock_irqsave)(&svm->ir_list_lock);
969
970 /*
971 * Update the target pCPU for IOMMU doorbells if the vCPU is
972 * running. If the vCPU is NOT running, i.e. is blocking or
973 * scheduled out, KVM will update the pCPU info when the vCPU
974 * is awakened and/or scheduled in. See also avic_vcpu_load().
975 */
976 entry = svm->avic_physical_id_entry;
977 if (entry & AVIC_PHYSICAL_ID_ENTRY_IS_RUNNING_MASK) {
978 pi_data.apicid = entry & AVIC_PHYSICAL_ID_ENTRY_HOST_PHYSICAL_ID_MASK;
979 pi_data.flags = AMD_IOMMU_FLAG_VCPU_RUNNING;
980 } else {
981 posted_intr = !!(entry & AVIC_PHYSICAL_ID_ENTRY_GA_LOG_INTR);
982 pi_data.flags = posted_intr << AMD_IOMMU_FLAG_POSTED_INTR_SHIFT;
983 if (amd_iommu_gappi) {
> 984 pi_data.apicid = kvm_cpu_get_apicid(svm->gappi_cpu);
985 if (list_empty(&svm->ir_list)) {
986 avic_add_vcpu_to_gappi_wakeup_list(svm, svm->gappi_cpu);
987 is_vcpu_waiting = true;
988 }
989 }
990 }
991
992 ret = irq_set_vcpu_affinity(host_irq, &pi_data);
993 if (ret)
994 goto gappi_err_out;
995
996 /*
997 * Revert to legacy mode if the IOMMU didn't provide metadata
998 * for the IRTE, which KVM needs to keep the IRTE up-to-date,
999 * e.g. if the vCPU is migrated or AVIC is disabled.
1000 */
1001 if (WARN_ON_ONCE(!pi_data.ir_data)) {
1002 irq_set_vcpu_affinity(host_irq, NULL);
1003 ret = -EIO;
1004 goto gappi_err_out;
1005 }
1006
1007 irqfd->irq_bypass_data = pi_data.ir_data;
1008 list_add(&irqfd->vcpu_list, &svm->ir_list);
1009 return 0;
1010 gappi_err_out:
1011 if (is_vcpu_waiting)
1012 avic_remove_vcpu_from_gappi_wakeup_list(svm, svm->gappi_cpu);
1013 return ret;
1014 }
1015 return irq_set_vcpu_affinity(host_irq, NULL);
1016 }
1017
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-10 11:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-10 11:53 arch/x86/kvm/svm/avic.c:984:50: error: implicit declaration of function 'kvm_cpu_get_apicid'; did you mean 'kvm_cpu_get_extint'? kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.