xemu/hw/acpi
Vishal Verma c3b0cf6e7d hw/acpi/nvdimm: add a helper to augment SRAT generation
NVDIMMs can belong to their own proximity domains, as described by the
NFIT. In such cases, the SRAT needs to have Memory Affinity structures
in the SRAT for these NVDIMMs, otherwise Linux doesn't populate node
data structures properly during NUMA initialization. See the following
for an example failure case.

https://lore.kernel.org/linux-nvdimm/20200416225438.15208-1-vishal.l.verma@intel.com/

Introduce a new helper, nvdimm_build_srat(), and call it for both the
i386 and arm versions of 'build_srat()' to augment the SRAT with
memory affinity information for NVDIMMs.

The relevant command line options to exercise this are below. Nodes 0-1
contain CPUs and regular memory, and nodes 2-3 are the NVDIMM address
space.

    -object memory-backend-ram,id=mem0,size=2048M
    -numa node,nodeid=0,memdev=mem0,
    -numa cpu,node-id=0,socket-id=0
    -object memory-backend-ram,id=mem1,size=2048M
    -numa node,nodeid=1,memdev=mem1,
    -numa cpu,node-id=1,socket-id=1
    -numa node,nodeid=2,
    -object memory-backend-file,id=nvmem0,share,mem-path=nvdimm-0,size=16384M,align=1G
    -device nvdimm,memdev=nvmem0,id=nv0,label-size=2M,node=2
    -numa node,nodeid=3,
    -object memory-backend-file,id=nvmem1,share,mem-path=nvdimm-1,size=16384M,align=1G
    -device nvdimm,memdev=nvmem1,id=nv1,label-size=2M,node=3

Cc: Jingqi Liu <jingqi.liu@intel.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Jingqi Liu <jingqi.liu@intel.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
Message-Id: <20200606000911.9896-3-vishal.l.verma@intel.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2020-06-09 11:17:59 -04:00
..
acpi_interface.c acpi: extend ACPI interface to provide send_event hook 2016-06-07 15:36:54 +03:00
acpi-stub.c Include qmp-commands.h exactly where needed 2018-02-09 13:52:10 +01:00
acpi-x86-stub.c acpi: move PC stubs out of stubs/ 2019-12-17 19:33:50 +01:00
aml-build-stub.c acpi: add aml builder stubs 2020-05-04 10:25:02 -04:00
aml-build.c ACPI: Build related register address fields via hardware error fw_cfg blob 2020-05-14 15:03:09 +01:00
bios-linker-loader.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
core.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
cpu_hotplug.c hw/acpi/cpu_hotplug: Include "hw/pci/pci.h" 2020-03-09 15:59:31 +01:00
cpu.c Typo: Correct the name of CPU hotplug memory region 2020-04-30 11:52:28 +01:00
generic_event_device.c ACPI: Record the Generic Error Status Block address 2020-05-14 15:03:09 +01:00
ghes.c ACPI: Record Generic Error Status Block(GESB) table 2020-05-14 15:03:09 +01:00
hmat.c hmat acpi: Build Memory Side Cache Information Structure(s) 2020-01-05 07:03:03 -05:00
hmat.h hmat acpi: Build Memory Proximity Domain Attributes Structure(s) 2020-01-05 07:03:03 -05:00
ich9.c Drop more @errp parameters after previous commit 2020-05-15 07:08:14 +02:00
ipmi-stub.c ipmi: Fix SSIF ACPI handling to use the right CRS 2019-09-20 14:08:10 -05:00
ipmi.c ipmi: Fix SSIF ACPI handling to use the right CRS 2019-09-20 14:08:10 -05:00
Kconfig ACPI: Build related register address fields via hardware error fw_cfg blob 2020-05-14 15:03:09 +01:00
Makefile.objs ACPI: Build related register address fields via hardware error fw_cfg blob 2020-05-14 15:03:09 +01:00
memory_hotplug.c hw/acpi: Do not create memory hotplug method when handler is not defined 2019-10-05 17:12:08 -04:00
nvdimm.c hw/acpi/nvdimm: add a helper to augment SRAT generation 2020-06-09 11:17:59 -04:00
pci.c acpi: pci: use build_append_foo() API to construct MCFG 2019-05-29 18:00:57 -04:00
pcihp.c qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
piix4.c qom: Drop parameter @errp of object_property_add() & friends 2020-05-15 07:07:58 +02:00
tco.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
tpm.c acpi: add ACPI memory clear interface 2019-01-17 21:10:57 -05:00
trace-events acpi: cpuhp: introduce 'Command data 2' field 2020-01-22 00:23:07 -05:00
utils.c hw/acpi: extract acpi_add_rom_blob() 2019-06-16 16:16:52 -04:00
vmgenid.c qdev: set properties with device_class_set_props() 2020-01-24 20:59:15 +01:00