summaryrefslogtreecommitdiff
path: root/include/hw/mem/memory-device.h
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2018-05-08 15:25:17 +0100
committerPeter Maydell <peter.maydell@linaro.org>2018-05-08 15:25:17 +0100
commitcc8f8ba754bba17eea9791d67b572eb26e30b4ce (patch)
tree2fab5dc102c3c704e2f1377ffedaf981e1b520d3 /include/hw/mem/memory-device.h
parentd01beac177d44491d7db8747b79d94e1b53d173b (diff)
parentb40dffdec60c2dbe54806576faa5cb85227586d1 (diff)
downloadqemu-cc8f8ba754bba17eea9791d67b572eb26e30b4ce.tar.gz
Merge remote-tracking branch 'remotes/ehabkost/tags/machine-next-pull-request' into staging
Machine queue, 2018-05-07 * pc-dimm: factor out MemoryDevice (virtio-pmem and virtio-mem will make use of the new abstraction later) * scripts/device-crash-test: Removed fixed CAN entries # gpg: Signature made Mon 07 May 2018 18:01:42 BST # gpg: using RSA key 2807936F984DC5A6 # 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-next-pull-request: scripts/device-crash-test: Removed fixed CAN entries vl: allow 'maxmem' without 'slot' spapr: rename "hotplug memory" terminology to "device memory" pc: rename "hotplug memory" terminology to "device memory" machine: rename MemoryHotplugState to DeviceMemoryState pc-dimm: move actual plug/unplug of a memory region to MemoryDevice pc-dimm: factor out capacity and slot checks into MemoryDevice pc-dimm: factor out address search into MemoryDevice code pc-dimm: pass in the machine and to the MemoryHotplugState pc-dimm: no need to pass the memory region machine: make MemoryHotplugState accessible via the machine pc-dimm: factor out MemoryDevice interface Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/hw/mem/memory-device.h')
-rw-r--r--include/hw/mem/memory-device.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h
new file mode 100644
index 0000000000..2853b084b5
--- /dev/null
+++ b/include/hw/mem/memory-device.h
@@ -0,0 +1,51 @@
+/*
+ * Memory Device Interface
+ *
+ * Copyright (c) 2018 Red Hat, Inc.
+ *
+ * Authors:
+ * David Hildenbrand <david@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.
+ */
+
+#ifndef MEMORY_DEVICE_H
+#define MEMORY_DEVICE_H
+
+#include "qom/object.h"
+#include "hw/qdev.h"
+
+#define TYPE_MEMORY_DEVICE "memory-device"
+
+#define MEMORY_DEVICE_CLASS(klass) \
+ OBJECT_CLASS_CHECK(MemoryDeviceClass, (klass), TYPE_MEMORY_DEVICE)
+#define MEMORY_DEVICE_GET_CLASS(obj) \
+ OBJECT_GET_CLASS(MemoryDeviceClass, (obj), TYPE_MEMORY_DEVICE)
+#define MEMORY_DEVICE(obj) \
+ INTERFACE_CHECK(MemoryDeviceState, (obj), TYPE_MEMORY_DEVICE)
+
+typedef struct MemoryDeviceState {
+ Object parent_obj;
+} MemoryDeviceState;
+
+typedef struct MemoryDeviceClass {
+ InterfaceClass parent_class;
+
+ uint64_t (*get_addr)(const MemoryDeviceState *md);
+ uint64_t (*get_plugged_size)(const MemoryDeviceState *md);
+ uint64_t (*get_region_size)(const MemoryDeviceState *md);
+ void (*fill_device_info)(const MemoryDeviceState *md,
+ MemoryDeviceInfo *info);
+} MemoryDeviceClass;
+
+MemoryDeviceInfoList *qmp_memory_device_list(void);
+uint64_t get_plugged_memory_size(void);
+uint64_t memory_device_get_free_addr(MachineState *ms, const uint64_t *hint,
+ uint64_t align, uint64_t size,
+ Error **errp);
+void memory_device_plug_region(MachineState *ms, MemoryRegion *mr,
+ uint64_t addr);
+void memory_device_unplug_region(MachineState *ms, MemoryRegion *mr);
+
+#endif