From: Shannon Zhao <shannon.z...@linaro.org> Add NUMA support for machine virt. Tested successfully running a guest Linux kernel with the following patch applied:
- [PATCH v16 0/6] arm64, numa: Add numa support for arm64 platforms https://lkml.org/lkml/2016/4/8/571 - [PATCH v5 00/14] ACPI NUMA support for ARM64 https://lkml.org/lkml/2016/4/19/852 Example qemu command line: qemu-system-aarch64 \ -enable-kvm -smp 4\ -kernel Image \ -m 512 -machine virt,kernel_irqchip=on \ -initrd guestfs.cpio.gz \ -cpu host -nographic \ -numa node,mem=256M,cpus=0-1,nodeid=0 \ -numa node,mem=256M,cpus=2-3,nodeid=1 \ -append "console=ttyAMA0 root=/dev/ram" Changes since v5: * don't generate /distance-map node since it's optional * improve the /memory node name * move acpi_build_srat_memory to common place then reuse it to generate SRAT table Changes since v4: * rebased on new kernel driver and device bindings, especially the compatible string "numa-distance-map-v1" of /distance-map node * set the numa-node-id for first /memory node Changes since v3: * based on new kernel driver and device bindings * add ACPI part Changes since v2: * update to use NUMA node property arm,associativity. Changes since v1: Take into account Peter's comments: * rename virt_memory_init to arm_generate_memory_dtb * move arm_generate_memory_dtb to boot.c and make it a common func * use a struct numa_map to generate numa dtb Shannon Zhao (5): ARM: Virt: Set numa-node-id for CPUs ARM: Add numa-node-id for /memory node ACPI: Add GICC Affinity Structure ACPI: move acpi_build_srat_memory to common place ACPI: Virt: Generate SRAT table hw/acpi/aml-build.c | 12 +++++++++++ hw/arm/boot.c | 43 +++++++++++++++++++++++++++++++------ hw/arm/virt-acpi-build.c | 52 +++++++++++++++++++++++++++++++++++++++++++++ hw/arm/virt.c | 8 +++++++ hw/i386/acpi-build.c | 22 +------------------ include/hw/acpi/acpi-defs.h | 15 ++++++++++++- include/hw/acpi/aml-build.h | 10 +++++++++ 7 files changed, 134 insertions(+), 28 deletions(-) -- 2.0.4