hw/i386/Kconfig | 1 + 1 file changed, 1 insertion(+)
With a microvm-only build based on a custom device config,
we get a link failure due to undefined reference to
build_pci_host_bridge_osc_method() which is defined in hw/acpi/pci.c and
whose compilation depends on CONFIG_ACPI_PCI. Although CONFIG_ACPI
and CONFIG_PCI are set with such configuration, implied CONFIG_ACPI_PCI
in config PCI_EXPRESS_GENERIC_BRIDGE is not selected as expected.
It Looks like CONFIG_ACPI_PCI must be enforced and this patch selects
CONFIG_ACPI_PCI in MICROVM config directly as done for PC config.
Reproducer:
../configure \
--without-default-features \
--target-list=x86_64-softmmu \
--enable-kvm --disable-tcg \
--enable-pixman \
--enable-vnc \
--audio-drv-list="" \
--without-default-devices \
--with-devices-x86_64=microvm \
--enable-vhost-user
with configs/devices/x86_64-softmmu/microvm.mak:
CONFIG_PCI_DEVICES=n
CONFIG_MICROVM=y
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_SERIAL=y
CONFIG_VIRTIO_INPUT=y
CONFIG_VIRTIO_INPUT_HOST=y
CONFIG_VHOST_USER_INPUT=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_SCSI=y
CONFIG_VIRTIO_RNG=y
CONFIG_VIRTIO_CRYPTO=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_VIRTIO_GPU=y
CONFIG_VHOST_USER_GPU=y
FAILED: qemu-system-x86_64
cc -m64 @qemu-system-x86_64.rsp
/usr/bin/ld: libsystem.a.p/hw_pci-host_gpex-acpi.c.o: in function `acpi_dsdt_add_host_bridge_methods':
hw/pci-host/gpex-acpi.c:83:(.text+0x274): undefined reference to `build_pci_host_bridge_osc_method'
collect2: error: ld returned 1 exit status
Fixes: af151d50eac24 "hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method"
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reported-by: Michael Tokarev <mjt@tls.msk.ru>
---
hw/i386/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig
index 5139d23087..3a0e2b8ebb 100644
--- a/hw/i386/Kconfig
+++ b/hw/i386/Kconfig
@@ -131,6 +131,7 @@ config MICROVM
select I8259
select MC146818RTC
select VIRTIO_MMIO
+ select ACPI_PCI
select ACPI_HW_REDUCED
select PCI_EXPRESS_GENERIC_BRIDGE
select USB_XHCI_SYSBUS
--
2.49.0
On 4/8/25 17:20, Eric Auger wrote: > With a microvm-only build based on a custom device config, > we get a link failure due to undefined reference to > build_pci_host_bridge_osc_method() which is defined in hw/acpi/pci.c and > whose compilation depends on CONFIG_ACPI_PCI. Although CONFIG_ACPI > and CONFIG_PCI are set with such configuration, implied CONFIG_ACPI_PCI > in config PCI_EXPRESS_GENERIC_BRIDGE is not selected as expected. > > It Looks like CONFIG_ACPI_PCI must be enforced and this patch selects > CONFIG_ACPI_PCI in MICROVM config directly as done for PC config. > > Reproducer: > > ../configure \ > --without-default-features \ > --target-list=x86_64-softmmu \ > --enable-kvm --disable-tcg \ > --enable-pixman \ > --enable-vnc \ > --audio-drv-list="" \ > --without-default-devices \ > --with-devices-x86_64=microvm \ > --enable-vhost-user > > with configs/devices/x86_64-softmmu/microvm.mak: > CONFIG_PCI_DEVICES=n > > CONFIG_MICROVM=y > > CONFIG_VIRTIO_BLK=y > CONFIG_VIRTIO_SERIAL=y > CONFIG_VIRTIO_INPUT=y > CONFIG_VIRTIO_INPUT_HOST=y > CONFIG_VHOST_USER_INPUT=y > CONFIG_VIRTIO_NET=y > CONFIG_VIRTIO_SCSI=y > CONFIG_VIRTIO_RNG=y > CONFIG_VIRTIO_CRYPTO=y > CONFIG_VIRTIO_BALLOON=y > CONFIG_VIRTIO_GPU=y > CONFIG_VHOST_USER_GPU=y > > FAILED: qemu-system-x86_64 > cc -m64 @qemu-system-x86_64.rsp > /usr/bin/ld: libsystem.a.p/hw_pci-host_gpex-acpi.c.o: in function `acpi_dsdt_add_host_bridge_methods': > hw/pci-host/gpex-acpi.c:83:(.text+0x274): undefined reference to `build_pci_host_bridge_osc_method' > collect2: error: ld returned 1 exit status > > Fixes: af151d50eac24 "hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method" > Signed-off-by: Eric Auger <eric.auger@redhat.com> > Reported-by: Michael Tokarev <mjt@tls.msk.ru> > --- > hw/i386/Kconfig | 1 + > 1 file changed, 1 insertion(+) Patch queued, thanks.
On 04.08.2025 18:20, Eric Auger wrote: > With a microvm-only build based on a custom device config, > we get a link failure due to undefined reference to > build_pci_host_bridge_osc_method() which is defined in hw/acpi/pci.c and > whose compilation depends on CONFIG_ACPI_PCI. Although CONFIG_ACPI > and CONFIG_PCI are set with such configuration, implied CONFIG_ACPI_PCI > in config PCI_EXPRESS_GENERIC_BRIDGE is not selected as expected. > > It Looks like CONFIG_ACPI_PCI must be enforced and this patch selects > CONFIG_ACPI_PCI in MICROVM config directly as done for PC config. > > Reproducer: > > ../configure \ > --without-default-features \ > --target-list=x86_64-softmmu \ > --enable-kvm --disable-tcg \ > --enable-pixman \ > --enable-vnc \ > --audio-drv-list="" \ > --without-default-devices \ > --with-devices-x86_64=microvm \ > --enable-vhost-user > > with configs/devices/x86_64-softmmu/microvm.mak: > CONFIG_PCI_DEVICES=n > > CONFIG_MICROVM=y > > CONFIG_VIRTIO_BLK=y > CONFIG_VIRTIO_SERIAL=y > CONFIG_VIRTIO_INPUT=y > CONFIG_VIRTIO_INPUT_HOST=y > CONFIG_VHOST_USER_INPUT=y > CONFIG_VIRTIO_NET=y > CONFIG_VIRTIO_SCSI=y > CONFIG_VIRTIO_RNG=y > CONFIG_VIRTIO_CRYPTO=y > CONFIG_VIRTIO_BALLOON=y > CONFIG_VIRTIO_GPU=y > CONFIG_VHOST_USER_GPU=y > > FAILED: qemu-system-x86_64 > cc -m64 @qemu-system-x86_64.rsp > /usr/bin/ld: libsystem.a.p/hw_pci-host_gpex-acpi.c.o: in function `acpi_dsdt_add_host_bridge_methods': > hw/pci-host/gpex-acpi.c:83:(.text+0x274): undefined reference to `build_pci_host_bridge_osc_method' > collect2: error: ld returned 1 exit status > > Fixes: af151d50eac24 "hw/pci-host/gpex-acpi: Use build_pci_host_bridge_osc_method" > Signed-off-by: Eric Auger <eric.auger@redhat.com> > Reported-by: Michael Tokarev <mjt@tls.msk.ru> This seems to be a better fix than I proposed. Reviewed-by: Michael Tokarev <mjt@tls.msk.ru> Thanks, /mjt > --- > hw/i386/Kconfig | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig > index 5139d23087..3a0e2b8ebb 100644 > --- a/hw/i386/Kconfig > +++ b/hw/i386/Kconfig > @@ -131,6 +131,7 @@ config MICROVM > select I8259 > select MC146818RTC > select VIRTIO_MMIO > + select ACPI_PCI > select ACPI_HW_REDUCED > select PCI_EXPRESS_GENERIC_BRIDGE > select USB_XHCI_SYSBUS
© 2016 - 2026 Red Hat, Inc.