Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into sta…
…ging pc,pci,virtio,hotplug fixes, enhancements numa work by Hu Tao and others memory hotplug by Igor vhost-user by Nikolay, Antonios and others guest virtio announcements by Jason qtest fixes by Sergey qdev hotplug fixes by Paolo misc other fixes mostly by myself Signed-off-by: Michael S. Tsirkin <mst@redhat.com> * remotes/mst/tags/for_upstream: (109 commits) numa: use RAM_ADDR_FMT with ram_addr_t qapi/string-output-visitor: fix bugs tests: simplify code qapi: fix input visitor bugs acpi: rephrase comment qmp: add ACPI_DEVICE_OST event handling qmp: add query-acpi-ospm-status command acpi: implement ospm_status() method for PIIX4/ICH9_LPC devices acpi: introduce TYPE_ACPI_DEVICE_IF interface qmp: add query-memory-devices command numa: handle mmaped memory allocation failure correctly pc: acpi: do not hardcode preprocessor qmp: clean out whitespace qdev: recursively unrealize devices when unrealizing bus qdev: reorganize error reporting in bus_set_realized qapi: fix build on glib < 2.28 qapi: make string output visitor parse int list qapi: make string input visitor parse int list tests: fix memory leak in test of string input visitor hmp: add info memdev ... Conflicts: include/hw/i386/pc.h [PMM: fixed minor conflict in pc.h] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
- Loading branch information
Showing
126 changed files
with
7,416 additions
and
728 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
/* | ||
* QEMU Host Memory Backend for hugetlbfs | ||
* | ||
* Copyright (C) 2013-2014 Red Hat Inc | ||
* | ||
* Authors: | ||
* Paolo Bonzini <pbonzini@redhat.com> | ||
* | ||
* This work is licensed under the terms of the GNU GPL, version 2 or later. | ||
* See the COPYING file in the top-level directory. | ||
*/ | ||
#include "qemu-common.h" | ||
#include "sysemu/hostmem.h" | ||
#include "sysemu/sysemu.h" | ||
#include "qom/object_interfaces.h" | ||
|
||
/* hostmem-file.c */ | ||
/** | ||
* @TYPE_MEMORY_BACKEND_FILE: | ||
* name of backend that uses mmap on a file descriptor | ||
*/ | ||
#define TYPE_MEMORY_BACKEND_FILE "memory-backend-file" | ||
|
||
#define MEMORY_BACKEND_FILE(obj) \ | ||
OBJECT_CHECK(HostMemoryBackendFile, (obj), TYPE_MEMORY_BACKEND_FILE) | ||
|
||
typedef struct HostMemoryBackendFile HostMemoryBackendFile; | ||
|
||
struct HostMemoryBackendFile { | ||
HostMemoryBackend parent_obj; | ||
|
||
bool share; | ||
char *mem_path; | ||
}; | ||
|
||
static void | ||
file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) | ||
{ | ||
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(backend); | ||
|
||
if (!backend->size) { | ||
error_setg(errp, "can't create backend with size 0"); | ||
return; | ||
} | ||
if (!fb->mem_path) { | ||
error_setg(errp, "mem_path property not set"); | ||
return; | ||
} | ||
#ifndef CONFIG_LINUX | ||
error_setg(errp, "-mem-path not supported on this host"); | ||
#else | ||
if (!memory_region_size(&backend->mr)) { | ||
backend->force_prealloc = mem_prealloc; | ||
memory_region_init_ram_from_file(&backend->mr, OBJECT(backend), | ||
object_get_canonical_path(OBJECT(backend)), | ||
backend->size, fb->share, | ||
fb->mem_path, 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); | ||
|
||
return g_strdup(fb->mem_path); | ||
} | ||
|
||
static void set_mem_path(Object *o, const char *str, Error **errp) | ||
{ | ||
HostMemoryBackend *backend = MEMORY_BACKEND(o); | ||
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o); | ||
|
||
if (memory_region_size(&backend->mr)) { | ||
error_setg(errp, "cannot change property value"); | ||
return; | ||
} | ||
if (fb->mem_path) { | ||
g_free(fb->mem_path); | ||
} | ||
fb->mem_path = g_strdup(str); | ||
} | ||
|
||
static bool file_memory_backend_get_share(Object *o, Error **errp) | ||
{ | ||
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o); | ||
|
||
return fb->share; | ||
} | ||
|
||
static void file_memory_backend_set_share(Object *o, bool value, Error **errp) | ||
{ | ||
HostMemoryBackend *backend = MEMORY_BACKEND(o); | ||
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o); | ||
|
||
if (memory_region_size(&backend->mr)) { | ||
error_setg(errp, "cannot change property value"); | ||
return; | ||
} | ||
fb->share = value; | ||
} | ||
|
||
static void | ||
file_backend_instance_init(Object *o) | ||
{ | ||
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); | ||
} | ||
|
||
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_size = sizeof(HostMemoryBackendFile), | ||
}; | ||
|
||
static void register_types(void) | ||
{ | ||
type_register_static(&file_backend_info); | ||
} | ||
|
||
type_init(register_types); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
/* | ||
* QEMU Host Memory Backend | ||
* | ||
* Copyright (C) 2013-2014 Red Hat Inc | ||
* | ||
* Authors: | ||
* Igor Mammedov <imammedo@redhat.com> | ||
* | ||
* This work is licensed under the terms of the GNU GPL, version 2 or later. | ||
* See the COPYING file in the top-level directory. | ||
*/ | ||
#include "sysemu/hostmem.h" | ||
#include "qom/object_interfaces.h" | ||
|
||
#define TYPE_MEMORY_BACKEND_RAM "memory-backend-ram" | ||
|
||
|
||
static void | ||
ram_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) | ||
{ | ||
char *path; | ||
|
||
if (!backend->size) { | ||
error_setg(errp, "can't create backend with size 0"); | ||
return; | ||
} | ||
|
||
path = object_get_canonical_path_component(OBJECT(backend)); | ||
memory_region_init_ram(&backend->mr, OBJECT(backend), path, | ||
backend->size); | ||
g_free(path); | ||
} | ||
|
||
static void | ||
ram_backend_class_init(ObjectClass *oc, void *data) | ||
{ | ||
HostMemoryBackendClass *bc = MEMORY_BACKEND_CLASS(oc); | ||
|
||
bc->alloc = ram_backend_memory_alloc; | ||
} | ||
|
||
static const TypeInfo ram_backend_info = { | ||
.name = TYPE_MEMORY_BACKEND_RAM, | ||
.parent = TYPE_MEMORY_BACKEND, | ||
.class_init = ram_backend_class_init, | ||
}; | ||
|
||
static void register_types(void) | ||
{ | ||
type_register_static(&ram_backend_info); | ||
} | ||
|
||
type_init(register_types); |
Oops, something went wrong.