mirror of https://gitee.com/openkylin/qemu.git
machine + memory backend queue, 2016-10-17
-----BEGIN PGP SIGNATURE----- iQIcBAABCAAGBQJYBRBxAAoJECgHk2+YTcWmqJUP/jxU8+eXtUpr5rl5zAzW0XGj qLyLJC/wl8k4mO2wLGF6Tn/K8s2rA2qMT7Y5UTArmo6SD8nM2prW22cVozFcbmO2 x7iHj7CW/atO8ZWKdGRzvacXNTFxcKS0zBH6YkBkT9A5va0euxSb+etTvBDBILli 4zuKCpSz4046Q4dN+kCkJCmBJFepTfm0eV3czxI+2OIQsWM5Y+zqgnm9rQdC4wFK YLe0XqFkYxLOmmESAJfVaEC3o0/vv93uqvfWjrI4dH/WUARgpVKBIfGiBpIgPpmX GKCB01hHFyXkdtWPKtDqytCc7DxBGHiSELetqBIlUM4k21yGe9DYd2QF2BBGYoTA q3cumzZFukfL/p+hUYTbx/3YOoT3BES74ZjsTRoPLmOjfY0p2KXrhM8qgmDQ56vB KzQZFDyHpxdC1aEs8/DBYKVrfDqwEbd32SUi1OXU24SpFT+LptBHNUv9e2HjeT0F YdddCHMEC1qJQmdJ6pvucFba+2KNHtt1iGemiTVlqvIWHcWj8AXegAvLWMi4Uisr OLGKP9W3wZW5aoTw+EcJcsoHZ2j+LgruG5kxByJrg9wltM+NQuOJRWvHz/qAj0k8 xA2gMmU5cL0rOzeFzHXLYB7LnB8eCMrYK68v6fwRI2EU6Zd4O9zU5O0S4mTICnkJ q9ptpaXIV7Xa6VLciTGV =HXCw -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/ehabkost/tags/machine-pull-request' into staging machine + memory backend queue, 2016-10-17 # gpg: Signature made Mon 17 Oct 2016 18:54:57 BST # gpg: using RSA key 0x2807936F984DC5A6 # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>" # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF D1AA 2807 936F 984D C5A6 * remotes/ehabkost/tags/machine-pull-request: hostmem-file: Register TYPE_MEMORY_BACKEND_FILE properties as class properties hostmem: Register TYPE_MEMORY_BACKEND properties as class properties pc: Register TYPE_PC_MACHINE properties as class properties machine: Register TYPE_MACHINE properties as class properties machine: Fix replacement of '_' by '-' in machine property names Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
f525c8a6cb
|
@ -64,14 +64,6 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
file_backend_class_init(ObjectClass *oc, void *data)
|
|
||||||
{
|
|
||||||
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc);
|
|
||||||
|
|
||||||
bc->alloc = file_backend_memory_alloc;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *get_mem_path(Object *o, Error **errp)
|
static char *get_mem_path(Object *o, Error **errp)
|
||||||
{
|
{
|
||||||
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
|
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
|
||||||
|
@ -112,13 +104,18 @@ static void file_memory_backend_set_share(Object *o, bool value, Error **errp)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
file_backend_instance_init(Object *o)
|
file_backend_class_init(ObjectClass *oc, void *data)
|
||||||
{
|
{
|
||||||
object_property_add_bool(o, "share",
|
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc);
|
||||||
file_memory_backend_get_share,
|
|
||||||
file_memory_backend_set_share, NULL);
|
bc->alloc = file_backend_memory_alloc;
|
||||||
object_property_add_str(o, "mem-path", get_mem_path,
|
|
||||||
set_mem_path, NULL);
|
object_class_property_add_bool(oc, "share",
|
||||||
|
file_memory_backend_get_share, file_memory_backend_set_share,
|
||||||
|
&error_abort);
|
||||||
|
object_class_property_add_str(oc, "mem-path",
|
||||||
|
get_mem_path, set_mem_path,
|
||||||
|
&error_abort);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void file_backend_instance_finalize(Object *o)
|
static void file_backend_instance_finalize(Object *o)
|
||||||
|
@ -132,7 +129,6 @@ static const TypeInfo file_backend_info = {
|
||||||
.name = TYPE_MEMORY_BACKEND_FILE,
|
.name = TYPE_MEMORY_BACKEND_FILE,
|
||||||
.parent = TYPE_MEMORY_BACKEND,
|
.parent = TYPE_MEMORY_BACKEND,
|
||||||
.class_init = file_backend_class_init,
|
.class_init = file_backend_class_init,
|
||||||
.instance_init = file_backend_instance_init,
|
|
||||||
.instance_finalize = file_backend_instance_finalize,
|
.instance_finalize = file_backend_instance_finalize,
|
||||||
.instance_size = sizeof(HostMemoryBackendFile),
|
.instance_size = sizeof(HostMemoryBackendFile),
|
||||||
};
|
};
|
||||||
|
|
|
@ -241,26 +241,6 @@ static void host_memory_backend_init(Object *obj)
|
||||||
backend->merge = machine_mem_merge(machine);
|
backend->merge = machine_mem_merge(machine);
|
||||||
backend->dump = machine_dump_guest_core(machine);
|
backend->dump = machine_dump_guest_core(machine);
|
||||||
backend->prealloc = mem_prealloc;
|
backend->prealloc = mem_prealloc;
|
||||||
|
|
||||||
object_property_add_bool(obj, "merge",
|
|
||||||
host_memory_backend_get_merge,
|
|
||||||
host_memory_backend_set_merge, NULL);
|
|
||||||
object_property_add_bool(obj, "dump",
|
|
||||||
host_memory_backend_get_dump,
|
|
||||||
host_memory_backend_set_dump, NULL);
|
|
||||||
object_property_add_bool(obj, "prealloc",
|
|
||||||
host_memory_backend_get_prealloc,
|
|
||||||
host_memory_backend_set_prealloc, NULL);
|
|
||||||
object_property_add(obj, "size", "int",
|
|
||||||
host_memory_backend_get_size,
|
|
||||||
host_memory_backend_set_size, NULL, NULL, NULL);
|
|
||||||
object_property_add(obj, "host-nodes", "int",
|
|
||||||
host_memory_backend_get_host_nodes,
|
|
||||||
host_memory_backend_set_host_nodes, NULL, NULL, NULL);
|
|
||||||
object_property_add_enum(obj, "policy", "HostMemPolicy",
|
|
||||||
HostMemPolicy_lookup,
|
|
||||||
host_memory_backend_get_policy,
|
|
||||||
host_memory_backend_set_policy, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MemoryRegion *
|
MemoryRegion *
|
||||||
|
@ -375,6 +355,28 @@ host_memory_backend_class_init(ObjectClass *oc, void *data)
|
||||||
|
|
||||||
ucc->complete = host_memory_backend_memory_complete;
|
ucc->complete = host_memory_backend_memory_complete;
|
||||||
ucc->can_be_deleted = host_memory_backend_can_be_deleted;
|
ucc->can_be_deleted = host_memory_backend_can_be_deleted;
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "merge",
|
||||||
|
host_memory_backend_get_merge,
|
||||||
|
host_memory_backend_set_merge, &error_abort);
|
||||||
|
object_class_property_add_bool(oc, "dump",
|
||||||
|
host_memory_backend_get_dump,
|
||||||
|
host_memory_backend_set_dump, &error_abort);
|
||||||
|
object_class_property_add_bool(oc, "prealloc",
|
||||||
|
host_memory_backend_get_prealloc,
|
||||||
|
host_memory_backend_set_prealloc, &error_abort);
|
||||||
|
object_class_property_add(oc, "size", "int",
|
||||||
|
host_memory_backend_get_size,
|
||||||
|
host_memory_backend_set_size,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
object_class_property_add(oc, "host-nodes", "int",
|
||||||
|
host_memory_backend_get_host_nodes,
|
||||||
|
host_memory_backend_set_host_nodes,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
object_class_property_add_enum(oc, "policy", "HostMemPolicy",
|
||||||
|
HostMemPolicy_lookup,
|
||||||
|
host_memory_backend_get_policy,
|
||||||
|
host_memory_backend_set_policy, &error_abort);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo host_memory_backend_info = {
|
static const TypeInfo host_memory_backend_info = {
|
||||||
|
|
|
@ -364,6 +364,104 @@ static void machine_class_init(ObjectClass *oc, void *data)
|
||||||
/* Default 128 MB as guest ram size */
|
/* Default 128 MB as guest ram size */
|
||||||
mc->default_ram_size = 128 * M_BYTE;
|
mc->default_ram_size = 128 * M_BYTE;
|
||||||
mc->rom_file_has_mr = true;
|
mc->rom_file_has_mr = true;
|
||||||
|
|
||||||
|
object_class_property_add_str(oc, "accel",
|
||||||
|
machine_get_accel, machine_set_accel, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "accel",
|
||||||
|
"Accelerator list", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add(oc, "kernel-irqchip", "OnOffSplit",
|
||||||
|
NULL, machine_set_kernel_irqchip,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "kernel-irqchip",
|
||||||
|
"Configure KVM in-kernel irqchip", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add(oc, "kvm-shadow-mem", "int",
|
||||||
|
machine_get_kvm_shadow_mem, machine_set_kvm_shadow_mem,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "kvm-shadow-mem",
|
||||||
|
"KVM shadow MMU size", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_str(oc, "kernel",
|
||||||
|
machine_get_kernel, machine_set_kernel, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "kernel",
|
||||||
|
"Linux kernel image file", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_str(oc, "initrd",
|
||||||
|
machine_get_initrd, machine_set_initrd, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "initrd",
|
||||||
|
"Linux initial ramdisk file", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_str(oc, "append",
|
||||||
|
machine_get_append, machine_set_append, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "append",
|
||||||
|
"Linux kernel command line", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_str(oc, "dtb",
|
||||||
|
machine_get_dtb, machine_set_dtb, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "dtb",
|
||||||
|
"Linux kernel device tree file", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_str(oc, "dumpdtb",
|
||||||
|
machine_get_dumpdtb, machine_set_dumpdtb, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "dumpdtb",
|
||||||
|
"Dump current dtb to a file and quit", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add(oc, "phandle-start", "int",
|
||||||
|
machine_get_phandle_start, machine_set_phandle_start,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "phandle-start",
|
||||||
|
"The first phandle ID we may generate dynamically", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_str(oc, "dt-compatible",
|
||||||
|
machine_get_dt_compatible, machine_set_dt_compatible, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "dt-compatible",
|
||||||
|
"Overrides the \"compatible\" property of the dt root node",
|
||||||
|
&error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "dump-guest-core",
|
||||||
|
machine_get_dump_guest_core, machine_set_dump_guest_core, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "dump-guest-core",
|
||||||
|
"Include guest memory in a core dump", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "mem-merge",
|
||||||
|
machine_get_mem_merge, machine_set_mem_merge, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "mem-merge",
|
||||||
|
"Enable/disable memory merge support", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "usb",
|
||||||
|
machine_get_usb, machine_set_usb, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "usb",
|
||||||
|
"Set on/off to enable/disable usb", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "graphics",
|
||||||
|
machine_get_graphics, machine_set_graphics, &error_abort);
|
||||||
|
object_class_property_set_description(oc, "graphics",
|
||||||
|
"Set on/off to enable/disable graphics emulation", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "igd-passthru",
|
||||||
|
machine_get_igd_gfx_passthru, machine_set_igd_gfx_passthru,
|
||||||
|
&error_abort);
|
||||||
|
object_class_property_set_description(oc, "igd-passthru",
|
||||||
|
"Set on/off to enable/disable igd passthrou", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_str(oc, "firmware",
|
||||||
|
machine_get_firmware, machine_set_firmware,
|
||||||
|
&error_abort);
|
||||||
|
object_class_property_set_description(oc, "firmware",
|
||||||
|
"Firmware image", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "suppress-vmdesc",
|
||||||
|
machine_get_suppress_vmdesc, machine_set_suppress_vmdesc,
|
||||||
|
&error_abort);
|
||||||
|
object_class_property_set_description(oc, "suppress-vmdesc",
|
||||||
|
"Set on to disable self-describing migration", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, "enforce-config-section",
|
||||||
|
machine_get_enforce_config_section, machine_set_enforce_config_section,
|
||||||
|
&error_abort);
|
||||||
|
object_class_property_set_description(oc, "enforce-config-section",
|
||||||
|
"Set on to enforce configuration section migration", &error_abort);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void machine_class_base_init(ObjectClass *oc, void *data)
|
static void machine_class_base_init(ObjectClass *oc, void *data)
|
||||||
|
@ -387,114 +485,6 @@ static void machine_initfn(Object *obj)
|
||||||
ms->mem_merge = true;
|
ms->mem_merge = true;
|
||||||
ms->enable_graphics = true;
|
ms->enable_graphics = true;
|
||||||
|
|
||||||
object_property_add_str(obj, "accel",
|
|
||||||
machine_get_accel, machine_set_accel, NULL);
|
|
||||||
object_property_set_description(obj, "accel",
|
|
||||||
"Accelerator list",
|
|
||||||
NULL);
|
|
||||||
object_property_add(obj, "kernel-irqchip", "OnOffSplit",
|
|
||||||
NULL,
|
|
||||||
machine_set_kernel_irqchip,
|
|
||||||
NULL, NULL, NULL);
|
|
||||||
object_property_set_description(obj, "kernel-irqchip",
|
|
||||||
"Configure KVM in-kernel irqchip",
|
|
||||||
NULL);
|
|
||||||
object_property_add(obj, "kvm-shadow-mem", "int",
|
|
||||||
machine_get_kvm_shadow_mem,
|
|
||||||
machine_set_kvm_shadow_mem,
|
|
||||||
NULL, NULL, NULL);
|
|
||||||
object_property_set_description(obj, "kvm-shadow-mem",
|
|
||||||
"KVM shadow MMU size",
|
|
||||||
NULL);
|
|
||||||
object_property_add_str(obj, "kernel",
|
|
||||||
machine_get_kernel, machine_set_kernel, NULL);
|
|
||||||
object_property_set_description(obj, "kernel",
|
|
||||||
"Linux kernel image file",
|
|
||||||
NULL);
|
|
||||||
object_property_add_str(obj, "initrd",
|
|
||||||
machine_get_initrd, machine_set_initrd, NULL);
|
|
||||||
object_property_set_description(obj, "initrd",
|
|
||||||
"Linux initial ramdisk file",
|
|
||||||
NULL);
|
|
||||||
object_property_add_str(obj, "append",
|
|
||||||
machine_get_append, machine_set_append, NULL);
|
|
||||||
object_property_set_description(obj, "append",
|
|
||||||
"Linux kernel command line",
|
|
||||||
NULL);
|
|
||||||
object_property_add_str(obj, "dtb",
|
|
||||||
machine_get_dtb, machine_set_dtb, NULL);
|
|
||||||
object_property_set_description(obj, "dtb",
|
|
||||||
"Linux kernel device tree file",
|
|
||||||
NULL);
|
|
||||||
object_property_add_str(obj, "dumpdtb",
|
|
||||||
machine_get_dumpdtb, machine_set_dumpdtb, NULL);
|
|
||||||
object_property_set_description(obj, "dumpdtb",
|
|
||||||
"Dump current dtb to a file and quit",
|
|
||||||
NULL);
|
|
||||||
object_property_add(obj, "phandle-start", "int",
|
|
||||||
machine_get_phandle_start,
|
|
||||||
machine_set_phandle_start,
|
|
||||||
NULL, NULL, NULL);
|
|
||||||
object_property_set_description(obj, "phandle-start",
|
|
||||||
"The first phandle ID we may generate dynamically",
|
|
||||||
NULL);
|
|
||||||
object_property_add_str(obj, "dt-compatible",
|
|
||||||
machine_get_dt_compatible,
|
|
||||||
machine_set_dt_compatible,
|
|
||||||
NULL);
|
|
||||||
object_property_set_description(obj, "dt-compatible",
|
|
||||||
"Overrides the \"compatible\" property of the dt root node",
|
|
||||||
NULL);
|
|
||||||
object_property_add_bool(obj, "dump-guest-core",
|
|
||||||
machine_get_dump_guest_core,
|
|
||||||
machine_set_dump_guest_core,
|
|
||||||
NULL);
|
|
||||||
object_property_set_description(obj, "dump-guest-core",
|
|
||||||
"Include guest memory in a core dump",
|
|
||||||
NULL);
|
|
||||||
object_property_add_bool(obj, "mem-merge",
|
|
||||||
machine_get_mem_merge,
|
|
||||||
machine_set_mem_merge, NULL);
|
|
||||||
object_property_set_description(obj, "mem-merge",
|
|
||||||
"Enable/disable memory merge support",
|
|
||||||
NULL);
|
|
||||||
object_property_add_bool(obj, "usb",
|
|
||||||
machine_get_usb,
|
|
||||||
machine_set_usb, NULL);
|
|
||||||
object_property_set_description(obj, "usb",
|
|
||||||
"Set on/off to enable/disable usb",
|
|
||||||
NULL);
|
|
||||||
object_property_add_bool(obj, "graphics",
|
|
||||||
machine_get_graphics,
|
|
||||||
machine_set_graphics, NULL);
|
|
||||||
object_property_set_description(obj, "graphics",
|
|
||||||
"Set on/off to enable/disable graphics emulation",
|
|
||||||
NULL);
|
|
||||||
object_property_add_bool(obj, "igd-passthru",
|
|
||||||
machine_get_igd_gfx_passthru,
|
|
||||||
machine_set_igd_gfx_passthru, NULL);
|
|
||||||
object_property_set_description(obj, "igd-passthru",
|
|
||||||
"Set on/off to enable/disable igd passthrou",
|
|
||||||
NULL);
|
|
||||||
object_property_add_str(obj, "firmware",
|
|
||||||
machine_get_firmware,
|
|
||||||
machine_set_firmware, NULL);
|
|
||||||
object_property_set_description(obj, "firmware",
|
|
||||||
"Firmware image",
|
|
||||||
NULL);
|
|
||||||
object_property_add_bool(obj, "suppress-vmdesc",
|
|
||||||
machine_get_suppress_vmdesc,
|
|
||||||
machine_set_suppress_vmdesc, NULL);
|
|
||||||
object_property_set_description(obj, "suppress-vmdesc",
|
|
||||||
"Set on to disable self-describing migration",
|
|
||||||
NULL);
|
|
||||||
object_property_add_bool(obj, "enforce-config-section",
|
|
||||||
machine_get_enforce_config_section,
|
|
||||||
machine_set_enforce_config_section, NULL);
|
|
||||||
object_property_set_description(obj, "enforce-config-section",
|
|
||||||
"Set on to enforce configuration section migration",
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
/* Register notifier when init is done for sysbus sanity checks */
|
/* Register notifier when init is done for sysbus sanity checks */
|
||||||
ms->sysbus_notifier.notify = machine_init_notify;
|
ms->sysbus_notifier.notify = machine_init_notify;
|
||||||
qemu_add_machine_init_done_notifier(&ms->sysbus_notifier);
|
qemu_add_machine_init_done_notifier(&ms->sysbus_notifier);
|
||||||
|
|
56
hw/i386/pc.c
56
hw/i386/pc.c
|
@ -2134,41 +2134,11 @@ static void pc_machine_initfn(Object *obj)
|
||||||
{
|
{
|
||||||
PCMachineState *pcms = PC_MACHINE(obj);
|
PCMachineState *pcms = PC_MACHINE(obj);
|
||||||
|
|
||||||
object_property_add(obj, PC_MACHINE_MEMHP_REGION_SIZE, "int",
|
|
||||||
pc_machine_get_hotplug_memory_region_size,
|
|
||||||
NULL, NULL, NULL, &error_abort);
|
|
||||||
|
|
||||||
pcms->max_ram_below_4g = 0; /* use default */
|
pcms->max_ram_below_4g = 0; /* use default */
|
||||||
object_property_add(obj, PC_MACHINE_MAX_RAM_BELOW_4G, "size",
|
|
||||||
pc_machine_get_max_ram_below_4g,
|
|
||||||
pc_machine_set_max_ram_below_4g,
|
|
||||||
NULL, NULL, &error_abort);
|
|
||||||
object_property_set_description(obj, PC_MACHINE_MAX_RAM_BELOW_4G,
|
|
||||||
"Maximum ram below the 4G boundary (32bit boundary)",
|
|
||||||
&error_abort);
|
|
||||||
|
|
||||||
pcms->smm = ON_OFF_AUTO_AUTO;
|
pcms->smm = ON_OFF_AUTO_AUTO;
|
||||||
object_property_add(obj, PC_MACHINE_SMM, "OnOffAuto",
|
|
||||||
pc_machine_get_smm,
|
|
||||||
pc_machine_set_smm,
|
|
||||||
NULL, NULL, &error_abort);
|
|
||||||
object_property_set_description(obj, PC_MACHINE_SMM,
|
|
||||||
"Enable SMM (pc & q35)",
|
|
||||||
&error_abort);
|
|
||||||
|
|
||||||
pcms->vmport = ON_OFF_AUTO_AUTO;
|
pcms->vmport = ON_OFF_AUTO_AUTO;
|
||||||
object_property_add(obj, PC_MACHINE_VMPORT, "OnOffAuto",
|
|
||||||
pc_machine_get_vmport,
|
|
||||||
pc_machine_set_vmport,
|
|
||||||
NULL, NULL, &error_abort);
|
|
||||||
object_property_set_description(obj, PC_MACHINE_VMPORT,
|
|
||||||
"Enable vmport (pc & q35)",
|
|
||||||
&error_abort);
|
|
||||||
|
|
||||||
/* nvdimm is disabled on default. */
|
/* nvdimm is disabled on default. */
|
||||||
pcms->acpi_nvdimm_state.is_enabled = false;
|
pcms->acpi_nvdimm_state.is_enabled = false;
|
||||||
object_property_add_bool(obj, PC_MACHINE_NVDIMM, pc_machine_get_nvdimm,
|
|
||||||
pc_machine_set_nvdimm, &error_abort);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pc_machine_reset(void)
|
static void pc_machine_reset(void)
|
||||||
|
@ -2303,6 +2273,32 @@ static void pc_machine_class_init(ObjectClass *oc, void *data)
|
||||||
hc->unplug_request = pc_machine_device_unplug_request_cb;
|
hc->unplug_request = pc_machine_device_unplug_request_cb;
|
||||||
hc->unplug = pc_machine_device_unplug_cb;
|
hc->unplug = pc_machine_device_unplug_cb;
|
||||||
nc->nmi_monitor_handler = x86_nmi;
|
nc->nmi_monitor_handler = x86_nmi;
|
||||||
|
|
||||||
|
object_class_property_add(oc, PC_MACHINE_MEMHP_REGION_SIZE, "int",
|
||||||
|
pc_machine_get_hotplug_memory_region_size, NULL,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add(oc, PC_MACHINE_MAX_RAM_BELOW_4G, "size",
|
||||||
|
pc_machine_get_max_ram_below_4g, pc_machine_set_max_ram_below_4g,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
|
||||||
|
object_class_property_set_description(oc, PC_MACHINE_MAX_RAM_BELOW_4G,
|
||||||
|
"Maximum ram below the 4G boundary (32bit boundary)", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add(oc, PC_MACHINE_SMM, "OnOffAuto",
|
||||||
|
pc_machine_get_smm, pc_machine_set_smm,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
object_class_property_set_description(oc, PC_MACHINE_SMM,
|
||||||
|
"Enable SMM (pc & q35)", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add(oc, PC_MACHINE_VMPORT, "OnOffAuto",
|
||||||
|
pc_machine_get_vmport, pc_machine_set_vmport,
|
||||||
|
NULL, NULL, &error_abort);
|
||||||
|
object_class_property_set_description(oc, PC_MACHINE_VMPORT,
|
||||||
|
"Enable vmport (pc & q35)", &error_abort);
|
||||||
|
|
||||||
|
object_class_property_add_bool(oc, PC_MACHINE_NVDIMM,
|
||||||
|
pc_machine_get_nvdimm, pc_machine_set_nvdimm, &error_abort);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo pc_machine_info = {
|
static const TypeInfo pc_machine_info = {
|
||||||
|
|
9
vl.c
9
vl.c
|
@ -2804,17 +2804,16 @@ static int machine_set_property(void *opaque,
|
||||||
{
|
{
|
||||||
Object *obj = OBJECT(opaque);
|
Object *obj = OBJECT(opaque);
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
char *c, *qom_name;
|
char *p, *qom_name;
|
||||||
|
|
||||||
if (strcmp(name, "type") == 0) {
|
if (strcmp(name, "type") == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
qom_name = g_strdup(name);
|
qom_name = g_strdup(name);
|
||||||
c = qom_name;
|
for (p = qom_name; *p; p++) {
|
||||||
while (*c++) {
|
if (*p == '_') {
|
||||||
if (*c == '_') {
|
*p = '-';
|
||||||
*c = '-';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue