All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Rosato <mjrosato@linux.vnet.ibm.com>
To: Alexander Graf <agraf@suse.de>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	qemu-devel@nongnu.org
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>,
	imammedo@redhat.com, rth@twiddle.net, aliguori@amazon.com,
	pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v3 3/4] virtio-ccw: Include standby memory when calculating storage increment
Date: Tue, 13 May 2014 10:04:23 -0400	[thread overview]
Message-ID: <53722667.80101@linux.vnet.ibm.com> (raw)
In-Reply-To: <5372219E.6070503@suse.de>

On 05/13/2014 09:43 AM, Alexander Graf wrote:
> 
> On 13.05.14 15:16, Matthew Rosato wrote:
>> On 05/12/2014 03:43 AM, Christian Borntraeger wrote:
>>> On 07/05/14 20:05, Matthew Rosato wrote:
>>>> When determining the memory increment size, use the maxmem size if
>>>> it was specified.
>>>>
>>>> Signed-off-by: Matthew Rosato <mjrosato@linux.vnet.ibm.com>
>>>> ---
>>>>   hw/s390x/s390-virtio-ccw.c |   44
>>>> ++++++++++++++++++++++++++++++++++++--------
>>>>   target-s390x/cpu.h         |    3 +++
>>>>   2 files changed, 39 insertions(+), 8 deletions(-)
>>>>
>>>> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
>>>> index 0d4f6ae..a8be0f7 100644
>>>> --- a/hw/s390x/s390-virtio-ccw.c
>>>> +++ b/hw/s390x/s390-virtio-ccw.c
>>>> @@ -17,6 +17,7 @@
>>>>   #include "ioinst.h"
>>>>   #include "css.h"
>>>>   #include "virtio-ccw.h"
>>>> +#include "qemu/config-file.h"
>>>>
>>>>   void io_subsystem_reset(void)
>>>>   {
>>>> @@ -84,17 +85,33 @@ static void ccw_init(QEMUMachineInitArgs *args)
>>>>       ram_addr_t my_ram_size = args->ram_size;
>>>>       MemoryRegion *sysmem = get_system_memory();
>>>>       MemoryRegion *ram = g_new(MemoryRegion, 1);
>>>> -    int shift = 0;
>>>> +    sclpMemoryHotplugDev *mhd = get_sclp_memory_hotplug_dev();
>>>>       uint8_t *storage_keys;
>>>>       int ret;
>>>>       VirtualCssBus *css_bus;
>>>> -
>>>> -    /* s390x ram size detection needs a 16bit multiplier + an
>>>> increment. So
>>>> -       guests > 64GB can be specified in 2MB steps etc. */
>>>> -    while ((my_ram_size >> (20 + shift)) > 65535) {
>>>> -        shift++;
>>>> +    QemuOpts *opts = qemu_opts_find(qemu_find_opts("memory"), NULL);
>>>> +    ram_addr_t pad_size = 0;
>>>> +    ram_addr_t maxmem = qemu_opt_get_size(opts, "maxmem", 0);
>>>> +    ram_addr_t standby_mem_size = maxmem - my_ram_size;
>>>> +
>>>> +    /* The storage increment size is a multiple of 1M and is a
>>>> power of 2.
>>>> +     * The number of storage increments must be
>>>> MAX_STORAGE_INCREMENTS or fewer.
>>>> +     * The variable 'mhd->increment_size' is an exponent of 2 that
>>>> can be
>>>> +     * used to calculate the size (in bytes) of an increment. */
>>>> +    mhd->increment_size = 20;
>>>> +    while ((my_ram_size >> mhd->increment_size) >
>>>> MAX_STORAGE_INCREMENTS) {
>>>> +        mhd->increment_size++;
>>>> +    }
>>>> +    while ((standby_mem_size >> mhd->increment_size) >
>>>> MAX_STORAGE_INCREMENTS) {
>>>> +        mhd->increment_size++;
>>>>       }
>>> Looking back into the mail thread, Alex requested to make the code
>>> for standy/non-standby identical.
>>> Now: The limit of 1020 (MAX_STORAGE_INCREMENTS) is only given if
>>> standby memory exists. Without standby memory, we could still used
>>> 64k as a divider.(zVM also does only impose this limit with standby
>>> memory).
>>> What does that mean: With this patch the memory size granularity gets
>>> bigger. e.g. a guest can have
>>> 1019MB, 1020MB, 1022MB, 1024MB and so on (1021MB is no longer
>>> possible, but it was before).
>> Hmm, this is a good point.  I didn't think about it when I made the
>> change per Alex.  If nobody has a strong opinion here, I think I'd
>> rather go back to special casing this in the next version, to keep the
>> 'normal case' (without standby memory) more robust.
> 
> Wouldn't it be more confusing if the guest configuration suddenly
> changes when you add standby memory?
> 

In fairness, you are already changing the guest memory layout with the
introduction of standby memory in the first place, so what's a little
more change? :)

But, yes, I hear you -- The value in keeping the environment uniform
across configurations outweighs the benefits of allowing odd boundaries
in some cases (probably only test cases anyway).  I can live with that.
 Thanks for the feedback.

Matt

  reply	other threads:[~2014-05-13 14:04 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-07 18:05 [Qemu-devel] [PATCH v3 0/4] s390: Support for Hotplug of Standby Memory Matthew Rosato
2014-05-07 18:05 ` [Qemu-devel] [PATCH v3 1/4] vl.c: extend -m option to support options for memory hotplug Matthew Rosato
2014-05-07 18:50   ` Alexander Graf
2014-05-07 19:00     ` Matthew Rosato
2014-05-08  8:43       ` Alexander Graf
2014-05-09 12:35   ` Christian Borntraeger
2014-05-15 13:53     ` Igor Mammedov
2014-05-07 18:05 ` [Qemu-devel] [PATCH v3 2/4] sclp-s390: Add device to manage s390 " Matthew Rosato
2014-05-07 18:05 ` [Qemu-devel] [PATCH v3 3/4] virtio-ccw: Include standby memory when calculating storage increment Matthew Rosato
2014-05-12  7:43   ` Christian Borntraeger
2014-05-13 13:16     ` Matthew Rosato
2014-05-13 13:43       ` Alexander Graf
2014-05-13 14:04         ` Matthew Rosato [this message]
2014-05-07 18:05 ` [Qemu-devel] [PATCH v3 4/4] sclp-s390: Add memory hotplug SCLPs Matthew Rosato
2014-05-12  7:35   ` Christian Borntraeger
2014-05-13 18:02     ` Matthew Rosato
2014-05-15 12:06       ` Christian Borntraeger
2014-05-12  7:46 ` [Qemu-devel] [PATCH v3 0/4] s390: Support for Hotplug of Standby Memory Christian Borntraeger

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=53722667.80101@linux.vnet.ibm.com \
    --to=mjrosato@linux.vnet.ibm.com \
    --cc=agraf@suse.de \
    --cc=aliguori@amazon.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=imammedo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.