Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F74547496
Command-Line Input
No One
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Authored By
jhb
Jan 9 2024, 6:04 PM
2024-01-09 18:04:41 (UTC+0)
Size
1 KB
Referenced Files
None
Subscribers
None
Command-Line Input
View Options
diff --git a/sys/dev/acpica/acpi_apei.c b/sys/dev/acpica/acpi_apei.c
index 6a3d9d10edd4..0514efb303c7 100644
--- a/sys/dev/acpica/acpi_apei.c
+++ b/sys/dev/acpica/acpi_apei.c
@@ -665,6 +665,7 @@ apei_attach(device_t dev)
struct acpi_softc *acpi_sc;
struct apei_pges *pges;
struct apei_ge *ge;
+ struct resource *ack;
ACPI_STATUS status;
int rid;
@@ -698,6 +699,7 @@ apei_attach(device_t dev)
AcpiPutTable((ACPI_TABLE_HEADER *)sc->hest);
rid = 0;
+ ack = NULL;
TAILQ_FOREACH(ge, &sc->ges, link) {
ge->res_rid = rid++;
acpi_bus_alloc_gas(dev, &ge->res_type, &ge->res_rid,
@@ -709,11 +711,16 @@ apei_attach(device_t dev)
device_printf(dev, "Can't allocate status resource.\n");
}
if (ge->v1.Header.Type == ACPI_HEST_TYPE_GENERIC_ERROR_V2) {
- ge->res2_rid = rid++;
- acpi_bus_alloc_gas(dev, &ge->res2_type, &ge->res2_rid,
- &ge->v2.ReadAckRegister, &ge->res2, 0);
- if (ge->res2 == NULL)
- device_printf(dev, "Can't allocate ack resource.\n");
+ if (ack != NULL && rman_get_start(ack) ==
+ ge->v2.ReadAckRegister.Address)
+ ge->res2 = ack;
+ else {
+ ge->res2_rid = rid++;
+ acpi_bus_alloc_gas(dev, &ge->res2_type, &ge->res2_rid,
+ &ge->v2.ReadAckRegister, &ge->res2, 0);
+ if (ge->res2 == NULL)
+ device_printf(dev, "Can't allocate ack resource.\n");
+ }
}
if (ge->v1.Notify.Type == ACPI_HEST_NOTIFY_POLLED) {
pges = &sc->pges[PGE_ID(ge)];
File Metadata
Details
Attached
Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
7316164
Default Alt Text
Command-Line Input (1 KB)
Attached To
Mode
P619 Command-Line Input
Attached
Detach File
Event Timeline
Log In to Comment