aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm/kvm_host.h
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2013-01-23 13:21:58 -0500
committerMarc Zyngier <marc.zyngier@arm.com>2013-02-11 14:05:11 -0500
commit53e724067a4ee9373972079e225d0d5f683b9c5a (patch)
treede8cd94b10d2cd768e990a38a95d8a40ab3dac0a /arch/arm/include/asm/kvm_host.h
parent9ae9e2535d7dd1c21d6a7db1a7f2fc507a5e4080 (diff)
ARM: KVM: arch_timers: Add guest timer core support
Add some the architected timer related infrastructure, and support timer interrupt injection, which can happen as a resultof three possible events: - The virtual timer interrupt has fired while we were still executing the guest - The timer interrupt hasn't fired, but it expired while we were doing the world switch - A hrtimer we programmed earlier has fired Reviewed-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Christoffer Dall <c.dall@virtualopensystems.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'arch/arm/include/asm/kvm_host.h')
-rw-r--r--arch/arm/include/asm/kvm_host.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index 6791c888b9f4..dfe98866a992 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -23,6 +23,7 @@
23#include <asm/kvm_asm.h> 23#include <asm/kvm_asm.h>
24#include <asm/kvm_mmio.h> 24#include <asm/kvm_mmio.h>
25#include <asm/fpstate.h> 25#include <asm/fpstate.h>
26#include <asm/kvm_arch_timer.h>
26 27
27#define KVM_MAX_VCPUS CONFIG_KVM_ARM_MAX_VCPUS 28#define KVM_MAX_VCPUS CONFIG_KVM_ARM_MAX_VCPUS
28#define KVM_MEMORY_SLOTS 32 29#define KVM_MEMORY_SLOTS 32
@@ -49,6 +50,9 @@ struct kvm_arch {
49 /* VTTBR value associated with below pgd and vmid */ 50 /* VTTBR value associated with below pgd and vmid */
50 u64 vttbr; 51 u64 vttbr;
51 52
53 /* Timer */
54 struct arch_timer_kvm timer;
55
52 /* 56 /*
53 * Anything that is not used directly from assembly code goes 57 * Anything that is not used directly from assembly code goes
54 * here. 58 * here.
@@ -99,6 +103,7 @@ struct kvm_vcpu_arch {
99 103
100 /* VGIC state */ 104 /* VGIC state */
101 struct vgic_cpu vgic_cpu; 105 struct vgic_cpu vgic_cpu;
106 struct arch_timer_cpu timer_cpu;
102 107
103 /* 108 /*
104 * Anything that is not used directly from assembly code goes 109 * Anything that is not used directly from assembly code goes