Hi, This commit seems to be causing link errors, likely on all platforms where KVM is not available, but at minimum that's what I'm seeing when trying to build the staging branch on macOS.
ld: Undefined symbols: _kvm_enable_x2apic, referenced from: _amdvi_sysbus_realize in hw_i386_amd_iommu.c.o clang: error: linker command failed with exit code 1 (use -v to see invocation) On Mon, 4 Nov 2024 at 22:10, Michael S. Tsirkin <m...@redhat.com> wrote: > > From: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> > > The XTSup mode enables x2APIC support for AMD IOMMU, which is needed > to support vcpu w/ APIC ID > 255. > > Reviewed-by: Alejandro Jimenez <alejandro.j.jime...@oracle.com> > Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com> > Signed-off-by: Santosh Shukla <santosh.shu...@amd.com> > Message-Id: <20240927172913.121477-6-santosh.shu...@amd.com> > Reviewed-by: Michael S. Tsirkin <m...@redhat.com> > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > --- > hw/i386/amd_iommu.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c > index 38297376e7..13af7211e1 100644 > --- a/hw/i386/amd_iommu.c > +++ b/hw/i386/amd_iommu.c > @@ -32,6 +32,7 @@ > #include "trace.h" > #include "hw/i386/apic-msidef.h" > #include "hw/qdev-properties.h" > +#include "kvm/kvm_i386.h" > > /* used AMD-Vi MMIO registers */ > const char *amdvi_mmio_low[] = { > @@ -1651,6 +1652,16 @@ static void amdvi_sysbus_realize(DeviceState *dev, > Error **errp) > memory_region_add_subregion_overlap(&s->mr_sys, AMDVI_INT_ADDR_FIRST, > &s->mr_ir, 1); > > + /* AMD IOMMU with x2APIC mode requires xtsup=on */ > + if (x86ms->apic_id_limit > 255 && !s->xtsup) { > + error_report("AMD IOMMU with x2APIC confguration requires xtsup=on"); > + exit(EXIT_FAILURE); > + } > + if (s->xtsup && kvm_irqchip_is_split() && !kvm_enable_x2apic()) { > + error_report("AMD IOMMU xtsup=on requires support on the KVM side"); > + exit(EXIT_FAILURE); > + } I suspect this last if() { … } block should be wrapped in an #ifdef CONFIG_KVM block? I don't know anything about this code though, so if this whole code path is generally a KVM-only feature, perhaps the KVM check should be implemented at the build system dependency level? > + > pci_setup_iommu(bus, &amdvi_iommu_ops, s); > amdvi_init(s); > } > -- > MST > Thanks, Phil