]>
Commit | Line | Data |
---|---|---|
eb035b48 PM |
1 | /* |
2 | * QEMU KVM support -- ARM specific functions. | |
3 | * | |
4 | * Copyright (c) 2012 Linaro Limited | |
5 | * | |
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. | |
8 | * | |
9 | */ | |
10 | ||
11 | #ifndef QEMU_KVM_ARM_H | |
12 | #define QEMU_KVM_ARM_H | |
13 | ||
14 | #include "sysemu/kvm.h" | |
15 | #include "exec/memory.h" | |
16 | ||
17 | /** | |
18 | * kvm_arm_register_device: | |
19 | * @mr: memory region for this device | |
20 | * @devid: the KVM device ID | |
21 | * | |
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. | |
29 | */ | |
30 | void kvm_arm_register_device(MemoryRegion *mr, uint64_t devid); | |
31 | ||
ff047453 PM |
32 | /** |
33 | * write_list_to_kvmstate: | |
34 | * @cpu: ARMCPU | |
35 | * | |
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. | |
40 | * | |
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. | |
46 | */ | |
47 | bool write_list_to_kvmstate(ARMCPU *cpu); | |
48 | ||
49 | /** | |
50 | * write_kvmstate_to_list: | |
51 | * @cpu: ARMCPU | |
52 | * | |
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. | |
57 | * | |
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. | |
62 | */ | |
63 | bool write_kvmstate_to_list(ARMCPU *cpu); | |
64 | ||
eb035b48 | 65 | #endif |