1 /* 2 * Internal definitions for a target's KVM support 3 * 4 * This work is licensed under the terms of the GNU GPL, version 2 or later. 5 * See the COPYING file in the top-level directory. 6 * 7 */ 8 9 #ifndef QEMU_KVM_INT_H 10 #define QEMU_KVM_INT_H 11 12 #include "exec/memory.h" 13 #include "sysemu/accel.h" 14 #include "sysemu/kvm.h" 15 16 typedef struct KVMSlot 17 { 18 hwaddr start_addr; 19 ram_addr_t memory_size; 20 void *ram; 21 int slot; 22 int flags; 23 int old_flags; 24 /* Dirty bitmap cache for the slot */ 25 unsigned long *dirty_bmap; 26 } KVMSlot; 27 28 typedef struct KVMMemoryListener { 29 MemoryListener listener; 30 /* Protects the slots and all inside them */ 31 QemuMutex slots_lock; 32 KVMSlot *slots; 33 int as_id; 34 } KVMMemoryListener; 35 36 void kvm_memory_listener_register(KVMState *s, KVMMemoryListener *kml, 37 AddressSpace *as, int as_id); 38 39 void kvm_set_max_memslot_size(hwaddr max_slot_size); 40 41 /** 42 * kvm_hwpoison_page_add: 43 * 44 * Parameters: 45 * @ram_addr: the address in the RAM for the poisoned page 46 * 47 * Add a poisoned page to the list 48 * 49 * Return: None. 50 */ 51 void kvm_hwpoison_page_add(ram_addr_t ram_addr); 52 #endif 53