aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2021-01-25 21:08:06 +0000
committerAlexander Motin <mav@FreeBSD.org>2021-01-25 21:08:06 +0000
commit1b109c69ed625ebf292c1d16f7a3efcab96722e5 (patch)
tree888aef7d3760d9ffb57476ebebbe95978bedf2ff
parentdcd1e41f0cbcb8f7ec5f7a891a690be959bc1ea8 (diff)
downloadsrc-1b109c69ed625ebf292c1d16f7a3efcab96722e5.tar.gz
src-1b109c69ed625ebf292c1d16f7a3efcab96722e5.zip
Decode NFIT Platform Capabilities.
MFC after: 1 week
-rw-r--r--usr.sbin/acpi/acpidump/acpi.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/usr.sbin/acpi/acpidump/acpi.c b/usr.sbin/acpi/acpidump/acpi.c
index 27fe1de0a219..c573c02b7f92 100644
--- a/usr.sbin/acpi/acpidump/acpi.c
+++ b/usr.sbin/acpi/acpidump/acpi.c
@@ -1562,7 +1562,8 @@ static const char *nfit_types[] = {
[ACPI_NFIT_TYPE_SMBIOS] = "SMBIOS",
[ACPI_NFIT_TYPE_CONTROL_REGION] = "Control Region",
[ACPI_NFIT_TYPE_DATA_REGION] = "Data Region",
- [ACPI_NFIT_TYPE_FLUSH_ADDRESS] = "Flush Address"
+ [ACPI_NFIT_TYPE_FLUSH_ADDRESS] = "Flush Address",
+ [ACPI_NFIT_TYPE_CAPABILITIES] = "Platform Capabilities"
};
@@ -1579,6 +1580,7 @@ acpi_print_nfit(ACPI_NFIT_HEADER *nfit)
ACPI_NFIT_CONTROL_REGION *ctlreg;
ACPI_NFIT_DATA_REGION *datareg;
ACPI_NFIT_FLUSH_ADDRESS *fladdr;
+ ACPI_NFIT_CAPABILITIES *caps;
if (nfit->Type < nitems(nfit_types))
printf("\tType=%s\n", nfit_types[nfit->Type]);
@@ -1709,6 +1711,20 @@ acpi_print_nfit(ACPI_NFIT_HEADER *nfit)
printf("\tHintCount=%u\n", (u_int)fladdr->HintCount);
/* XXX fladdr->HintAddress[i] output is not supported */
break;
+ case ACPI_NFIT_TYPE_CAPABILITIES:
+ caps = (ACPI_NFIT_CAPABILITIES *)nfit;
+ printf("\tHighestCapability=%u\n", (u_int)caps->HighestCapability);
+
+#define PRINTFLAG(var, flag) printflag((var), ACPI_NFIT_CAPABILITY_## flag, #flag)
+
+ printf("\tCapabilities=");
+ PRINTFLAG(caps->Capabilities, CACHE_FLUSH);
+ PRINTFLAG(caps->Capabilities, MEM_FLUSH);
+ PRINTFLAG(caps->Capabilities, MEM_MIRRORING);
+ PRINTFLAG_END();
+
+#undef PRINTFLAG
+ break;
}
}