Statistics
| Branch: | Revision:

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