diff options
author | John Baldwin <jhb@FreeBSD.org> | 2019-04-09 21:18:02 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2019-04-09 21:18:02 +0000 |
commit | e9a00a5d174d6766019f8d66780e96f2e0b6cd25 (patch) | |
tree | 967a6bdd3f0e87cd45d9c57eb538653062633904 | |
parent | ae90941431ae016b4147eb5bffb5bd103da3d0f5 (diff) |
Notes
-rw-r--r-- | sys/dev/acpica/acpi_resource.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/dev/acpica/acpi_resource.c b/sys/dev/acpica/acpi_resource.c index fbbbec59622d2..3164db042ab78 100644 --- a/sys/dev/acpica/acpi_resource.c +++ b/sys/dev/acpica/acpi_resource.c @@ -202,6 +202,7 @@ struct acpi_resource_context { struct acpi_parse_resource_set *set; device_t dev; void *context; + bool ignore_producer_flag; }; #ifdef ACPI_DEBUG_OUTPUT @@ -385,7 +386,7 @@ acpi_parse_resource(ACPI_RESOURCE *res, void *context) } if (length <= 0) break; - if (res->Type == ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 && + if (!arc->ignore_producer_flag && res->Data.Address.ProducerConsumer != ACPI_CONSUMER) { ACPI_DEBUG_PRINT((ACPI_DB_RESOURCES, "ignored %s %s producer\n", name, @@ -474,6 +475,12 @@ acpi_parse_resources(device_t dev, ACPI_HANDLE handle, set->set_init(dev, arg, &arc.context); arc.set = set; arc.dev = dev; + arc.ignore_producer_flag = false; + + /* UARTs on ThunderX2 set ResourceProducer on memory resources. */ + if (acpi_MatchHid(handle, "ARMH0011") != ACPI_MATCHHID_NOMATCH) + arc.ignore_producer_flag = true; + status = AcpiWalkResources(handle, "_CRS", acpi_parse_resource, &arc); if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) { printf("can't fetch resources for %s - %s\n", |