Hi Michael,

On 8/1/25 2:29 PM, Michael S. Tsirkin wrote:
> On Mon, Jul 28, 2025 at 04:56:37PM +0200, Eric Auger wrote:
>> Hi Michael,
>>
>> On 7/28/25 11:07 AM, Michael Tokarev wrote:
>>> On 27.07.2025 14:48, Michael Tokarev wrote:
>>>> On 14.07.2025 11:04, Eric Auger wrote:
>>>>> gpex build_host_bridge_osc() and x86 originated
>>>>> build_pci_host_bridge_osc_method() are mostly identical.
>>>>>
>>>>> In GPEX, SUPP is set to CDW2 but is not further used. CTRL is
>>>>> same as Local0.
>>>>>
>>>>> So let gpex code reuse build_pci_host_bridge_osc_method() and remove
>>>>> build_host_bridge_osc().
>>>>>
>>>>> Also add an imply ACPI_PCI clause along with
>>>>> PCI_EXPRESS_GENERIC_BRIDGE to compile hw/acpi/pci.c when its
>>>>> dependency is resolved (ie. CONFIG_ACPI_PCI). This is requested
>>>>> to link qemu-system-mips64el.
>>>> This patch somehow broke microvm-only build which is used by debian.
>>>>
>>>> configure options used (trimmed a bit):
>>>>
>>>> ../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
>>>>
>>>> configs/devices/x86_64-softmmu/microvm.mak: ---- cut ---- # see
>>>> configs/devices/i386-softmmu/default.mak # for additional devices
>>>> which can be disabled # 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 ---- cut ----
>>>>
>>>> The result: 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
>>> In hw/i386/Kconfig, MICROVM selects ACPI_HW_REDUCED (not ACPI or
>>> ACPI_PCI), *and* PCI_EXPRESS_GENERIC_BRIDGE.  But in hw/pci/meson.build,
>>> pci.c (where the function in question is defined) is built when
>>> ACPI_PCI is enabled.  Something's not right here.
>> This commit added an imply ACPI_PCI to the PCI_EXPRESS_GENERIC_BRIDGE
>> config in hw/pci-host/Kconfig:
>>
>> config PCI_EXPRESS_GENERIC_BRIDGE
>>     bool
>>     select PCI_EXPRESS  -> selects PCI
>>     imply ACPI_PCI
>>
>> In hw/acpi/Kconfig we have:
>>
>> config ACPI_PCI
>>     bool
>>     depends on ACPI && PCI
>>
>> ACPI is selected by ACPI_HW_REDUCED
>>
>> config ACPI_HW_REDUCED
>>     bool
>>     select ACPI
>>     select ACPI_MEMORY_HOTPLUG
>>     select ACPI_NVDIMM
>>
>> so logically the ACPI && PCI dependencies for ACPI_PCI should be
>> resolved. What do I miss?
>> regards
>>
>> Eric
>>
>
> Not sure I get what are you proposing?
I have not proposed anything ;-) - sorry I am on vacation - I was trying
to enumerate the various config settings and to me dependencies should
be resolved so I fail to understand. Unfortunately I cannot test because
the problem happens with a custom microvm.mak. I would need this latter
to reproduce and try to fix.

if the microvm.mak selects PCI_EXPRESS_GENERIC_BRIDGE (which selects
PCI_EXPRESS which itself selects PCI) and ACPI_HW_REDUCED (which selects
ACPI), the imply ACPI_PCI should end up as a selection because PCI and
ACPI are resolved. At least that's my understanding. Reading it again,
please can you check whether ACPI_HW_REDUCED is selected *before*
PCI_EXPRESS_GENERIC_BRIDGE in the custom microvm.mak. Depending on the
order of dependency resolution it might make a difference. Otherwise
please can you send the full microvm.mak and configure command so that I
can try reproducing. Thanks Eric
>
>>
>>
>>
>>
>>
>>
>>> Addig kraxel for 24db877ab6e6 "microvm: add pcie support".
>>>
>>> Thanks
>>>
>>> /mjt
>>>


Reply via email to