summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2017-09-11 18:59:24 +0200
committerMichael S. Tsirkin <mst@redhat.com>2017-10-15 05:54:40 +0300
commit6e43353f10c6688060af0bc26bdfdd4cf9c96ea2 (patch)
tree6e9dd67bd656e75812b7f0c7d2a26f353ca75bbb /include
parent5f9252f7cc12c5cec1b3c6695aca02eb52ea7acc (diff)
downloadqemu-6e43353f10c6688060af0bc26bdfdd4cf9c96ea2.tar.gz
hw/misc: add vmcoreinfo device
See docs/specs/vmcoreinfo.txt for details. "etc/vmcoreinfo" fw_cfg entry is added when using "-device vmcoreinfo". Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/hw/misc/vmcoreinfo.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/include/hw/misc/vmcoreinfo.h b/include/hw/misc/vmcoreinfo.h
new file mode 100644
index 0000000000..c3aa856545
--- /dev/null
+++ b/include/hw/misc/vmcoreinfo.h
@@ -0,0 +1,46 @@
+/*
+ * Virtual Machine coreinfo device
+ *
+ * Copyright (C) 2017 Red Hat, Inc.
+ *
+ * Authors: Marc-André Lureau <marcandre.lureau@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 VMCOREINFO_H
+#define VMCOREINFO_H
+
+#include "hw/qdev.h"
+
+#define VMCOREINFO_DEVICE "vmcoreinfo"
+#define VMCOREINFO(obj) OBJECT_CHECK(VMCoreInfoState, (obj), VMCOREINFO_DEVICE)
+
+#define VMCOREINFO_FORMAT_NONE 0x0
+#define VMCOREINFO_FORMAT_ELF 0x1
+
+/* all fields are little-endian */
+typedef struct FWCfgVMCoreInfo {
+ uint16_t host_format; /* set on reset */
+ uint16_t guest_format;
+ uint32_t size;
+ uint64_t paddr;
+} QEMU_PACKED FWCfgVMCoreInfo;
+
+typedef struct VMCoreInfoState {
+ DeviceClass parent_obj;
+
+ bool has_vmcoreinfo;
+ FWCfgVMCoreInfo vmcoreinfo;
+} VMCoreInfoState;
+
+/* returns NULL unless there is exactly one device */
+static inline VMCoreInfoState *vmcoreinfo_find(void)
+{
+ Object *o = object_resolve_path_type("", VMCOREINFO_DEVICE, NULL);
+
+ return o ? VMCOREINFO(o) : NULL;
+}
+
+#endif