diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-12-20 10:41:33 +0000 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-12-20 10:41:33 +0000 |
commit | f4944d7a6679cf7a50c4794f783f0e8749491048 (patch) | |
tree | 90786132b65601a7f09f7df55b46e5e1dd575157 /xen/include/asm-x86/hvm/vlapic.h | |
parent | ddc35d1cc994bde1c3560c5dc30a4adc944ef4ac (diff) | |
download | xen-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.h | 24 |
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__ */ |