diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2013-01-23 13:21:58 -0500 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2013-02-11 14:05:11 -0500 |
commit | 53e724067a4ee9373972079e225d0d5f683b9c5a (patch) | |
tree | de8cd94b10d2cd768e990a38a95d8a40ab3dac0a /arch/arm/include/asm/kvm_host.h | |
parent | 9ae9e2535d7dd1c21d6a7db1a7f2fc507a5e4080 (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.h | 5 |
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 |