On Thu, 13 May 2021 08:26:41 +0200 Julia Suvorova <jus...@redhat.com> wrote:
> Q35 has three different types of PCI devices hot-plug: PCIe Native, > SHPC Native and ACPI hot-plug. This patch changes the default choice > for cold-plugged bridges from PCIe Native to ACPI Hot-plug with > ability to use SHPC and PCIe Native for hot-plugged bridges. > > This is a list of the PCIe Native hot-plug issues that led to this > change: > * no racy behavior during boot (see 110c477c2ed) > * no delay during deleting - after the actual power off software > must wait at least 1 second before indicating about it. This case > is quite important for users, it even has its own bug: > https://bugzilla.redhat.com/show_bug.cgi?id=1594168 > * no timer-based behavior - in addition to the previous example, > the attention button has a 5-second waiting period, during which > the operation can be canceled with a second press. While this > looks fine for manual button control, automation will result in > the need to queue or drop events, and the software receiving > events in all sort of unspecified combinations of attention/power > indicator states, which is racy and uppredictable. > * fixes or reduces the likelihood of the bug: > * https://bugzilla.redhat.com/show_bug.cgi?id=1833187 > * https://bugzilla.redhat.com/show_bug.cgi?id=1657077 > * https://bugzilla.redhat.com/show_bug.cgi?id=1669931 > * https://bugzilla.redhat.com/show_bug.cgi?id=1678290 > > To return to PCIe Native hot-plug: > -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off > > Signed-off-by: Julia Suvorova <jus...@redhat.com> Reviewed-by: Igor Mammedov <imamm...@redhat.com> > --- > hw/acpi/ich9.c | 2 +- > hw/i386/pc.c | 4 +++- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c > index f6819c4f2a..e7b2cd9719 100644 > --- a/hw/acpi/ich9.c > +++ b/hw/acpi/ich9.c > @@ -425,7 +425,7 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs > *pm) > pm->disable_s3 = 0; > pm->disable_s4 = 0; > pm->s4_val = 2; > - pm->use_acpi_hotplug_bridge = false; > + pm->use_acpi_hotplug_bridge = true; > > object_property_add_uint32_ptr(obj, ACPI_PM_PROP_PM_IO_BASE, > &pm->pm_io_base, OBJ_PROP_FLAG_READ); > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index 8cfaf216e7..5c2d3d11a2 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -94,7 +94,9 @@ > #include "trace.h" > #include CONFIG_DEVICES > > -GlobalProperty pc_compat_6_0[] = {}; > +GlobalProperty pc_compat_6_0[] = { > + { "ICH9-LPC", "acpi-pci-hotplug-with-bridge-support", "off" }, > +}; > const size_t pc_compat_6_0_len = G_N_ELEMENTS(pc_compat_6_0); > > GlobalProperty pc_compat_5_2[] = {