From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Michael S. Tsirkin" <mst@redhat.com>, Ani Sinha <ani@anisinha.ca>
Subject: [PATCH 22/40] pcihp: do not put empty PCNT in DSDT
Date: Thu, 12 Jan 2023 15:02:54 +0100 [thread overview]
Message-ID: <20230112140312.3096331-23-imammedo@redhat.com> (raw)
In-Reply-To: <20230112140312.3096331-1-imammedo@redhat.com>
count number of PCNT methods that actually call Notify
and if there aren't any, drop PCNT altogether.
It mostly affects 'Q35' tests where there is no root-ports
/bridges attached and 'PC' machine when ACPI PCI hotplug is
completely disabled.
Expected ASL change:
- Method (PCNT, 0, NotSerialized)
- {
- }
...
Method (_E01, 0, NotSerialized) // _Exx: Edge-Triggered GPE
{
- Acquire (\_SB.PCI0.BLCK, 0xFFFF)
- \_SB.PCI0.PCNT ()
- Release (\_SB.PCI0.BLCK)
}
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
hw/i386/acpi-build.c | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 509a4c500d..9edd7bf38e 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -498,12 +498,13 @@ static void build_append_pci_bus_devices(Aml *parent_scope, PCIBus *bus,
qobject_unref(bsel);
}
-static void build_append_notfication_callback(Aml *parent_scope,
+static bool build_append_notfication_callback(Aml *parent_scope,
const PCIBus *bus)
{
Aml *method;
PCIBus *sec;
QObject *bsel;
+ int nr_notifiers = 0;
QLIST_FOREACH(sec, &bus->child, sibling) {
Aml *br_scope = aml_scope("S%.02X", sec->parent_dev->devfn);
@@ -511,7 +512,8 @@ static void build_append_notfication_callback(Aml *parent_scope,
!object_property_find(OBJECT(sec), ACPI_PCIHP_PROP_BSEL)) {
continue;
}
- build_append_notfication_callback(br_scope, sec);
+ nr_notifiers = nr_notifiers +
+ build_append_notfication_callback(br_scope, sec);
aml_append(parent_scope, br_scope);
}
@@ -532,6 +534,7 @@ static void build_append_notfication_callback(Aml *parent_scope,
aml_int(1))); /* Device Check */
aml_append(method, aml_call2("DVNT", aml_name("PCID"),
aml_int(3))); /* Eject Request */
+ nr_notifiers++;
}
/* Notify about child bus events in any case */
@@ -546,6 +549,7 @@ static void build_append_notfication_callback(Aml *parent_scope,
aml_append(parent_scope, method);
qobject_unref(bsel);
+ return !!nr_notifiers;
}
static Aml *aml_pci_pdsm(void)
@@ -1744,20 +1748,26 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
aml_append(dsdt, sb_scope);
if (pm->pcihp_bridge_en || pm->pcihp_root_en) {
+ bool has_pcnt;
+
Object *pci_host = acpi_get_i386_pci_host();
PCIBus *bus = PCI_HOST_BRIDGE(pci_host)->bus;
scope = aml_scope("\\_SB.PCI0");
- build_append_notfication_callback(scope, bus);
- aml_append(dsdt, scope);
+ has_pcnt = build_append_notfication_callback(scope, bus);
+ if (has_pcnt) {
+ aml_append(dsdt, scope);
+ }
scope = aml_scope("_GPE");
{
method = aml_method("_E01", 0, AML_NOTSERIALIZED);
- aml_append(method,
- aml_acquire(aml_name("\\_SB.PCI0.BLCK"), 0xFFFF));
- aml_append(method, aml_call0("\\_SB.PCI0.PCNT"));
- aml_append(method, aml_release(aml_name("\\_SB.PCI0.BLCK")));
+ if (has_pcnt) {
+ aml_append(method,
+ aml_acquire(aml_name("\\_SB.PCI0.BLCK"), 0xFFFF));
+ aml_append(method, aml_call0("\\_SB.PCI0.PCNT"));
+ aml_append(method, aml_release(aml_name("\\_SB.PCI0.BLCK")));
+ }
aml_append(scope, method);
}
aml_append(dsdt, scope);
--
2.31.1
next prev parent reply other threads:[~2023-01-12 14:51 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-12 14:02 [PATCH 00/40] x86: fixing and cleaning up ACPI PCI code part 3 Igor Mammedov
2023-01-12 14:02 ` [PATCH 01/40] tests: qtest: print device_add error before failing test Igor Mammedov
2023-01-12 14:02 ` [PATCH 02/40] tests: acpi: cleanup arguments to make them more readable Igor Mammedov
2023-01-12 14:02 ` [PATCH 03/40] tests: acpi: whitelist DSDT blobs for tests that use pci-bridges Igor Mammedov
2023-01-12 14:02 ` [PATCH 04/40] tests: acpi: extend pcihp with nested bridges Igor Mammedov
2023-01-12 14:02 ` [PATCH 05/40] tests: acpi: update expected blobs Igor Mammedov
2023-01-12 14:02 ` [PATCH 06/40] tests: acpi: cleanup use_uefi argument usage Igor Mammedov
2023-01-12 14:02 ` [PATCH 07/40] pci_bridge: remove whitespace Igor Mammedov
2023-01-12 14:02 ` [PATCH 08/40] x86: acpi: pcihp: clean up duplicate bridge_in_acpi assignment Igor Mammedov
2023-01-12 14:02 ` [PATCH 09/40] pci: acpi hotplug: rename x-native-hotplug to x-do-not-expose-native-hotplug-cap Igor Mammedov
2023-01-12 14:02 ` [PATCH 10/40] pcihp: piix4: do not call acpi_pcihp_reset() when ACPI PCI hotplug is disabled Igor Mammedov
2023-01-12 14:02 ` [PATCH 11/40] pci: acpihp: assign BSEL only to coldplugged bridges Igor Mammedov
2023-01-12 14:02 ` [PATCH 12/40] x86: pcihp: fix invalid AML PCNT calls to hotplugged bridges Igor Mammedov
2023-01-12 14:02 ` [PATCH 13/40] tests: boot_sector_test: avoid crashing if status is not available yet Igor Mammedov
2023-01-12 14:02 ` [PATCH 14/40] tests: acpi: extend bridge tests with hotplugged bridges Igor Mammedov
2023-01-12 14:02 ` [PATCH 15/40] tests: boot_sector_test(): make it multi-shot Igor Mammedov
2023-01-12 14:02 ` [PATCH 16/40] tests: acpi: add reboot cycle to bridge test Igor Mammedov
2023-01-12 14:02 ` [PATCH 17/40] tests: acpi: whitelist DSDT before refactoring acpi based PCI hotplug machinery Igor Mammedov
2023-01-12 14:02 ` [PATCH 18/40] pcihp: drop pcihp_bridge_en dependency when composing PCNT method Igor Mammedov
2023-01-12 14:02 ` [PATCH 19/40] tests: acpi: update expected blobs Igor Mammedov
2023-01-12 14:02 ` [PATCH 20/40] tests: acpi: whitelist DSDT before refactoring acpi based PCI hotplug machinery Igor Mammedov
2023-01-12 14:02 ` [PATCH 21/40] pcihp: compose PCNT callchain right before its user _GPE._E01 Igor Mammedov
2023-01-12 14:02 ` Igor Mammedov [this message]
2023-01-12 14:02 ` [PATCH 23/40] tests: acpi: update expected blobs Igor Mammedov
2023-01-12 14:02 ` [PATCH 24/40] whitelist DSDT before adding endpoint devices to bridge testcases Igor Mammedov
2023-01-12 14:02 ` [PATCH 25/40] tests: acpi: add endpoint devices to bridges Igor Mammedov
2023-01-12 14:02 ` [PATCH 26/40] tests: acpi: update expected blobs Igor Mammedov
2023-01-12 14:02 ` [PATCH 27/40] x86: pcihp: acpi: prepare slot ignore rule to work with self describing bridges Igor Mammedov
2023-01-12 14:03 ` [PATCH 28/40] pci: acpi: wire up AcpiDevAmlIf interface to generic bridge Igor Mammedov
2023-01-12 14:03 ` [PATCH 29/40] pcihp: make bridge describe itself using AcpiDevAmlIfClass:build_dev_aml Igor Mammedov
2023-01-12 14:03 ` [PATCH 30/40] pci: make sure pci_bus_is_express() won't error out with "discards ‘const’ qualifier" Igor Mammedov
2023-01-12 14:03 ` [PATCH 31/40] pcihp: isolate rule whether slot should be described in DSDT Igor Mammedov
2023-01-12 14:03 ` [PATCH 32/40] tests: acpi: whitelist DSDT before decoupling PCI hotplug code from basic slots description Igor Mammedov
2023-01-12 14:03 ` [PATCH 33/40] pcihp: acpi: decouple hotplug and generic " Igor Mammedov
2023-01-12 14:03 ` [PATCH 34/40] tests: acpi: update expected blobs Igor Mammedov
2023-01-12 14:03 ` [PATCH 35/40] tests: acpi: whitelist DSDT blobs before removing dynamic _DSM on coldplugged bridges Igor Mammedov
2023-01-12 14:03 ` [PATCH 36/40] pcihp: acpi: ignore coldplugged bridges when composing hotpluggable slots Igor Mammedov
2023-01-12 14:03 ` [PATCH 37/40] tests: acpi: update expected blobs Igor Mammedov
2023-01-12 14:03 ` [PATCH 38/40] tests: acpi: whitelist DSDT before moving non-hotpluggble slots description from hotplug path Igor Mammedov
2023-01-12 14:03 ` [PATCH 39/40] pcihp: generate populated non-hotpluggble slot descriptions on non-hotplug path Igor Mammedov
2023-01-12 14:03 ` [PATCH 40/40] tests: acpi: update expected blobs Igor Mammedov
2023-01-25 17:02 ` [PATCH 00/40] x86: fixing and cleaning up ACPI PCI code part 3 Igor Mammedov
2023-01-25 17:34 ` Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230112140312.3096331-23-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=ani@anisinha.ca \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).