[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/7] kvm-all: move KVMState definitions to kvm_int.h
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 3/7] kvm-all: move KVMState definitions to kvm_int.h |
Date: |
Fri, 15 May 2015 18:36:59 +0200 |
i386 code will have to look inside KVMState in order to modify the
address space used for KVM_SET_USER_MEM_REGION. Create an internal
header so that KVMState is not exposed outside.
Signed-off-by: Paolo Bonzini <address@hidden>
---
include/sysemu/kvm_int.h | 70 ++++++++++++++++++++++++++++++++++++++++++++++++
kvm-all.c | 58 +--------------------------------------
2 files changed, 71 insertions(+), 57 deletions(-)
create mode 100644 include/sysemu/kvm_int.h
diff --git a/include/sysemu/kvm_int.h b/include/sysemu/kvm_int.h
new file mode 100644
index 0000000..d5f746f
--- /dev/null
+++ b/include/sysemu/kvm_int.h
@@ -0,0 +1,70 @@
+/*
+ * Internal definitions for a target's KVM support
+ *
+ * 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 QEMU_KVM_INT_H
+#define QEMU_KVM_INT_H
+
+#include "sysemu/sysemu.h"
+#include "sysemu/accel.h"
+#include <sysemu/kvm.h>
+
+#define KVM_MSI_HASHTAB_SIZE 256
+
+typedef struct KVMSlot
+{
+ hwaddr start_addr;
+ ram_addr_t memory_size;
+ void *ram;
+ int slot;
+ int flags;
+} KVMSlot;
+
+struct KVMState
+{
+ AccelState parent_obj;
+
+ KVMSlot *slots;
+ int nr_slots;
+ int fd;
+ int vmfd;
+ int coalesced_mmio;
+ struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
+ bool coalesced_flush_in_progress;
+ int broken_set_mem_region;
+ int migration_log;
+ int vcpu_events;
+ int robust_singlestep;
+ int debugregs;
+#ifdef KVM_CAP_SET_GUEST_DEBUG
+ struct kvm_sw_breakpoint_head kvm_sw_breakpoints;
+#endif
+ int pit_state2;
+ int xsave, xcrs;
+ int many_ioeventfds;
+ int intx_set_mask;
+ /* The man page (and posix) say ioctl numbers are signed int, but
+ * they're not. Linux, glibc and *BSD all treat ioctl numbers as
+ * unsigned, and treating them as signed here can break things */
+ unsigned irq_set_ioctl;
+ unsigned int sigmask_len;
+#ifdef KVM_CAP_IRQ_ROUTING
+ struct kvm_irq_routing *irq_routes;
+ int nr_allocated_irq_routes;
+ uint32_t *used_gsi_bitmap;
+ unsigned int gsi_count;
+ QTAILQ_HEAD(msi_hashtab, KVMMSIRoute) msi_hashtab[KVM_MSI_HASHTAB_SIZE];
+ bool direct_msi;
+#endif
+};
+
+#define TYPE_KVM_ACCEL ACCEL_CLASS_NAME("kvm")
+
+#define KVM_STATE(obj) \
+ OBJECT_CHECK(KVMState, (obj), TYPE_KVM_ACCEL)
+
+#endif
diff --git a/kvm-all.c b/kvm-all.c
index 8205ea1..215ed33 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -24,13 +24,11 @@
#include "qemu/atomic.h"
#include "qemu/option.h"
#include "qemu/config-file.h"
-#include "sysemu/sysemu.h"
-#include "sysemu/accel.h"
#include "hw/hw.h"
#include "hw/pci/msi.h"
#include "hw/s390x/adapter.h"
#include "exec/gdbstub.h"
-#include "sysemu/kvm.h"
+#include "sysemu/kvm_int.h"
#include "qemu/bswap.h"
#include "exec/memory.h"
#include "exec/ram_addr.h"
@@ -58,60 +56,6 @@
do { } while (0)
#endif
-#define KVM_MSI_HASHTAB_SIZE 256
-
-typedef struct KVMSlot
-{
- hwaddr start_addr;
- ram_addr_t memory_size;
- void *ram;
- int slot;
- int flags;
-} KVMSlot;
-
-struct KVMState
-{
- AccelState parent_obj;
-
- KVMSlot *slots;
- int nr_slots;
- int fd;
- int vmfd;
- int coalesced_mmio;
- struct kvm_coalesced_mmio_ring *coalesced_mmio_ring;
- bool coalesced_flush_in_progress;
- int broken_set_mem_region;
- int migration_log;
- int vcpu_events;
- int robust_singlestep;
- int debugregs;
-#ifdef KVM_CAP_SET_GUEST_DEBUG
- struct kvm_sw_breakpoint_head kvm_sw_breakpoints;
-#endif
- int pit_state2;
- int xsave, xcrs;
- int many_ioeventfds;
- int intx_set_mask;
- /* The man page (and posix) say ioctl numbers are signed int, but
- * they're not. Linux, glibc and *BSD all treat ioctl numbers as
- * unsigned, and treating them as signed here can break things */
- unsigned irq_set_ioctl;
- unsigned int sigmask_len;
-#ifdef KVM_CAP_IRQ_ROUTING
- struct kvm_irq_routing *irq_routes;
- int nr_allocated_irq_routes;
- uint32_t *used_gsi_bitmap;
- unsigned int gsi_count;
- QTAILQ_HEAD(msi_hashtab, KVMMSIRoute) msi_hashtab[KVM_MSI_HASHTAB_SIZE];
- bool direct_msi;
-#endif
-};
-
-#define TYPE_KVM_ACCEL ACCEL_CLASS_NAME("kvm")
-
-#define KVM_STATE(obj) \
- OBJECT_CHECK(KVMState, (obj), TYPE_KVM_ACCEL)
-
KVMState *kvm_state;
bool kvm_kernel_irqchip;
bool kvm_async_interrupts_allowed;
--
1.8.3.1
- [Qemu-devel] [RFC PATCH 0/7] x86: SMRAM implementation for KVM, Paolo Bonzini, 2015/05/15
- [Qemu-devel] [PATCH 2/7] kvm-all: remove useless typedef, Paolo Bonzini, 2015/05/15
- [Qemu-devel] [PATCH 1/7] kvm-all: put kvm_mem_flags to more work, Paolo Bonzini, 2015/05/15
- [Qemu-devel] [PATCH 3/7] kvm-all: move KVMState definitions to kvm_int.h,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 4/7] kvm-all: add KVM address space, Paolo Bonzini, 2015/05/15
- [Qemu-devel] [PATCH 5/7] memory: add kvm_mem_flags to MemoryRegion, Paolo Bonzini, 2015/05/15
- [Qemu-devel] [PATCH 7/7] kvm-i386: register SMRAM regions with KVM_MEM_X86_SMRAM, Paolo Bonzini, 2015/05/15
- [Qemu-devel] [PATCH 6/7] i386: disable the region in /machine/smram when SMRAM is open, Paolo Bonzini, 2015/05/15