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
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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
|
||||
file_backend_instance_init(Object *o)
|
||||
file_backend_class_init(ObjectClass *oc, void *data)
|
||||
{
|
||||
object_property_add_bool(o, "share",
|
||||
file_memory_backend_get_share,
|
||||
file_memory_backend_set_share, NULL);
|
||||
object_property_add_str(o, "mem-path", get_mem_path,
|
||||
set_mem_path, NULL);
|
||||
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc);
|
||||
|
||||
bc->alloc = file_backend_memory_alloc;
|
||||
|
||||
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)
|
||||
|
@ -132,7 +129,6 @@ static const TypeInfo file_backend_info = {
|
|||
.name = TYPE_MEMORY_BACKEND_FILE,
|
||||
.parent = TYPE_MEMORY_BACKEND,
|
||||
.class_init = file_backend_class_init,
|
||||
.instance_init = file_backend_instance_init,
|
||||
.instance_finalize = file_backend_instance_finalize,
|
||||
.instance_size = sizeof(HostMemoryBackendFile),
|
||||
};
|
||||
|
|
|
@ -241,26 +241,6 @@ static void host_memory_backend_init(Object *obj)
|
|||
backend->merge = machine_mem_merge(machine);
|
||||
backend->dump = machine_dump_guest_core(machine);
|
||||
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 *
|
||||
|
@ -375,6 +355,28 @@ host_memory_backend_class_init(ObjectClass *oc, void *data)
|
|||
|
||||
ucc->complete = host_memory_backend_memory_complete;
|
||||
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 = {
|
||||
|
|
|
@ -364,6 +364,104 @@ static void machine_class_init(ObjectClass *oc, void *data)
|
|||
/* Default 128 MB as guest ram size */
|
||||
mc->default_ram_size = 128 * M_BYTE;
|
||||
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)
|
||||
|
@ -387,114 +485,6 @@ static void machine_initfn(Object *obj)
|
|||
ms->mem_merge = 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 */
|
||||
ms->sysbus_notifier.notify = machine_init_notify;
|
||||
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);
|
||||
|
||||
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 */
|
||||
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;
|
||||
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;
|
||||
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. */
|
||||
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)
|
||||
|
@ -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 = pc_machine_device_unplug_cb;
|
||||
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 = {
|
||||
|
|
9
vl.c
9
vl.c
|
@ -2804,17 +2804,16 @@ static int machine_set_property(void *opaque,
|
|||
{
|
||||
Object *obj = OBJECT(opaque);
|
||||
Error *local_err = NULL;
|
||||
char *c, *qom_name;
|
||||
char *p, *qom_name;
|
||||
|
||||
if (strcmp(name, "type") == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
qom_name = g_strdup(name);
|
||||
c = qom_name;
|
||||
while (*c++) {
|
||||
if (*c == '_') {
|
||||
*c = '-';
|
||||
for (p = qom_name; *p; p++) {
|
||||
if (*p == '_') {
|
||||
*p = '-';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue