How to access ACPI DMAR table?

Colin Xu 1 Reputation point
2021-03-29T03:04:03.463+00:00

The purpose is to investigate how to setup DMA remapping via r/w DMAR table in Hyper-V OFF mode.

There seems no way to access ACPI DMAR table directly via some DDI in kernel mode.

The user mode APIs to query similar information is to use EnumSystemFirmwareTables() and GetSystemFirmwareTable().
The kernel mode API may be using NtQuerySystemInformation() with an undocumented enum SystemFirmwareTableInformation. The common way is to send IOCTL_ACPI_xxx down to the stack, however those IOCTLs obviously can't meed the requirement.

So looks like the only way is to parse the SystemFirmwareTables locally according to ACPI spec and IOMMU/DMAR defines, and program as I wish? Any better way to archive the goal?

Windows Hardware Performance
Windows Hardware Performance
Windows: A family of Microsoft operating systems that run across personal computers, tablets, laptops, phones, internet of things devices, self-contained mixed reality headsets, large collaboration screens, and other devices.Hardware Performance: Delivering / providing hardware or hardware systems or adjusting / adapting hardware or hardware systems.
1,541 questions
{count} votes