The branch stable/12 has been updated by imp:

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

commit a7c68340584c942792188ad50593d4ef15cc8982
Author:     Warner Losh <i...@freebsd.org>
AuthorDate: 2021-02-08 21:43:25 +0000
Commit:     Warner Losh <i...@freebsd.org>
CommitDate: 2021-02-11 05:15:08 +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 0644fb6e597e..561e2574b964 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -730,6 +730,7 @@ ACPI_MAX_TASKS              opt_acpi.h
 ACPI_MAX_THREADS       opt_acpi.h
 ACPI_DMAR              opt_acpi.h
 DEV_ACPI               opt_acpi.h
+ACPI_EARLY_EPYC_WAR    opt_acpi.h
 
 # ISA support
 DEV_ISA                        opt_isa.h
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
index 6d7ed154c463..bcccd23c8c58 100644
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -2254,6 +2254,8 @@ acpi_DeviceIsPresent(device_t dev)
        h = acpi_get_handle(dev);
        if (h == NULL)
                return (FALSE);
+
+#ifdef ACPI_EARLY_EPYC_WAR
        /*
         * Onboard serial ports on certain AMD motherboards have an invalid _STA
         * method that always returns 0.  Force them to always be treated as 
present.
@@ -2262,6 +2264,7 @@ acpi_DeviceIsPresent(device_t dev)
         */
        if (acpi_MatchHid(h, "AMDI0020") || acpi_MatchHid(h, "AMDI0010"))
                return (TRUE);
+#endif
 
        status = acpi_GetInteger(h, "_STA", &s);
 
_______________________________________________
dev-commits-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-all
To unsubscribe, send any mail to "dev-commits-src-all-unsubscr...@freebsd.org"

Reply via email to