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