From: David Hildenbrand <david@redhat.com>
To: Auger Eric <eric.auger@redhat.com>, Igor Mammedov <imammedo@redhat.com>
Cc: peter.maydell@linaro.org, drjones@redhat.com,
dgilbert@redhat.com, shameerali.kolothum.thodi@huawei.com,
qemu-devel@nongnu.org, qemu-arm@nongnu.org,
eric.auger.pro@gmail.com, david@gibson.dropbear.id.au
Subject: Re: [Qemu-devel] [PATCH v6 14/18] hw/arm/virt: Allocate device_memory
Date: Thu, 21 Feb 2019 13:44:27 +0100 [thread overview]
Message-ID: <4a921c15-43b8-e7dd-2a76-6b9e0fc7f084@redhat.com> (raw)
In-Reply-To: <e264b964-baa6-11e2-8e45-3238d412ca32@redhat.com>
On 21.02.19 13:37, Auger Eric wrote:
> Hi Igor,
>
> On 2/21/19 10:36 AM, Igor Mammedov wrote:
>> On Tue, 19 Feb 2019 16:53:22 +0100
>> Auger Eric <eric.auger@redhat.com> wrote:
>>
>>> Hi Igor,
>>>
>>> On 2/18/19 10:31 AM, Igor Mammedov wrote:
>>>> On Tue, 5 Feb 2019 18:33:02 +0100
>>>> Eric Auger <eric.auger@redhat.com> wrote:
>>>>
>>>>> The device memory region is located after the initial RAM.
>>>>> its start/size are 1GB aligned.
>>>>>
>>>>> Signed-off-by: Eric Auger <eric.auger@redhat.com>
>>>>> Signed-off-by: Kwangwoo Lee <kwangwoo.lee@sk.com>
>>>>>
>>>>> ---
>>>>> v4 -> v5:
>>>>> - device memory set after the initial RAM
>>>>>
>>>>> v3 -> v4:
>>>>> - remove bootinfo.device_memory_start/device_memory_size
>>>>> - rename VIRT_HOTPLUG_MEM into VIRT_DEVICE_MEM
>>>>> ---
>>>>> hw/arm/virt.c | 36 ++++++++++++++++++++++++++++++++++++
>>>>> 1 file changed, 36 insertions(+)
>>>>>
>>>>> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
>>>>> index 783468ba77..b683902991 100644
>>>>> --- a/hw/arm/virt.c
>>>>> +++ b/hw/arm/virt.c
>>>>> @@ -61,6 +61,7 @@
>>>>> #include "hw/arm/smmuv3.h"
>>>>> #include "hw/mem/pc-dimm.h"
>>>>> #include "hw/mem/nvdimm.h"
>>>>> +#include "hw/acpi/acpi.h"
>>>>>
>>>>> #define DEFINE_VIRT_MACHINE_LATEST(major, minor, latest) \
>>>>> static void virt_##major##_##minor##_class_init(ObjectClass *oc, \
>>>>> @@ -1260,6 +1261,37 @@ static void create_secure_ram(VirtMachineState *vms,
>>>>> g_free(nodename);
>>>>> }
>>>>>
>>>>> +static void create_device_memory(VirtMachineState *vms, MemoryRegion *sysmem)
>>>>> +{
>>>>> + MachineState *ms = MACHINE(vms);
>>>>> + uint64_t device_memory_size = ms->maxram_size - ms->ram_size;
>>>> should size it with 1Gb alignment per slot from the start (to avoid x86 mistakes),
>>>> see enforce_aligned_dimm usage and associated commit for more details
>>> I don't understand the computation done in pc machine. eventually we are
>>> likely to have more device memory than requested by the user. Why don't
>>> we check (machine->maxram_size - machine->ram_size) >=
>>> machine->ram_slots * GiB
>>> instead of adding 1GiB/slot to the initial user requirements?
>>>
>>> Also machine->maxram_size - machine->ram_size is checked to be aligned
>>> with TARGET_PAGE_SIZE. Is TARGET_PAGE_SIZE representative of the guest
>>> PAGE in accelerated mode? Is it valid ro require an alignment on 1GB
>>> boundary as I do in this patch?
>> See commit 085f8e88b for explanation,
>> What we are basically are doing there is sizing hotpluggbale address space
>> to allow max possible huge page aligned DIMM to be successfully plugged in
>> even if address space if fragmented.
> In v7, I also added ram_slots * GiB to (maxram_size - ram_size).
>
Depending on the way the system handles it, this might be confusing for
the end user and has to be documented somewhere.
E.g. if there are certain memory limits (say 2TB) and the user specifies
something like "maxmem=2TB,slots=20" it might be confusing if he gets an
error like "more than 2TB are not supported".
> Thanks
>
> Eric
--
Thanks,
David / dhildenb
next prev parent reply other threads:[~2019-02-21 12:44 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-05 17:32 [Qemu-devel] [PATCH v6 00/18] ARM virt: Initial RAM expansion and PCDIMM/NVDIMM support Eric Auger
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 01/18] update-linux-headers.sh: Copy new headers Eric Auger
2019-02-14 16:36 ` Peter Maydell
2019-02-21 6:15 ` Alexey Kardashevskiy
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 02/18] linux-headers: Update to v5.0-rc2 Eric Auger
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 03/18] hw/arm/boot: introduce fdt_add_memory_node helper Eric Auger
2019-02-14 16:49 ` Peter Maydell
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 04/18] hw/arm/virt: Rename highmem IO regions Eric Auger
2019-02-14 16:50 ` Peter Maydell
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 05/18] hw/arm/virt: Split the memory map description Eric Auger
2019-02-14 17:07 ` Peter Maydell
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 06/18] hw/boards: Add a MachineState parameter to kvm_type callback Eric Auger
2019-02-14 17:12 ` Peter Maydell
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 07/18] kvm: add kvm_arm_get_max_vm_phys_shift Eric Auger
2019-02-14 17:15 ` Peter Maydell
2019-02-18 18:03 ` Auger Eric
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 08/18] vl: Set machine ram_size, maxram_size and ram_slots earlier Eric Auger
2019-02-14 17:16 ` Peter Maydell
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 09/18] hw/arm/virt: Implement kvm_type function for 4.0 machine Eric Auger
2019-02-14 17:29 ` Peter Maydell
2019-02-18 21:29 ` Auger Eric
2019-02-19 7:49 ` Igor Mammedov
2019-02-19 8:52 ` Auger Eric
2019-02-18 10:07 ` Igor Mammedov
2019-02-19 15:56 ` Auger Eric
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 10/18] hw/arm/virt: Bump the 255GB initial RAM limit Eric Auger
2019-02-07 15:19 ` Shameerali Kolothum Thodi
2019-02-07 15:25 ` Auger Eric
2019-02-05 17:32 ` [Qemu-devel] [PATCH v6 11/18] hw/arm/virt: Add memory hotplug framework Eric Auger
2019-02-14 17:15 ` David Hildenbrand
2019-02-18 18:10 ` Auger Eric
2019-02-05 17:33 ` [Qemu-devel] [PATCH v6 12/18] hw/arm/boot: Expose the PC-DIMM nodes in the DT Eric Auger
2019-02-18 8:58 ` Igor Mammedov
2019-02-20 15:30 ` Auger Eric
2019-02-21 9:27 ` Igor Mammedov
2019-02-05 17:33 ` [Qemu-devel] [PATCH v6 13/18] hw/arm/virt-acpi-build: Add PC-DIMM in SRAT Eric Auger
2019-02-18 8:14 ` Igor Mammedov
2019-02-05 17:33 ` [Qemu-devel] [PATCH v6 14/18] hw/arm/virt: Allocate device_memory Eric Auger
2019-02-18 9:31 ` Igor Mammedov
2019-02-19 15:53 ` Auger Eric
2019-02-19 15:56 ` David Hildenbrand
2019-02-21 9:36 ` Igor Mammedov
2019-02-21 12:37 ` Auger Eric
2019-02-21 12:44 ` David Hildenbrand [this message]
2019-02-21 13:07 ` Auger Eric
2019-02-05 17:33 ` [Qemu-devel] [PATCH v6 15/18] nvdimm: use configurable ACPI IO base and size Eric Auger
2019-02-18 10:21 ` Igor Mammedov
2019-02-05 17:33 ` [Qemu-devel] [PATCH v6 16/18] hw/arm/virt: Add nvdimm hot-plug infrastructure Eric Auger
2019-02-18 10:30 ` Igor Mammedov
2019-02-20 15:21 ` Auger Eric
2019-02-21 12:16 ` Igor Mammedov
2019-02-21 12:34 ` Auger Eric
2019-02-05 17:33 ` [Qemu-devel] [PATCH v6 17/18] hw/arm/boot: Expose the pmem nodes in the DT Eric Auger
2019-02-05 17:33 ` [Qemu-devel] [PATCH v6 18/18] hw/arm/virt: Add nvdimm and nvdimm-persistence options Eric Auger
2019-02-14 17:35 ` [Qemu-devel] [PATCH v6 00/18] ARM virt: Initial RAM expansion and PCDIMM/NVDIMM support Peter Maydell
2019-02-14 18:00 ` Auger Eric
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=4a921c15-43b8-e7dd-2a76-6b9e0fc7f084@redhat.com \
--to=david@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=dgilbert@redhat.com \
--cc=drjones@redhat.com \
--cc=eric.auger.pro@gmail.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=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).