qemu/hw/i386
Haozhong Zhang 848a1cc1e8 hw/acpi-build: build SRAT memory affinity structures for DIMM devices
ACPI 6.2A Table 5-129 "SPA Range Structure" requires the proximity
domain of a NVDIMM SPA range must match with corresponding entry in
SRAT table.

The address ranges of vNVDIMM in QEMU are allocated from the
hot-pluggable address space, which is entirely covered by one SRAT
memory affinity structure. However, users can set the vNVDIMM
proximity domain in NFIT SPA range structure by the 'node' property of
'-device nvdimm' to a value different than the one in the above SRAT
memory affinity structure.

In order to solve such proximity domain mismatch, this patch builds
one SRAT memory affinity structure for each DIMM device present at
boot time, including both PC-DIMM and NVDIMM, with the proximity
domain specified in '-device pc-dimm' or '-device nvdimm'.

The remaining hot-pluggable address space is covered by one or multiple
SRAT memory affinity structures with the proximity domain of the last
node as before.

Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2018-03-20 03:34:52 +02:00
..
kvm qdev: use device_class_set_parent_realize/unrealize/reset() 2018-02-05 13:54:38 +01:00
xen qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
acpi-build.c hw/acpi-build: build SRAT memory affinity structures for DIMM devices 2018-03-20 03:34:52 +02:00
acpi-build.h Use scripts/clean-includes to drop redundant qemu/typedefs.h 2016-03-22 22:20:16 +01:00
amd_iommu.c x86_iommu: Move machine check to x86_iommu_realize() 2018-01-18 21:52:38 +02:00
amd_iommu.h amd_iommu: avoid needless includes in header file 2017-12-18 17:07:02 +03:00
intel_iommu_internal.h intel-iommu: Extend address width to 48 bits 2018-01-18 21:52:38 +02:00
intel_iommu.c intel-iommu: Accept 64-bit writes to FEADDR 2018-03-01 16:25:37 +02:00
kvmvapic.c mttcg/i386: Patch instruction using async_safe_* framework 2017-07-14 12:04:35 +02:00
Makefile.objs i386/pc: move vmmouse.c to hw/i386/ 2017-12-18 17:07:02 +03:00
multiboot.c multiboot: fprintf(stderr...) -> error_report() 2018-03-07 11:53:37 +01:00
multiboot.h refer to FWCfgState explicitly 2013-06-02 18:14:02 +03:00
pc_piix.c scsi: Remove automatic creation of SCSI controllers with -drive if=scsi 2018-03-06 14:00:59 +01:00
pc_q35.c scsi: Remove automatic creation of SCSI controllers with -drive if=scsi 2018-03-06 14:00:59 +01:00
pc_sysfw.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
pc.c scsi: Remove automatic creation of SCSI controllers with -drive if=scsi 2018-03-06 14:00:59 +01:00
trace-events hw/i386/vmport: replace fprintf() by trace events or LOG_UNIMP 2017-12-21 09:30:32 +01:00
vmmouse.c i386/pc: move vmmouse.c to hw/i386/ 2017-12-18 17:07:02 +03:00
vmport.c hw/i386/vmport: fix missing definitions with non-log trace backends 2017-12-21 22:52:28 +00:00
x86-iommu.c x86_iommu: check if machine has PCI bus 2018-01-18 21:52:38 +02:00