From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: peter.maydell@linaro.org, pkrempa@redhat.com,
qemu-devel@nongnu.org, pbonzini@redhat.com, mprivozn@redhat.com
Subject: Re: [PATCH v3] machine: add missing doc for memory-backend option
Date: Wed, 27 Jan 2021 10:45:11 +0000 [thread overview]
Message-ID: <20210127104511.GF3653144@redhat.com> (raw)
In-Reply-To: <20210121161504.1007247-1-imammedo@redhat.com>
On Thu, Jan 21, 2021 at 11:15:04AM -0500, Igor Mammedov wrote:
> Add documentation for '-machine memory-backend' CLI option and
> how to use it.
>
> And document that x-use-canonical-path-for-ramblock-id,
> is considered to be stable to make sure it won't go away by accident.
>
> x- was intended for unstable/iternal properties, and not supposed to
> be stable option. However it's too late to rename (drop x-)
> it as it would mean that users will have to mantain both
> x-use-canonical-path-for-ramblock-id (for QEMU 5.0-5.2) versions
> and prefix-less for later versions.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> v2:
> - add doc that x-use-canonical-path-for-ramblock-id is considered stable,
> (Peter Krempa <pkrempa@redhat.com>)
> v3:
> - s/x-use-canonical-path-for-ramblock-id=on/x-use-canonical-path-for-ramblock-id=off/
> (Michal Privoznik <mprivozn@redhat.com>)
> - add to commit message why x- prefix is preserved
> - drop clause about x-use-canonical-path-for-ramblock-id being stable
> from help section, but keep it in code comment above
> x-use-canonical-path-for-ramblock-id property. It's sufficient
> to prevent option being changed/removed by accident.
> (Peter Maydell <peter.maydell@linaro.org>)
> ---
> backends/hostmem.c | 10 ++++++++++
> qemu-options.hx | 26 +++++++++++++++++++++++++-
> 2 files changed, 35 insertions(+), 1 deletion(-)
>
> diff --git a/backends/hostmem.c b/backends/hostmem.c
> index 9f9ac95edd..813aeb83c9 100644
> --- a/backends/hostmem.c
> +++ b/backends/hostmem.c
> @@ -498,6 +498,16 @@ host_memory_backend_class_init(ObjectClass *oc, void *data)
> host_memory_backend_get_share, host_memory_backend_set_share);
> object_class_property_set_description(oc, "share",
> "Mark the memory as private to QEMU or shared");
> + /*
> + * Do not delete/rename option. This option must be considered stable
> + * (as if it didn't have the 'x-' prefix including deprecation period) as
> + * long as 4.0 and older machine types exists.
> + * Option will be used by upper layers to override (disable) canonical path
> + * for ramblock-id set by compat properties on old machine types ( <= 4.0),
> + * to keep migration working when backend is used for main RAM with
> + * -machine memory-backend= option (main RAM historically used prefix-less
> + * ramblock-id).
> + */
> object_class_property_add_bool(oc, "x-use-canonical-path-for-ramblock-id",
> host_memory_backend_get_use_canonical_path,
> host_memory_backend_set_use_canonical_path);
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 62791f56d8..059b1a1d14 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -35,7 +35,8 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
> " suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
> " nvdimm=on|off controls NVDIMM support (default=off)\n"
> " memory-encryption=@var{} memory encryption object to use (default=none)\n"
> - " hmat=on|off controls ACPI HMAT support (default=off)\n",
> + " hmat=on|off controls ACPI HMAT support (default=off)\n"
> + " memory-backend='backend-id' specifies explicitly provided backend for main RAM (default=none)\n",
> QEMU_ARCH_ALL)
> SRST
> ``-machine [type=]name[,prop=value[,...]]``
> @@ -96,6 +97,29 @@ SRST
> ``hmat=on|off``
> Enables or disables ACPI Heterogeneous Memory Attribute Table
> (HMAT) support. The default is off.
> +
> + ``memory-backend='id'``
> + An alternative to legacy ``-mem-path`` and ``mem-prealloc`` options.
> + Allows to use a memory backend as main RAM.
> +
> + For example:
> + ::
> + -object memory-backend-file,id=pc.ram,size=512M,mem-path=/hugetlbfs,prealloc=on,share=on
> + -machine memory-backend=pc.ram
> + -m 512M
> +
> + Migration compatibility note:
> + a) as backend id one shall use value of 'default-ram-id', advertised by
> + machine type (available via ``query-machines`` QMP command), if migration
> + to/from old QEMU (<5.0) is expected.
> + b) for machine types 4.0 and older, user shall
> + use ``x-use-canonical-path-for-ramblock-id=off`` backend option
> + if migration to/from old QEMU (<5.0) is expected.
How does a mgmt app know which machine types need to use this
option ? The machine type names are opaque strings, and apps
must not attempt to parse or interpret the version number
inside the machine type name, as they can be changed by
distros. IOW, saying to use it for machine types 4.0 and
older isn't a valid usage strategy IMHO.
> + For example:
> + ::
> + -object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off
> + -machine memory-backend=pc.ram
> + -m 512M
> ERST
>
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2021-01-27 10:46 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-21 16:15 [PATCH v3] machine: add missing doc for memory-backend option Igor Mammedov
2021-01-27 10:40 ` Michal Privoznik
2021-01-27 10:45 ` Daniel P. Berrangé [this message]
2021-01-27 10:54 ` Daniel P. Berrangé
2021-01-27 14:24 ` Michal Privoznik
2021-01-27 15:09 ` Daniel P. Berrangé
2021-01-27 15:35 ` Igor Mammedov
2021-01-27 17:03 ` Michal Privoznik
2021-01-27 19:31 ` Igor Mammedov
2021-01-27 17:56 ` Daniel P. Berrangé
2021-01-27 18:30 ` Michal Privoznik
2021-01-27 18:41 ` Daniel P. Berrangé
2021-01-27 19:19 ` Igor Mammedov
2021-02-04 12:21 ` Michal Privoznik
2021-02-05 15:56 ` Igor Mammedov
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=20210127104511.GF3653144@redhat.com \
--to=berrange@redhat.com \
--cc=imammedo@redhat.com \
--cc=mprivozn@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pkrempa@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).