From: Gavin Shan <gshan@redhat.com>
To: qemu-arm@nongnu.org
Cc: peter.maydell@linaro.org, drjones@redhat.com, david@redhat.com,
richard.henderson@linaro.org, qemu-devel@nongnu.org,
eric.auger@redhat.com, shan.gavin@gmail.com,
Jonathan.Cameron@huawei.com, imammedo@redhat.com
Subject: [PATCH v3 0/2] hw/arm/virt: Support for virtio-mem-pci
Date: Sat, 4 Dec 2021 07:34:02 +0800 [thread overview]
Message-ID: <20211203233404.37313-1-gshan@redhat.com> (raw)
This series supports virtio-mem-pci device, by simply following the
implementation on x86. The exception is the block size is 512MB on
ARM64 instead of 128MB on x86, compatible with the memory section
size in linux guest.
The work was done by David Hildenbrand and then Jonathan Cameron. I'm
taking the patch and putting more efforts, which is all about testing
to me at current stage.
Testing
=======
The upstream linux kernel (v5.16.rc3) is used on host/guest during
the testing. The guest kernel includes changes to enable virtio-mem
driver, which is simply to enable CONFIG_VIRTIO_MEM on ARM64.
Mutiple combinations like page sizes on host/guest, memory backend
device etc are covered in the testing. Besides, migration is also
tested. The following command lines are used for VM or virtio-mem-pci
device hot-add. It's notable that virtio-mem-pci device hot-remove
isn't supported, similar to what we have on x86.
host.pgsize guest.pgsize backend hot-add hot-remove migration
---------------------------------------------------------------------
4KB 4KB normal ok ok ok
THP ok ok ok
hugeTLB ok ok ok
4KB 64KB normal ok ok ok
THP ok ok ok
hugeTLB ok ok ok
64KB 4KB normal ok ok ok
THP ok ok ok
hugeTLB ok ok ok
64KB 64KB normal ok ok ok
THP ok ok ok
hugeTLB ok ok ok
The command lines are used for VM. When hugeTLBfs is used, all memory
backend objects are popuated on /dev/hugepages-2048kB or
/dev/hugepages-524288kB, depending on the host page sizes.
/home/gavin/sandbox/qemu.main/build/qemu-system-aarch64 \
-accel kvm -machine virt,gic-version=host \
-cpu host -smp 4,sockets=2,cores=2,threads=1 \
-m 1024M,slots=16,maxmem=64G \
-object memory-backend-ram,id=mem0,size=512M \
-object memory-backend-ram,id=mem1,size=512M \
-numa node,nodeid=0,cpus=0-1,memdev=mem0 \
-numa node,nodeid=1,cpus=2-3,memdev=mem1 \
:
-kernel /home/gavin/sandbox/linux.guest/arch/arm64/boot/Image \
-initrd /home/gavin/sandbox/images/rootfs.cpio.xz \
-append earlycon=pl011,mmio,0x9000000 \
-device pcie-root-port,bus=pcie.0,chassis=1,id=pcie.1 \
-device pcie-root-port,bus=pcie.0,chassis=2,id=pcie.2 \
-device pcie-root-port,bus=pcie.0,chassis=3,id=pcie.3 \
-object memory-backend-ram,id=vmem0,size=512M \
-device virtio-mem-pci,id=vm0,bus=pcie.1,memdev=vmem0,node=0,requested-size=0 \
-object memory-backend-ram,id=vmem1,size=512M \
-device virtio-mem-pci,id=vm1,bus=pcie.2,memdev=vmem1,node=1,requested-size=0
Command lines used for memory hot-add and hot-remove:
(qemu) qom-set vm1 requested-size 512M
(qemu) qom-set vm1 requested-size 0
(qemu) qom-set vm1 requested-size 512M
Command lines used for virtio-mem-pci device hot-add:
(qemu) object_add memory-backend-ram,id=hp-mem1,size=512M
(qemu) device_add virtio-mem-pci,id=hp-vm1,bus=pcie.3,memdev=hp-mem1,node=1
(qemu) qom-set hp-vm1 requested-size 512M
(qemu) qom-set hp-vm1 requested-size 0
(qemu) qom-set hp-vm1 requested-size 512M
Changelog
=========
v3:
* Reshuffle patches (David)
* Suggested code refactoring for virtio_mem_default_thp_size() (David)
* Pick r-b from Jonathan and David (Gavin)
v2:
* Include David/Jonathan as co-developers in the commit log (David)
* Decrease VIRTIO_MEM_USABLE_EXTENT to 512MB on ARM64 in PATCH[1/2] (David)
* PATCH[2/2] is added to correct the THP sizes on ARM64 (David)
Gavin Shan (2):
virtio-mem: Correct default THP size for ARM64
hw/arm/virt: Support for virtio-mem-pci
hw/arm/Kconfig | 1 +
hw/arm/virt.c | 68 +++++++++++++++++++++++++++++++++++++++++-
hw/virtio/virtio-mem.c | 36 ++++++++++++++--------
3 files changed, 91 insertions(+), 14 deletions(-)
--
2.23.0
next reply other threads:[~2021-12-03 23:41 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-03 23:34 Gavin Shan [this message]
2021-12-03 23:34 ` [PATCH v3 1/2] virtio-mem: Correct default THP size for ARM64 Gavin Shan
2021-12-03 23:34 ` [PATCH v3 2/2] hw/arm/virt: Support for virtio-mem-pci Gavin Shan
2022-01-07 16:40 ` Peter Maydell
2022-01-08 7:21 ` Gavin Shan
2022-01-10 10:50 ` Peter Maydell
2022-01-10 10:59 ` David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211203233404.37313-1-gshan@redhat.com \
--to=gshan@redhat.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=david@redhat.com \
--cc=drjones@redhat.com \
--cc=eric.auger@redhat.com \
--cc=imammedo@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=shan.gavin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).