aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Percival <cperciva@FreeBSD.org>2024-10-22 14:47:30 +0000
committerColin Percival <cperciva@FreeBSD.org>2024-11-03 16:15:22 +0000
commit28b881840df7cbf9c01ddec86f45a080619efaa7 (patch)
tree96cab3b71ede1f73be2cb3203c150ee1f9a7cd1b
parent98ed0edd1a267824e3465360cb222d77743528ed (diff)
ACPI: Add ACPI_Q_AEI_NOPULL quirk and use in EC2
AWS Graviton [1234] systems have a bug in their ACPI where they mark the PL061's GPIO pins as needing to be configured in PullUp mode (in fact the PL061 has no pullup/pulldown resistors); this flag needs to be removed in order for _AEI objects to be handled on these systems. Reviewed by: Ali Saidi Approved by: re (kib) MFC after: 1 week Sponsored by: Amazon Differential Revision: https://reviews.freebsd.org/D47239 (cherry picked from commit 2f3f867ac6dd7ff3769366b828b79c44b38828e1) (cherry picked from commit 5fa51c3653b14b364e26a4cce2733c7be6ee7721)
-rw-r--r--release/tools/ec2.conf5
-rw-r--r--sys/dev/acpica/acpivar.h3
2 files changed, 8 insertions, 0 deletions
diff --git a/release/tools/ec2.conf b/release/tools/ec2.conf
index 522aaa400520..963c6ff4957b 100644
--- a/release/tools/ec2.conf
+++ b/release/tools/ec2.conf
@@ -63,6 +63,11 @@ ec2_common() {
# nodes, but apply the workaround just in case.
echo 'hw.broken_txfifo="1"' >> ${DESTDIR}/boot/loader.conf
+ # Graviton 1 through Graviton 4 have a bug in their ACPI where they
+ # mark the PL061's pins as needing to be configured in PullUp mode
+ # (in fact the PL061 has no pullup/pulldown resistors).
+ echo 'debug.acpi.quirks="8"' >> ${DESTDIR}/boot/loader.conf
+
# Load the kernel module for the Amazon "Elastic Network Adapter"
echo 'if_ena_load="YES"' >> ${DESTDIR}/boot/loader.conf
diff --git a/sys/dev/acpica/acpivar.h b/sys/dev/acpica/acpivar.h
index afb0a6909e1a..eb6022cde159 100644
--- a/sys/dev/acpica/acpivar.h
+++ b/sys/dev/acpica/acpivar.h
@@ -224,12 +224,15 @@ extern struct mtx acpi_mutex;
* ACPI_Q_MADT_IRQ0: Specifies that ISA IRQ 0 is wired up to pin 0 of the
* first APIC and that the MADT should force that by ignoring the PC-AT
* compatible flag and ignoring overrides that redirect IRQ 0 to pin 2.
+ * ACPI_Q_AEI_NOPULL: Specifies that _AEI objects incorrectly designate pins
+ * as "PullUp" and they should be treated as "NoPull" instead.
*/
extern int acpi_quirks;
#define ACPI_Q_OK 0
#define ACPI_Q_BROKEN (1 << 0)
#define ACPI_Q_TIMER (1 << 1)
#define ACPI_Q_MADT_IRQ0 (1 << 2)
+#define ACPI_Q_AEI_NOPULL (1 << 3)
#if defined(__amd64__) || defined(__i386__)
/*