aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/hvm/vlapic.h
diff options
context:
space:
mode:
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>2006-12-20 10:41:33 +0000
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>2006-12-20 10:41:33 +0000
commitf4944d7a6679cf7a50c4794f783f0e8749491048 (patch)
tree90786132b65601a7f09f7df55b46e5e1dd575157 /xen/include/asm-x86/hvm/vlapic.h
parentddc35d1cc994bde1c3560c5dc30a4adc944ef4ac (diff)
downloadxen-f4944d7a6679cf7a50c4794f783f0e8749491048.tar.gz
xen-f4944d7a6679cf7a50c4794f783f0e8749491048.tar.bz2
xen-f4944d7a6679cf7a50c4794f783f0e8749491048.zip
[HVM] Sync per vcpu LAPIC timer with its TSC:
- benefits LAPIC calibration - makes scheduling policy based on LAPIC more precise - makes LAPIC timer code becomes simpler and cleaner after using periodic time layer Signed-off-by: Xiaowei Yang <xiaowei.yang@intel.com>
Diffstat (limited to 'xen/include/asm-x86/hvm/vlapic.h')
-rw-r--r--xen/include/asm-x86/hvm/vlapic.h24
1 files changed, 13 insertions, 11 deletions
diff --git a/xen/include/asm-x86/hvm/vlapic.h b/xen/include/asm-x86/hvm/vlapic.h
index 3691e3ca4f..0137b34515 100644
--- a/xen/include/asm-x86/hvm/vlapic.h
+++ b/xen/include/asm-x86/hvm/vlapic.h
@@ -23,6 +23,7 @@
#include <asm/msr.h>
#include <public/hvm/ioreq.h>
+#include <asm/hvm/vpt.h>
#define MAX_VECTOR 256
@@ -49,14 +50,14 @@
#define vlapic_enabled(vlapic) (!vlapic_disabled(vlapic))
struct vlapic {
- uint64_t apic_base_msr;
- uint32_t disabled; /* VLAPIC_xx_DISABLED */
- uint32_t timer_divisor;
- struct timer vlapic_timer;
- int timer_pending_count;
- s_time_t timer_last_update;
- struct page_info *regs_page;
- void *regs;
+ uint64_t apic_base_msr;
+ uint32_t disabled; /* VLAPIC_xx_DISABLED */
+ uint32_t timer_divisor;
+ struct periodic_time pt;
+ int timer_pending_count;
+ s_time_t timer_last_update;
+ struct page_info *regs_page;
+ void *regs;
};
static inline uint32_t vlapic_get_reg(struct vlapic *vlapic, uint32_t reg)
@@ -70,13 +71,11 @@ static inline void vlapic_set_reg(
*((uint32_t *)(vlapic->regs + reg)) = val;
}
-
int vlapic_set_irq(struct vlapic *vlapic, uint8_t vec, uint8_t trig);
-void vlapic_post_injection(struct vcpu *v, int vector, int deliver_mode);
-
int vlapic_find_highest_irr(struct vlapic *vlapic);
+int vlapic_has_interrupt(struct vcpu *v);
int cpu_get_apic_interrupt(struct vcpu *v, int *mode);
int vlapic_init(struct vcpu *v);
@@ -91,4 +90,7 @@ struct vlapic *apic_round_robin(
int vlapic_match_logical_addr(struct vlapic *vlapic, uint8_t mda);
+int is_lvtt(struct vcpu *v, int vector);
+int is_lvtt_enabled(struct vcpu *v);
+
#endif /* __ASM_X86_HVM_VLAPIC_H__ */