Add a new sysfs subsystem, /sys/devices/system/hmem, which surfacesinformation about memory initiators and memory targets to the user. Theseinitiators and targets are described by the ACPI SRAT and HMAT tables.

A "memory initiator" in this case is any device such as a CPU or a separatememory I/O device that can initiate a memory request. A "memory target" isa CPU-accessible physical address range.

The key piece of information surfaced by this patch is the mapping betweenthe ACPI table "proximity domain" numbers, held in the "firmware_id"attribute, and Linux NUMA node numbers.

Initiators are found at /sys/devices/system/hmem/mem_initX, and theattributes for a given initiator look like this: