mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-23 07:58:36 -07:00
Commit [1] switched PCI hotplug from native to ACPI one by default. That however breaks hotplug on following CLI that used to work: -nodefaults -machine q35 \ -device pcie-root-port,id=pcie-root-port-0,multifunction=on,bus=pcie.0,addr=0x1,chassis=1 \ -device pcie-root-port,id=pcie-root-port-1,port=0x1,addr=0x1.0x1,bus=pcie.0,chassis=2 where PCI device is hotplugged to pcie-root-port-1 with error on guest side: ACPI BIOS Error (bug): Could not resolve symbol [^S0B.PCNT], AE_NOT_FOUND (20201113/psargs-330) ACPI Error: Aborting method \_SB.PCI0.PCNT due to previous error (AE_NOT_FOUND) (20201113/psparse-531) ACPI Error: Aborting method \_GPE._E01 due to previous error (AE_NOT_FOUND) (20201113/psparse-531) ACPI Error: AE_NOT_FOUND, while evaluating GPE method [_E01] (20201113/evgpe-515) cause is that QEMU's ACPI hotplug never supported functions other then 0 and due to bug it was generating notification entries for not described functions. Technically there is no reason not to describe cold-plugged bridges (root ports) on functions other then 0, as they similarly to bridge on function 0 are unpluggable. So since we need to describe multifunction devices iterate over fuctions as well. But describe only cold-plugged bridges[root ports] on functions other than 0 as well. 1) Fixes: |
||
|---|---|---|
| .. | ||
| kvm | ||
| xen | ||
| acpi-build.c | ||
| acpi-build.h | ||
| acpi-common.c | ||
| acpi-common.h | ||
| acpi-microvm.c | ||
| acpi-microvm.h | ||
| amd_iommu.c | ||
| amd_iommu.h | ||
| e820_memory_layout.c | ||
| e820_memory_layout.h | ||
| fw_cfg.c | ||
| fw_cfg.h | ||
| generic_event_device_x86.c | ||
| intel_iommu.c | ||
| intel_iommu_internal.h | ||
| Kconfig | ||
| kvmvapic.c | ||
| meson.build | ||
| microvm.c | ||
| multiboot.c | ||
| multiboot.h | ||
| pc.c | ||
| pc_piix.c | ||
| pc_q35.c | ||
| pc_sysfw.c | ||
| pc_sysfw_ovmf-stubs.c | ||
| pc_sysfw_ovmf.c | ||
| port92.c | ||
| trace-events | ||
| trace.h | ||
| vmmouse.c | ||
| vmport.c | ||
| x86-iommu-stub.c | ||
| x86-iommu.c | ||
| x86.c | ||