/* * 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 "exec/memory.h" #include "qemu/accel.h" #include "sysemu/kvm.h" typedef struct KVMSlot { hwaddr start_addr; ram_addr_t memory_size; void *ram; int slot; int flags; int old_flags; /* Dirty bitmap cache for the slot */ unsigned long *dirty_bmap; unsigned long dirty_bmap_size; /* Cache of the address space ID */ int as_id; /* Cache of the offset in ram address space */ ram_addr_t ram_start_offset; } KVMSlot; typedef struct KVMMemoryListener { MemoryListener listener; KVMSlot *slots; int as_id; } KVMMemoryListener; void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml, AddressSpace *as, int as_id, const char *name); void kvm_set_max_memslot_size(hwaddr max_slot_size); /** * kvm_hwpoison_page_add: * * Parameters: * @ram_addr: the address in the RAM for the poisoned page * * Add a poisoned page to the list * * Return: None. */ void kvm_hwpoison_page_add(ram_addr_t ram_addr); #endif