[PATCH 09/15] machine: record whether nvdimm= was set

Paolo Bonzini posted 15 patches 5 years, 2 months ago
Maintainers: "Daniel P. Berrangé" <berrange@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, Michael Roth <mdroth@linux.vnet.ibm.com>, Eduardo Habkost <ehabkost@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>, Palmer Dabbelt <palmer@dabbelt.com>, "Michael S. Tsirkin" <mst@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Eric Blake <eblake@redhat.com>, Alistair Francis <Alistair.Francis@wdc.com>, Chris Wulff <crwulff@gmail.com>, Laurent Vivier <laurent@vivier.eu>, Marek Vasut <marex@denx.de>, Richard Henderson <richard.henderson@linaro.org>, Bastian Koppelmann <kbastian@mail.uni-paderborn.de>, Thomas Huth <thuth@redhat.com>, "Edgar E. Iglesias" <edgar.iglesias@gmail.com>, "Alex Bennée" <alex.bennee@linaro.org>, Sagar Karandikar <sagark@eecs.berkeley.edu>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Eric Auger <eric.auger@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Markus Armbruster <armbru@redhat.com>, David Gibson <david@gibson.dropbear.id.au>, Xiao Guangrong <xiaoguangrong.eric@gmail.com>, Max Filippov <jcmvbkbc@gmail.com>
[PATCH 09/15] machine: record whether nvdimm= was set
Posted by Paolo Bonzini 5 years, 2 months ago
This is needed for SPAPR which has different defaults than everyone else.
Right now it looks at the -machine QemuOpts, but those will go away.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/core/machine.c       | 1 +
 include/hw/mem/nvdimm.h | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index 2c0bc15143..94992fa1c0 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -455,6 +455,7 @@ static void machine_set_nvdimm(Object *obj, bool value, Error **errp)
 {
     MachineState *ms = MACHINE(obj);
 
+    ms->nvdimms_state->has_is_enabled = true;
     ms->nvdimms_state->is_enabled = value;
 }
 
diff --git a/include/hw/mem/nvdimm.h b/include/hw/mem/nvdimm.h
index c699842dd0..14c101c180 100644
--- a/include/hw/mem/nvdimm.h
+++ b/include/hw/mem/nvdimm.h
@@ -129,7 +129,7 @@ typedef struct NvdimmFitBuffer NvdimmFitBuffer;
 
 struct NVDIMMState {
     /* detect if NVDIMM support is enabled. */
-    bool is_enabled;
+    bool has_is_enabled, is_enabled;
 
     /* the data of the fw_cfg file NVDIMM_DSM_MEM_FILE. */
     GArray *dsm_mem;
-- 
2.26.2



Re: [PATCH 09/15] machine: record whether nvdimm= was set
Posted by Igor Mammedov 5 years, 2 months ago
On Wed,  2 Dec 2020 03:18:48 -0500
Paolo Bonzini <pbonzini@redhat.com> wrote:

> This is needed for SPAPR which has different defaults than everyone else.
> Right now it looks at the -machine QemuOpts, but those will go away.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  hw/core/machine.c       | 1 +
>  include/hw/mem/nvdimm.h | 2 +-
>  2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/core/machine.c b/hw/core/machine.c
> index 2c0bc15143..94992fa1c0 100644
> --- a/hw/core/machine.c
> +++ b/hw/core/machine.c
> @@ -455,6 +455,7 @@ static void machine_set_nvdimm(Object *obj, bool value, Error **errp)
>  {
>      MachineState *ms = MACHINE(obj);
>  
> +    ms->nvdimms_state->has_is_enabled = true;
naming looks like QAPI style we use for optional fields, it might be confusing.

maybe something like "user_set_is_enabled" would be better?

(sometimes I wish for QOM properties to have 'set' flag, so we can distinguish
if value is a default one or were set later on)

>      ms->nvdimms_state->is_enabled = value;
>  }
>  
> diff --git a/include/hw/mem/nvdimm.h b/include/hw/mem/nvdimm.h
> index c699842dd0..14c101c180 100644
> --- a/include/hw/mem/nvdimm.h
> +++ b/include/hw/mem/nvdimm.h
> @@ -129,7 +129,7 @@ typedef struct NvdimmFitBuffer NvdimmFitBuffer;
>  
>  struct NVDIMMState {
>      /* detect if NVDIMM support is enabled. */
> -    bool is_enabled;
> +    bool has_is_enabled, is_enabled;
>  
>      /* the data of the fw_cfg file NVDIMM_DSM_MEM_FILE. */
>      GArray *dsm_mem;