Re: [PATCH] hw/arm/virt: Enable HMAT on arm virt machine
在 2022/1/25 20:46, Andrew Jones 写道: On Tue, Jan 25, 2022 at 07:46:43PM +0800, chenxiang (M) wrote: Hi Andrew, 在 2022/1/25 18:26, Andrew Jones 写道: On Tue, Jan 25, 2022 at 05:15:34PM +0800, chenxiang via wrote: From: Xiang Chen Since the patchset ("Build ACPI Heterogeneous Memory Attribute Table (HMAT)"), HMAT is supported, but only x86 is enabled. Enable HMAT on arm virt machine. Hi Xiang, What QEMU commands lines have you tested with which Linux guest kernels? I tested it with following commands with guest kernel 5.16-rc1, and the boot log of guest kernel is as attached: Thanks. Please consider adding HMAT tests, see tests/qtest/numa-test.c and tests/qtest/bios-tables-test.c, for the virt machine type to this series. Otherwise, Reviewed-by: Andrew Jones Thanks, i will add those HMAT tests in v2.
Re: [PATCH] hw/arm/virt: Enable HMAT on arm virt machine
On Tue, Jan 25, 2022 at 07:46:43PM +0800, chenxiang (M) wrote: > Hi Andrew, > > > 在 2022/1/25 18:26, Andrew Jones 写道: > > On Tue, Jan 25, 2022 at 05:15:34PM +0800, chenxiang via wrote: > > > From: Xiang Chen > > > > > > Since the patchset ("Build ACPI Heterogeneous Memory Attribute Table > > > (HMAT)"), > > > HMAT is supported, but only x86 is enabled. Enable HMAT on arm virt > > > machine. > > Hi Xiang, > > > > What QEMU commands lines have you tested with which Linux guest kernels? > > I tested it with following commands with guest kernel 5.16-rc1, and the boot > log of guest kernel is as attached: Thanks. Please consider adding HMAT tests, see tests/qtest/numa-test.c and tests/qtest/bios-tables-test.c, for the virt machine type to this series. Otherwise, Reviewed-by: Andrew Jones Thanks, drew > > ./qemu-system-aarch64 -m 4G,slots=4,maxmem=8g \ > -object memory-backend-ram,size=2G,id=m0 \ > -object memory-backend-ram,size=2G,id=m1 \ > -numa node,cpus=0-3,nodeid=0,memdev=m0 \ > -numa node,nodeid=1,memdev=m1,initiator=0 \ > -numa > hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 > \ > -numa > hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M > \ > -numa > hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 > \ > -numa > hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M > \ > -numa > hmat-cache,node-id=0,size=16K,level=1,associativity=direct,policy=write-back,line=8 > \ > -numa > hmat-cache,node-id=1,size=16K,level=1,associativity=direct,policy=write-back,line=8 > \ > -smp 4 \ > -no-reboot \ > -nographic \ > -cpu host \ > -machine virt,accel=kvm,gic-version=3,hmat=on \ > -bios /home/cx/QEMU_EFI.fd \ > -monitor unix:/home/cx/opt/qmp-test,server,nowait \ > -kernel /home/cx/Image \ > -device virtio-blk-pci,drive=drive0,id=virtblk0,num-queues=4 \ > -drive file=/home/cx/opt/boot.img,if=none,id=drive0 \ > -append "rdinit=init console=ttyAMA0 root=/dev/vda rootfstype=ext4 rw " > > > > > > Thanks, > > drew > > > > > Signed-off-by: Xiang Chen > > > --- > > > hw/arm/Kconfig | 1 + > > > hw/arm/virt-acpi-build.c | 7 +++ > > > 2 files changed, 8 insertions(+) > > > > > > diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig > > > index 2e0049196d..a3c6099829 100644 > > > --- a/hw/arm/Kconfig > > > +++ b/hw/arm/Kconfig > > > @@ -29,6 +29,7 @@ config ARM_VIRT > > > select ACPI_APEI > > > select ACPI_VIOT > > > select VIRTIO_MEM_SUPPORTED > > > +select ACPI_HMAT > > > config CHEETAH > > > bool > > > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c > > > index 449fab0080..f19b55e486 100644 > > > --- a/hw/arm/virt-acpi-build.c > > > +++ b/hw/arm/virt-acpi-build.c > > > @@ -42,6 +42,7 @@ > > > #include "hw/acpi/memory_hotplug.h" > > > #include "hw/acpi/generic_event_device.h" > > > #include "hw/acpi/tpm.h" > > > +#include "hw/acpi/hmat.h" > > > #include "hw/pci/pcie_host.h" > > > #include "hw/pci/pci.h" > > > #include "hw/pci/pci_bus.h" > > > @@ -990,6 +991,12 @@ void virt_acpi_build(VirtMachineState *vms, > > > AcpiBuildTables *tables) > > > build_slit(tables_blob, tables->linker, ms, vms->oem_id, > > > vms->oem_table_id); > > > } > > > + > > > +if (ms->numa_state->hmat_enabled) { > > > +acpi_add_table(table_offsets, tables_blob); > > > +build_hmat(tables_blob, tables->linker, ms->numa_state, > > > + vms->oem_id, vms->oem_table_id); > > > +} > > > } > > > if (ms->nvdimms_state->is_enabled) { > > > -- > > > 2.33.0 > > > > > > > > . > > > > [root@centos build]# ./qemu-system-aarch64 -m 4G,slots=4,maxmem=8g -object > memory-backend-ram,size=2G,id=m0 -object memory-backend-ram,size=2G,id=m1 > -numa node,cpus=0-3,nodeid=0,memdev=m0 -numa > node,nodeid=1,memdev=m1,initiator=0 -numa > hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 > -numa > hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M > -numa > hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 > -numa > hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M > -numa > hmat-cache,node-id=0,size=16K,level=1,associativity=direct,policy=write-back,line=8 > -numa > hmat-cache,node-id=1,size=16K,level=1,associativity=direct,policy=write-back,line=8 > -smp 4 -no-reboot -nographic -cpu host -machine > virt,accel=kvm,gic-version=3,hmat=on -bios /home/cx/QEMU_EFI.fd -monitor > unix:/home/cx/opt/qmp-test,server,nowait -kernel /home/cx/Image -device > virtio-blk-pci,drive=drive0,id=virtblk0,num-queues=4 -drive > file=/home/cx/opt/boot.img,if=none,id=drive0 -append "rdinit=init > console=ttyAMA0 root=/dev/vda rootfstype=ext4 rw " > WARNING: Image format was not specified for
Re: [PATCH] hw/arm/virt: Enable HMAT on arm virt machine
Hi Andrew, 在 2022/1/25 18:26, Andrew Jones 写道: On Tue, Jan 25, 2022 at 05:15:34PM +0800, chenxiang via wrote: From: Xiang Chen Since the patchset ("Build ACPI Heterogeneous Memory Attribute Table (HMAT)"), HMAT is supported, but only x86 is enabled. Enable HMAT on arm virt machine. Hi Xiang, What QEMU commands lines have you tested with which Linux guest kernels? I tested it with following commands with guest kernel 5.16-rc1, and the boot log of guest kernel is as attached: ./qemu-system-aarch64 -m 4G,slots=4,maxmem=8g \ -object memory-backend-ram,size=2G,id=m0 \ -object memory-backend-ram,size=2G,id=m1 \ -numa node,cpus=0-3,nodeid=0,memdev=m0 \ -numa node,nodeid=1,memdev=m1,initiator=0 \ -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 \ -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M \ -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 \ -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M \ -numa hmat-cache,node-id=0,size=16K,level=1,associativity=direct,policy=write-back,line=8 \ -numa hmat-cache,node-id=1,size=16K,level=1,associativity=direct,policy=write-back,line=8 \ -smp 4 \ -no-reboot \ -nographic \ -cpu host \ -machine virt,accel=kvm,gic-version=3,hmat=on \ -bios /home/cx/QEMU_EFI.fd \ -monitor unix:/home/cx/opt/qmp-test,server,nowait \ -kernel /home/cx/Image \ -device virtio-blk-pci,drive=drive0,id=virtblk0,num-queues=4 \ -drive file=/home/cx/opt/boot.img,if=none,id=drive0 \ -append "rdinit=init console=ttyAMA0 root=/dev/vda rootfstype=ext4 rw " Thanks, drew Signed-off-by: Xiang Chen --- hw/arm/Kconfig | 1 + hw/arm/virt-acpi-build.c | 7 +++ 2 files changed, 8 insertions(+) diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 2e0049196d..a3c6099829 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -29,6 +29,7 @@ config ARM_VIRT select ACPI_APEI select ACPI_VIOT select VIRTIO_MEM_SUPPORTED +select ACPI_HMAT config CHEETAH bool diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index 449fab0080..f19b55e486 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -42,6 +42,7 @@ #include "hw/acpi/memory_hotplug.h" #include "hw/acpi/generic_event_device.h" #include "hw/acpi/tpm.h" +#include "hw/acpi/hmat.h" #include "hw/pci/pcie_host.h" #include "hw/pci/pci.h" #include "hw/pci/pci_bus.h" @@ -990,6 +991,12 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables) build_slit(tables_blob, tables->linker, ms, vms->oem_id, vms->oem_table_id); } + +if (ms->numa_state->hmat_enabled) { +acpi_add_table(table_offsets, tables_blob); +build_hmat(tables_blob, tables->linker, ms->numa_state, + vms->oem_id, vms->oem_table_id); +} } if (ms->nvdimms_state->is_enabled) { -- 2.33.0 . [root@centos build]# ./qemu-system-aarch64 -m 4G,slots=4,maxmem=8g -object memory-backend-ram,size=2G,id=m0 -object memory-backend-ram,size=2G,id=m1 -numa node,cpus=0-3,nodeid=0,memdev=m0 -numa node,nodeid=1,memdev=m1,initiator=0 -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M -numa hmat-cache,node-id=0,size=16K,level=1,associativity=direct,policy=write-back,line=8 -numa hmat-cache,node-id=1,size=16K,level=1,associativity=direct,policy=write-back,line=8 -smp 4 -no-reboot -nographic -cpu host -machine virt,accel=kvm,gic-version=3,hmat=on -bios /home/cx/QEMU_EFI.fd -monitor unix:/home/cx/opt/qmp-test,server,nowait -kernel /home/cx/Image -device virtio-blk-pci,drive=drive0,id=virtblk0,num-queues=4 -drive file=/home/cx/opt/boot.img,if=none,id=drive0 -append "rdinit=init console=ttyAMA0 root=/dev/vda rootfstype=ext4 rw " WARNING: Image format was not specified for '/home/cx/opt/boot.img' and probing guessed raw. Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted. Specify the 'raw' format explicitly to remove the restrictions. EFI stub: Booting Linux Kernel... EFI stub: EFI_RNG_PROTOCOL unavailable EFI stub: Generating empty DTB EFI stub: Exiting boot services... [0.00] Booting Linux on physical CPU 0x00 [0x481fd010] [0.00] Linux version 5.16.0-rc1-15060-g07d132dd883a (chenxiang@plinth) (aarch64-linux-gnu-gcc (Linaro GCC 7.3-2018.05-rc1) 7.3.1 20180425 [linaro-7.3-2018.05-rc1 revision 38aec9a676236eaa42ca03ccb3a6c1dd0182c29f], GNU ld (Linaro_Binutils-2018.05-rc1)
Re: [PATCH] hw/arm/virt: Enable HMAT on arm virt machine
On Tue, Jan 25, 2022 at 05:15:34PM +0800, chenxiang via wrote: > From: Xiang Chen > > Since the patchset ("Build ACPI Heterogeneous Memory Attribute Table (HMAT)"), > HMAT is supported, but only x86 is enabled. Enable HMAT on arm virt machine. Hi Xiang, What QEMU commands lines have you tested with which Linux guest kernels? Thanks, drew > > Signed-off-by: Xiang Chen > --- > hw/arm/Kconfig | 1 + > hw/arm/virt-acpi-build.c | 7 +++ > 2 files changed, 8 insertions(+) > > diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig > index 2e0049196d..a3c6099829 100644 > --- a/hw/arm/Kconfig > +++ b/hw/arm/Kconfig > @@ -29,6 +29,7 @@ config ARM_VIRT > select ACPI_APEI > select ACPI_VIOT > select VIRTIO_MEM_SUPPORTED > +select ACPI_HMAT > > config CHEETAH > bool > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c > index 449fab0080..f19b55e486 100644 > --- a/hw/arm/virt-acpi-build.c > +++ b/hw/arm/virt-acpi-build.c > @@ -42,6 +42,7 @@ > #include "hw/acpi/memory_hotplug.h" > #include "hw/acpi/generic_event_device.h" > #include "hw/acpi/tpm.h" > +#include "hw/acpi/hmat.h" > #include "hw/pci/pcie_host.h" > #include "hw/pci/pci.h" > #include "hw/pci/pci_bus.h" > @@ -990,6 +991,12 @@ void virt_acpi_build(VirtMachineState *vms, > AcpiBuildTables *tables) > build_slit(tables_blob, tables->linker, ms, vms->oem_id, > vms->oem_table_id); > } > + > +if (ms->numa_state->hmat_enabled) { > +acpi_add_table(table_offsets, tables_blob); > +build_hmat(tables_blob, tables->linker, ms->numa_state, > + vms->oem_id, vms->oem_table_id); > +} > } > > if (ms->nvdimms_state->is_enabled) { > -- > 2.33.0 > >