summaryrefslogtreecommitdiffstats
path: root/hw
diff options
context:
space:
mode:
Diffstat (limited to 'hw')
-rw-r--r--hw/acpi/nvdimm.c4
-rw-r--r--hw/i386/pc.c35
-rw-r--r--hw/i386/pc_piix.c1
-rw-r--r--hw/i386/pc_q35.c1
4 files changed, 19 insertions, 22 deletions
diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
index 87e4280c71..27eeb6609f 100644
--- a/hw/acpi/nvdimm.c
+++ b/hw/acpi/nvdimm.c
@@ -404,8 +404,8 @@ static GArray *nvdimm_build_device_structure(AcpiNVDIMMState *state)
}
g_slist_free(device_list);
- if (state->capabilities) {
- nvdimm_build_structure_caps(structures, state->capabilities);
+ if (state->persistence) {
+ nvdimm_build_structure_caps(structures, state->persistence);
}
return structures;
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index f3befe6721..5bba9dcf5a 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -2181,31 +2181,30 @@ static void pc_machine_set_nvdimm(Object *obj, bool value, Error **errp)
pcms->acpi_nvdimm_state.is_enabled = value;
}
-static void pc_machine_get_nvdimm_capabilities(Object *obj, Visitor *v,
- const char *name, void *opaque,
- Error **errp)
+static char *pc_machine_get_nvdimm_persistence(Object *obj, Error **errp)
{
PCMachineState *pcms = PC_MACHINE(obj);
- uint32_t value = pcms->acpi_nvdimm_state.capabilities;
- visit_type_uint32(v, name, &value, errp);
+ return g_strdup(pcms->acpi_nvdimm_state.persistence_string);
}
-static void pc_machine_set_nvdimm_capabilities(Object *obj, Visitor *v,
- const char *name, void *opaque,
+static void pc_machine_set_nvdimm_persistence(Object *obj, const char *value,
Error **errp)
{
PCMachineState *pcms = PC_MACHINE(obj);
- Error *error = NULL;
- uint32_t value;
-
- visit_type_uint32(v, name, &value, &error);
- if (error) {
- error_propagate(errp, error);
- return;
+ AcpiNVDIMMState *nvdimm_state = &pcms->acpi_nvdimm_state;
+
+ if (strcmp(value, "cpu") == 0)
+ nvdimm_state->persistence = 3;
+ else if (strcmp(value, "mem-ctrl") == 0)
+ nvdimm_state->persistence = 2;
+ else {
+ error_report("-machine nvdimm-persistence=%s: unsupported option", value);
+ exit(EXIT_FAILURE);
}
- pcms->acpi_nvdimm_state.capabilities = value;
+ g_free(nvdimm_state->persistence_string);
+ nvdimm_state->persistence_string = g_strdup(value);
}
static bool pc_machine_get_smbus(Object *obj, Error **errp)
@@ -2421,9 +2420,9 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
object_class_property_add_bool(oc, PC_MACHINE_NVDIMM,
pc_machine_get_nvdimm, pc_machine_set_nvdimm, &error_abort);
- object_class_property_add(oc, PC_MACHINE_NVDIMM_CAP, "uint32",
- pc_machine_get_nvdimm_capabilities,
- pc_machine_set_nvdimm_capabilities, NULL, NULL, &error_abort);
+ object_class_property_add_str(oc, PC_MACHINE_NVDIMM_PERSIST,
+ pc_machine_get_nvdimm_persistence,
+ pc_machine_set_nvdimm_persistence, &error_abort);
object_class_property_add_bool(oc, PC_MACHINE_SMBUS,
pc_machine_get_smbus, pc_machine_set_smbus, &error_abort);
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 3d81136065..b4c5b03274 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -430,7 +430,6 @@ static void pc_i440fx_3_0_machine_options(MachineClass *m)
pc_i440fx_machine_options(m);
m->alias = "pc";
m->is_default = 1;
- SET_MACHINE_COMPAT(m, PC_COMPAT_2_12);
}
DEFINE_I440FX_MACHINE(v3_0, "pc-i440fx-3.0", NULL,
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index b60cbb9266..83d6d75efa 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -312,7 +312,6 @@ static void pc_q35_3_0_machine_options(MachineClass *m)
{
pc_q35_machine_options(m);
m->alias = "q35";
- SET_MACHINE_COMPAT(m, PC_COMPAT_2_12);
}
DEFINE_Q35_MACHINE(v3_0, "pc-q35-3.0", NULL,