An accurate cpu topology may help improve the cpu scheduler's decision making when dealing with multi-core system. So cpu topology description is helpful to provide guest with the right view. Cpu cache information may also have slight impact on the sched domain, and even userspace software may check the cpu cache information to do some optimizations. Thus this patch series is posted to provide cpu and cache topology support for arm.
To make the cpu topology consistent with MPIDR, an vcpu ioctl KVM_ARM_SET_MP_AFFINITY is introduced so that userspace can set MPIDR according to the topology specified [1]. To describe the cpu topology both fdt and ACPI are supported. To describe the cpu cache information, a default cache hierarchy is given and can be made configurable later. The cpu topology is built according to processor hierarchy node structure. The cpu cache information is built according to cache type structure. This patch series is partially based on the patches posted by Andrew Jone years ago [2], I jumped in on it since some OS vendor cooperative partners are eager for it. Thanks for Andrew's contribution. Please feel free to reply to me if there is anything improper. [1] https://patchwork.kernel.org/cover/11781317 [2] https://patchwork.ozlabs.org/project/qemu-devel/cover/20180704124923.32483-1-drjo...@redhat.com Andrew Jones (2): device_tree: add qemu_fdt_add_path hw/arm/virt: DT: add cpu-map Ying Fang (10): linux headers: Update linux header with KVM_ARM_SET_MP_AFFINITY target/arm/kvm64: make MPIDR consistent with CPU Topology target/arm/kvm32: make MPIDR consistent with CPU Topology hw/arm/virt-acpi-build: distinguish possible and present cpus hw/acpi/aml-build: add processor hierarchy node structure hw/arm/virt-acpi-build: add PPTT table target/arm/cpu: Add CPU cache description for arm hw/arm/virt: add fdt cache information hw/acpi/aml-build: build ACPI CPU cache topology information hw/arm/virt-acpi-build: Enable CPU cache topology device_tree.c | 24 +++++++ hw/acpi/aml-build.c | 68 +++++++++++++++++++ hw/arm/virt-acpi-build.c | 99 +++++++++++++++++++++++++-- hw/arm/virt.c | 128 ++++++++++++++++++++++++++++++++++- include/hw/acpi/acpi-defs.h | 14 ++++ include/hw/acpi/aml-build.h | 11 +++ include/hw/arm/virt.h | 1 + include/sysemu/device_tree.h | 1 + linux-headers/linux/kvm.h | 3 + target/arm/cpu.c | 42 ++++++++++++ target/arm/cpu.h | 27 ++++++++ target/arm/kvm32.c | 46 ++++++++++--- target/arm/kvm64.c | 46 ++++++++++--- 13 files changed, 488 insertions(+), 22 deletions(-) -- 2.23.0