acpi: limit the AMDI0020/AMDI0010 workaround to an option

It appears that production versions of EPYC firmware get the _STA method right
for these nodes. In fact, this workaround breaks on production hardware by
including too many uart nodes. This work around was for pre-release hardware
that wound up not having a large deployment. Move this work around to a kernel
option since the machines that needed it have been powered off and are difficult
to resurrect. Should there be a more significant deployment than is understood,
we can restrict it based on smbios strings.

Discussed with: mmacy@, seanc@, jhb@
MFC After: 3 days
This commit is contained in:
Warner Losh 2021-02-08 14:43:25 -07:00
parent adc4ea97bd
commit 35af933173
2 changed files with 4 additions and 0 deletions

View File

@ -705,6 +705,7 @@ ACPI_DEBUG opt_acpi.h
ACPI_MAX_TASKS opt_acpi.h
ACPI_MAX_THREADS opt_acpi.h
DEV_ACPI opt_acpi.h
ACPI_EARLY_EPYC_WAR opt_acpi.h
# options for IOMMU support
IOMMU opt_iommu.h

View File

@ -2273,6 +2273,8 @@ acpi_DeviceIsPresent(device_t dev)
h = acpi_get_handle(dev);
if (h == NULL)
return (FALSE);
#ifdef ACPI_EARLY_EPYC_WAR
/*
* Certain Treadripper boards always returns 0 for FreeBSD because it
* only returns non-zero for the OS string "Windows 2015". Otherwise it
@ -2281,6 +2283,7 @@ acpi_DeviceIsPresent(device_t dev)
*/
if (acpi_MatchHid(h, "AMDI0020") || acpi_MatchHid(h, "AMDI0010"))
return (TRUE);
#endif
status = acpi_GetInteger(h, "_STA", &s);