66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
| /*
 | |
|  * QEMU KVM support -- ARM specific functions.
 | |
|  *
 | |
|  * Copyright (c) 2012 Linaro Limited
 | |
|  *
 | |
|  * 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_ARM_H
 | |
| #define QEMU_KVM_ARM_H
 | |
| 
 | |
| #include "sysemu/kvm.h"
 | |
| #include "exec/memory.h"
 | |
| 
 | |
| /**
 | |
|  * kvm_arm_register_device:
 | |
|  * @mr: memory region for this device
 | |
|  * @devid: the KVM device ID
 | |
|  *
 | |
|  * Remember the memory region @mr, and when it is mapped by the
 | |
|  * machine model, tell the kernel that base address using the
 | |
|  * KVM_SET_DEVICE_ADDRESS ioctl. @devid should be the ID of
 | |
|  * the device as defined by KVM_SET_DEVICE_ADDRESS.
 | |
|  * The machine model may map and unmap the device multiple times;
 | |
|  * the kernel will only be told the final address at the point
 | |
|  * where machine init is complete.
 | |
|  */
 | |
| void kvm_arm_register_device(MemoryRegion *mr, uint64_t devid);
 | |
| 
 | |
| /**
 | |
|  * write_list_to_kvmstate:
 | |
|  * @cpu: ARMCPU
 | |
|  *
 | |
|  * For each register listed in the ARMCPU cpreg_indexes list, write
 | |
|  * its value from the cpreg_values list into the kernel (via ioctl).
 | |
|  * This updates KVM's working data structures from TCG data or
 | |
|  * from incoming migration state.
 | |
|  *
 | |
|  * Returns: true if all register values were updated correctly,
 | |
|  * false if some register was unknown to the kernel or could not
 | |
|  * be written (eg constant register with the wrong value).
 | |
|  * Note that we do not stop early on failure -- we will attempt
 | |
|  * writing all registers in the list.
 | |
|  */
 | |
| bool write_list_to_kvmstate(ARMCPU *cpu);
 | |
| 
 | |
| /**
 | |
|  * write_kvmstate_to_list:
 | |
|  * @cpu: ARMCPU
 | |
|  *
 | |
|  * For each register listed in the ARMCPU cpreg_indexes list, write
 | |
|  * its value from the kernel into the cpreg_values list. This is used to
 | |
|  * copy info from KVM's working data structures into TCG or
 | |
|  * for outbound migration.
 | |
|  *
 | |
|  * Returns: true if all register values were read correctly,
 | |
|  * false if some register was unknown or could not be read.
 | |
|  * Note that we do not stop early on failure -- we will attempt
 | |
|  * reading all registers in the list.
 | |
|  */
 | |
| bool write_kvmstate_to_list(ARMCPU *cpu);
 | |
| 
 | |
| #endif
 |