From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com,
qemu-devel@nongnu.org, qemu-arm@nongnu.org,
peter.maydell@linaro.org, shameerali.kolothum.thodi@huawei.com,
kwangwoo.lee@sk.com, imammedo@redhat.com, david@redhat.com
Cc: drjones@redhat.com, dgilbert@redhat.com, Suzuki.Poulose@arm.com
Subject: [Qemu-devel] [RFC v4 00/16] ARM virt: PCDIMM/NVDIMM at 2TB
Date: Thu, 18 Oct 2018 16:30:26 +0200 [thread overview]
Message-ID: <20181018143042.29588-1-eric.auger@redhat.com> (raw)
This series aims at supporting PCDIMM/NVDIMM intantiation in
mach-virt at 2TB guest physical address.
This is not material for 3.1.
Although there is another implementation alternative under
discussion on the ML, consisting in having a single device memory
region with a floating base, I continue to maintain this series
until all dependencies get resolved and this other solution gets
fully prototyped.
Here we consider that the top of the address map is the top of
the device memory starting at 2TB and whose size is defined
by maxram_size - ram_size.
We create a KVM machine with an IPA range including the top of
the device memory. Suzuki's kernel series [0] allows that settings.
In can be found on kvmarm/next branch and this branch was used for
testing.
Then the series adds the device memory framework to mach-virt
and brings support for PC-DIMM and NV-DIMM frontend devices.
This series reuses/rebases patches initially submitted by Shameer
in [1] and Kwangwoo in [2] for the PC-DIMM and NV-DIMM parts.
Notes:
- The EDK2 FW still hardcodes the max PA size to 40 bits
- The TCG machine limits the PA according to the id_aa64mmfr0 register
PARange field. At the moment the PARange is hardcoded to 40bits for
the A53 CPU and to 44 bits for the A57. So only an A57 based machine
would be able to expose device memory. This consisteny check is not
yet handled. We could think about adding the support for the phys-bit
CPU option to set the id_aa64mmfr0.parange.
The series includes "hw/arm/boot: introduce fdt_add_memory_node
helper" which was sent separately.
Best Regards
Eric
References:
[0] [PATCH v6 00/18] arm64: Dynamic & 52bit IPA support
https://lkml.org/lkml/2018/9/26/936
kvmarm next branch can be used for testing
[1] [RFC v2 0/6] hw/arm: Add support for non-contiguous iova regions
http://patchwork.ozlabs.org/cover/914694/
[2] [RFC PATCH 0/3] add nvdimm support on AArch64 virt platform
https://lists.gnu.org/archive/html/qemu-devel/2016-07/msg04599.html
Tests:
- On Cavium Gigabyte, a 48b KVM accelerated VM was created.
- PC-DIMM was tested with memtester
- NV-DIMM was tested with ndctl and an ext4 DAX FS was installed on
guest
This series can be found at:
https://github.com/eauger/qemu/tree/v3.0.0-dimm-2tb-v4
History:
v3 -> v4:
- rebase on David's "pc-dimm: next bunch of cleanups" and
"pc-dimm: pre_plug "slot" and "addr" assignment"
- kvm-type option not used anymore. We directly use
maxram_size and ram_size machine fields to compute the
MAX IPA range. Migration is naturally handled as CLI
option are kept between source and destination. This was
suggested by David.
- device_memory_start and device_memory_size not stored
anymore in vms->bootinfo
- I did not take into account 2 Igor's comments: the one
related to the refactoring of arm_load_dtb and the one
related to the generation of the dtb after system_reset
which would contain nodes of hotplugged devices (we do
not support hotplug at this stage)
- check the end-user does not attempt to hotplug a device
- addition of "vl: Set machine ram_size, maxram_size and
ram_slots earlier"
v2 -> v3:
- fix pc_q35 and pc_piix compilation error
- kwangwoo's email being not valid anymore, remove his address
v1 -> v2:
- kvm_get_max_vm_phys_shift moved in arch specific file
- addition of NVDIMM part
- single series
- rebase on David's refactoring
v1:
- was "[RFC 0/6] KVM/ARM: Dynamic and larger GPA size"
- was "[RFC 0/5] ARM virt: Support PC-DIMM at 2TB"
Best Regards
Eric
Eric Auger (10):
linux-headers: header update for KVM/ARM KVM_ARM_GET_MAX_VM_PHYS_SHIFT
hw/boards: Add a MachineState parameter to kvm_type callback
kvm: add kvm_arm_get_max_vm_phys_shift
vl: Set machine ram_size, maxram_size and ram_slots earlier
hw/arm/virt: Add virt-3.2 machine type
hw/arm/virt: Implement kvm_type function for 3.2 machine
hw/arm/virt: Allocate device_memory
acpi: move build_srat_hotpluggable_memory to generic ACPI source
hw/arm/boot: Expose the pmem nodes in the DT
hw/arm/virt: Add nvdimm and nvdimm-persistence options
Kwangwoo Lee (2):
nvdimm: use configurable ACPI IO base and size
hw/arm/virt: Add nvdimm hot-plug infrastructure
Shameer Kolothum (4):
hw/arm/boot: introduce fdt_add_memory_node helper
hw/arm/virt: Add memory hotplug framework
hw/arm/boot: Expose the PC-DIMM nodes in the DT
hw/arm/virt-acpi-build: Add PC-DIMM in SRAT
accel/kvm/kvm-all.c | 2 +-
default-configs/arm-softmmu.mak | 4 +
hw/acpi/aml-build.c | 51 ++++++
hw/acpi/nvdimm.c | 28 ++-
hw/arm/boot.c | 120 ++++++++++---
hw/arm/virt-acpi-build.c | 10 ++
hw/arm/virt.c | 302 ++++++++++++++++++++++++++++----
hw/i386/pc_piix.c | 8 +-
hw/i386/pc_q35.c | 8 +-
hw/ppc/mac_newworld.c | 3 +-
hw/ppc/mac_oldworld.c | 2 +-
hw/ppc/spapr.c | 2 +-
include/hw/acpi/aml-build.h | 3 +
include/hw/arm/virt.h | 5 +
include/hw/boards.h | 2 +-
include/hw/mem/nvdimm.h | 12 ++
linux-headers/linux/kvm.h | 10 ++
target/arm/kvm.c | 8 +
target/arm/kvm_arm.h | 16 ++
vl.c | 6 +-
20 files changed, 530 insertions(+), 72 deletions(-)
--
2.17.1
next reply other threads:[~2018-10-18 14:31 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-18 14:30 Eric Auger [this message]
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 01/16] hw/arm/boot: introduce fdt_add_memory_node helper Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 02/16] linux-headers: header update for KVM/ARM KVM_ARM_GET_MAX_VM_PHYS_SHIFT Eric Auger
2018-10-19 8:49 ` Suzuki K Poulose
2018-10-19 14:02 ` Auger Eric
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 03/16] hw/boards: Add a MachineState parameter to kvm_type callback Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 04/16] kvm: add kvm_arm_get_max_vm_phys_shift Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 05/16] vl: Set machine ram_size, maxram_size and ram_slots earlier Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 06/16] hw/arm/virt: Add virt-3.2 machine type Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 07/16] hw/arm/virt: Implement kvm_type function for 3.2 machine Eric Auger
2018-10-19 2:58 ` Richard Henderson
2018-10-19 13:59 ` Auger Eric
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 08/16] hw/arm/virt: Allocate device_memory Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 09/16] hw/arm/virt: Add memory hotplug framework Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 10/16] hw/arm/boot: Expose the PC-DIMM nodes in the DT Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 11/16] acpi: move build_srat_hotpluggable_memory to generic ACPI source Eric Auger
2019-01-21 11:44 ` Shameerali Kolothum Thodi
2019-01-21 13:58 ` Auger Eric
2019-01-21 17:09 ` Shameerali Kolothum Thodi
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 12/16] hw/arm/virt-acpi-build: Add PC-DIMM in SRAT Eric Auger
2018-10-22 13:40 ` Igor Mammedov
2018-11-05 13:27 ` Auger Eric
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 13/16] nvdimm: use configurable ACPI IO base and size Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 14/16] hw/arm/virt: Add nvdimm hot-plug infrastructure Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 15/16] hw/arm/boot: Expose the pmem nodes in the DT Eric Auger
2018-10-18 14:30 ` [Qemu-devel] [RFC v4 16/16] hw/arm/virt: Add nvdimm and nvdimm-persistence options Eric Auger
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=20181018143042.29588-1-eric.auger@redhat.com \
--to=eric.auger@redhat.com \
--cc=Suzuki.Poulose@arm.com \
--cc=david@redhat.com \
--cc=dgilbert@redhat.com \
--cc=drjones@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=imammedo@redhat.com \
--cc=kwangwoo.lee@sk.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=shameerali.kolothum.thodi@huawei.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).