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: df4008c9c5
("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…
Reference in New Issue
Block a user