summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDavid Hildenbrand <david@redhat.com>2018-04-23 18:51:17 +0200
committerEduardo Habkost <ehabkost@redhat.com>2018-05-07 10:00:02 -0300
commitb0c14ec4efe912ae6f14a4802574f7b6b6db0648 (patch)
tree87e01fb55fb216721e888739603d07eee337a716 /include
parent2cc0e2e8140f43ccc6aced6e47c9c2db15ce2330 (diff)
downloadqemu-b0c14ec4efe912ae6f14a4802574f7b6b6db0648.tar.gz
machine: make MemoryHotplugState accessible via the machine
Let's allow to query the MemoryHotplugState directly from the machine. If the pointer is NULL, the machine does not support memory devices. If the pointer is !NULL, the machine supports memory devices and the data structure contains information about the applicable physical guest address space region. This allows us to generically detect if a certain machine has support for memory devices, and to generically manage it (find free address range, plug/unplug a memory region). We will rename "MemoryHotplugState" to something more meaningful ("DeviceMemory") after we completed factoring out the pc-dimm code into MemoryDevice code. Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20180423165126.15441-3-david@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> [ehabkost: rebased series, solved conflicts at spapr.c] [ehabkost: squashed fix to use g_malloc0()] Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/hw/boards.h12
-rw-r--r--include/hw/i386/pc.h1
-rw-r--r--include/hw/mem/pc-dimm.h12
-rw-r--r--include/hw/ppc/spapr.h1
4 files changed, 13 insertions, 13 deletions
diff --git a/include/hw/boards.h b/include/hw/boards.h
index 5c5eee55e6..e27c28b514 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -214,6 +214,17 @@ struct MachineClass {
};
/**
+ * MemoryHotplugState:
+ * @base: address in guest physical address space where the memory
+ * address space for memory devices starts
+ * @mr: address space container for memory devices
+ */
+typedef struct MemoryHotplugState {
+ hwaddr base;
+ MemoryRegion mr;
+} MemoryHotplugState;
+
+/**
* MachineState:
*/
struct MachineState {
@@ -243,6 +254,7 @@ struct MachineState {
bool enforce_config_section;
bool enable_graphics;
char *memory_encryption;
+ MemoryHotplugState *device_memory;
ram_addr_t ram_size;
ram_addr_t maxram_size;
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index ffee8413f0..07b596ee76 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -32,7 +32,6 @@ struct PCMachineState {
/* <public> */
/* State for other subsystems/APIs: */
- MemoryHotplugState hotplug_memory;
Notifier machine_done;
/* Pointers to devices and objects: */
diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h
index e88073321f..8bda37adab 100644
--- a/include/hw/mem/pc-dimm.h
+++ b/include/hw/mem/pc-dimm.h
@@ -19,6 +19,7 @@
#include "exec/memory.h"
#include "sysemu/hostmem.h"
#include "hw/qdev.h"
+#include "hw/boards.h"
#define TYPE_PC_DIMM "pc-dimm"
#define PC_DIMM(obj) \
@@ -75,17 +76,6 @@ typedef struct PCDIMMDeviceClass {
MemoryRegion *(*get_vmstate_memory_region)(PCDIMMDevice *dimm);
} PCDIMMDeviceClass;
-/**
- * MemoryHotplugState:
- * @base: address in guest physical address space where hotplug memory
- * address space begins.
- * @mr: hotplug memory address space container
- */
-typedef struct MemoryHotplugState {
- hwaddr base;
- MemoryRegion mr;
-} MemoryHotplugState;
-
uint64_t pc_dimm_get_free_addr(uint64_t address_space_start,
uint64_t address_space_size,
uint64_t *hint, uint64_t align, uint64_t size,
diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index d60b7c6d7a..56ff02d32a 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -162,7 +162,6 @@ struct sPAPRMachineState {
/*< public >*/
char *kvm_type;
- MemoryHotplugState hotplug_memory;
const char *icp_type;