hw/i386/acpi-build: Fix maybe-uninitialized error when ACPI hotplug off
GCC 9.3.0 thinks that 'method' can be left uninitialized. This code is already in the "if (bsel || pcihp_bridge_en)" block statement, but it isn't smart enough to figure it out. Restrict the code to be used only in the "if (bsel || pcihp_bridge_en)" block statement to fix (on Ubuntu): ../hw/i386/acpi-build.c: In function 'build_append_pci_bus_devices': ../hw/i386/acpi-build.c:496:9: error: 'method' may be used uninitialized in this function [-Werror=maybe-uninitialized] 496 | aml_append(parent_scope, method); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors Fixes: df4008c9c59 ("piix4: don't reserve hw resources when hotplug is off globally") Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20201107194045.438027-1-philmd@redhat.com> Acked-by: Ani Sinha <ani@anisinha.ca> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
d88618f717
commit
727a06326c
@ -465,34 +465,31 @@ static void build_append_pci_bus_devices(Aml *parent_scope, PCIBus *bus,
|
||||
*/
|
||||
if (bsel || pcihp_bridge_en) {
|
||||
method = aml_method("PCNT", 0, AML_NOTSERIALIZED);
|
||||
}
|
||||
/* If bus supports hotplug select it and notify about local events */
|
||||
if (bsel) {
|
||||
uint64_t bsel_val = qnum_get_uint(qobject_to(QNum, bsel));
|
||||
|
||||
aml_append(method, aml_store(aml_int(bsel_val), aml_name("BNUM")));
|
||||
aml_append(method,
|
||||
aml_call2("DVNT", aml_name("PCIU"), aml_int(1) /* Device Check */)
|
||||
);
|
||||
aml_append(method,
|
||||
aml_call2("DVNT", aml_name("PCID"), aml_int(3)/* Eject Request */)
|
||||
);
|
||||
}
|
||||
/* If bus supports hotplug select it and notify about local events */
|
||||
if (bsel) {
|
||||
uint64_t bsel_val = qnum_get_uint(qobject_to(QNum, bsel));
|
||||
|
||||
/* Notify about child bus events in any case */
|
||||
if (pcihp_bridge_en) {
|
||||
QLIST_FOREACH(sec, &bus->child, sibling) {
|
||||
int32_t devfn = sec->parent_dev->devfn;
|
||||
|
||||
if (pci_bus_is_root(sec) || pci_bus_is_express(sec)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
aml_append(method, aml_name("^S%.02X.PCNT", devfn));
|
||||
aml_append(method, aml_store(aml_int(bsel_val), aml_name("BNUM")));
|
||||
aml_append(method, aml_call2("DVNT", aml_name("PCIU"),
|
||||
aml_int(1))); /* Device Check */
|
||||
aml_append(method, aml_call2("DVNT", aml_name("PCID"),
|
||||
aml_int(3))); /* Eject Request */
|
||||
}
|
||||
|
||||
/* Notify about child bus events in any case */
|
||||
if (pcihp_bridge_en) {
|
||||
QLIST_FOREACH(sec, &bus->child, sibling) {
|
||||
int32_t devfn = sec->parent_dev->devfn;
|
||||
|
||||
if (pci_bus_is_root(sec) || pci_bus_is_express(sec)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
aml_append(method, aml_name("^S%.02X.PCNT", devfn));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bsel || pcihp_bridge_en) {
|
||||
aml_append(parent_scope, method);
|
||||
}
|
||||
qobject_unref(bsel);
|
||||
|
Loading…
x
Reference in New Issue
Block a user