git: a60c5de933e1 - stable/13 - acpi: limit the AMDI0020/AMDI0010 workaround to an option

Warner Losh imp at FreeBSD.org
Thu Feb 11 05:14:35 UTC 2021


The branch stable/13 has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=a60c5de933e1516f65ead98b0ee141224ad607f4

commit a60c5de933e1516f65ead98b0ee141224ad607f4
Author:     Warner Losh <imp at FreeBSD.org>
AuthorDate: 2021-02-08 21:43:25 +0000
Commit:     Warner Losh <imp at FreeBSD.org>
CommitDate: 2021-02-11 05:13:04 +0000

    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
    
    (cherry picked from commit 35af933173d516101f4c44af328fbe2d6e587869)
---
 sys/conf/options      | 1 +
 sys/dev/acpica/acpi.c | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/sys/conf/options b/sys/conf/options
index 77979b72fe58..2f324143c574 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -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
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
index 04c8c1b27625..18623a6ab240 100644
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -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);
 


More information about the dev-commits-src-all mailing list