2
* QEMU KVM support -- ARM specific functions.
4
* Copyright (c) 2012 Linaro Limited
6
* This work is licensed under the terms of the GNU GPL, version 2 or later.
7
* See the COPYING file in the top-level directory.
11
#ifndef QEMU_KVM_ARM_H
12
#define QEMU_KVM_ARM_H
14
#include "sysemu/kvm.h"
15
#include "exec/memory.h"
18
* kvm_arm_register_device:
19
* @mr: memory region for this device
20
* @devid: the KVM device ID
22
* Remember the memory region @mr, and when it is mapped by the
23
* machine model, tell the kernel that base address using the
24
* KVM_SET_DEVICE_ADDRESS ioctl. @devid should be the ID of
25
* the device as defined by KVM_SET_DEVICE_ADDRESS.
26
* The machine model may map and unmap the device multiple times;
27
* the kernel will only be told the final address at the point
28
* where machine init is complete.
30
void kvm_arm_register_device(MemoryRegion *mr, uint64_t devid);
33
* write_list_to_kvmstate:
36
* For each register listed in the ARMCPU cpreg_indexes list, write
37
* its value from the cpreg_values list into the kernel (via ioctl).
38
* This updates KVM's working data structures from TCG data or
39
* from incoming migration state.
41
* Returns: true if all register values were updated correctly,
42
* false if some register was unknown to the kernel or could not
43
* be written (eg constant register with the wrong value).
44
* Note that we do not stop early on failure -- we will attempt
45
* writing all registers in the list.
47
bool write_list_to_kvmstate(ARMCPU *cpu);
50
* write_kvmstate_to_list:
53
* For each register listed in the ARMCPU cpreg_indexes list, write
54
* its value from the kernel into the cpreg_values list. This is used to
55
* copy info from KVM's working data structures into TCG or
56
* for outbound migration.
58
* Returns: true if all register values were read correctly,
59
* false if some register was unknown or could not be read.
60
* Note that we do not stop early on failure -- we will attempt
61
* reading all registers in the list.
63
bool write_kvmstate_to_list(ARMCPU *cpu);