# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Date 1172226916 0
# Node ID e8470a1a01afe85e3dcdf42cfa149b09a06c0653
# Parent 8407279d3751ff27e7f1826298c9adb2c46d71de
hvm: Rename injection_pending() to event_injection_faulted().
Fix the VMX and SVM handlers to reflect the new semantics (which is
what is actually required by the one caller, in shadow fault path).
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
xen/arch/x86/hvm/svm/svm.c | 10 +++++-----
xen/arch/x86/hvm/vmx/vmx.c | 8 +++-----
xen/arch/x86/mm/shadow/multi.c | 2 +-
xen/include/asm-x86/hvm/hvm.h | 8 ++++----
4 files changed, 13 insertions(+), 15 deletions(-)
diff -r 8407279d3751 -r e8470a1a01af xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c Thu Feb 22 21:32:17 2007 -0800
+++ b/xen/arch/x86/hvm/svm/svm.c Fri Feb 23 10:35:16 2007 +0000
@@ -982,10 +982,10 @@ static void svm_hvm_inject_exception(
v->arch.hvm_svm.vmcb->cr2 = v->arch.hvm_svm.cpu_cr2 = cr2;
}
-static int svm_injection_pending(struct vcpu *v)
-{
- struct vmcb_struct *vmcb = v->arch.hvm_svm.vmcb;
- return (vmcb->vintr.fields.irq || vmcb->exitintinfo.fields.v);
+static int svm_event_injection_faulted(struct vcpu *v)
+{
+ struct vmcb_struct *vmcb = v->arch.hvm_svm.vmcb;
+ return vmcb->exitintinfo.fields.v;
}
int start_svm(void)
@@ -1064,7 +1064,7 @@ int start_svm(void)
hvm_funcs.init_ap_context = svm_init_ap_context;
hvm_funcs.init_hypercall_page = svm_init_hypercall_page;
- hvm_funcs.injection_pending = svm_injection_pending;
+ hvm_funcs.event_injection_faulted = svm_event_injection_faulted;
hvm_enable();
diff -r 8407279d3751 -r e8470a1a01af xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c Thu Feb 22 21:32:17 2007 -0800
+++ b/xen/arch/x86/hvm/vmx/vmx.c Fri Feb 23 10:35:16 2007 +0000
@@ -990,16 +990,14 @@ static void vmx_update_vtpr(struct vcpu
/* VMX doesn't have a V_TPR field */
}
-static int vmx_injection_pending(struct vcpu *v)
+static int vmx_event_injection_faulted(struct vcpu *v)
{
unsigned int idtv_info_field;
ASSERT(v == current);
idtv_info_field = __vmread(IDT_VECTORING_INFO_FIELD);
-
- return (v->arch.hvm_vmx.vector_injected ||
- (idtv_info_field & INTR_INFO_VALID_MASK));
+ return (idtv_info_field & INTR_INFO_VALID_MASK);
}
/* Setup HVM interfaces */
@@ -1038,7 +1036,7 @@ static void vmx_setup_hvm_funcs(void)
hvm_funcs.init_hypercall_page = vmx_init_hypercall_page;
- hvm_funcs.injection_pending = vmx_injection_pending;
+ hvm_funcs.event_injection_faulted = vmx_event_injection_faulted;
}
int start_vmx(void)
diff -r 8407279d3751 -r e8470a1a01af xen/arch/x86/mm/shadow/multi.c
--- a/xen/arch/x86/mm/shadow/multi.c Thu Feb 22 21:32:17 2007 -0800
+++ b/xen/arch/x86/mm/shadow/multi.c Fri Feb 23 10:35:16 2007 +0000
@@ -2909,7 +2909,7 @@ static int sh_page_fault(struct vcpu *v,
* stack is currently considered to be a page table, so we should
* unshadow the faulting page before exiting.
*/
- if ( unlikely(hvm_injection_pending(v)) )
+ if ( unlikely(hvm_event_injection_faulted(v)) )
{
gdprintk(XENLOG_DEBUG, "write to pagetable during event "
"injection: cr2=%#lx, mfn=%#lx\n",
diff -r 8407279d3751 -r e8470a1a01af xen/include/asm-x86/hvm/hvm.h
--- a/xen/include/asm-x86/hvm/hvm.h Thu Feb 22 21:32:17 2007 -0800
+++ b/xen/include/asm-x86/hvm/hvm.h Fri Feb 23 10:35:16 2007 +0000
@@ -135,7 +135,7 @@ struct hvm_function_table {
void (*init_hypercall_page)(struct domain *d, void *hypercall_page);
- int (*injection_pending)(struct vcpu *v);
+ int (*event_injection_faulted)(struct vcpu *v);
};
extern struct hvm_function_table hvm_funcs;
@@ -264,9 +264,9 @@ hvm_inject_exception(unsigned int trapnr
int hvm_bringup_ap(int vcpuid, int trampoline_vector);
-static inline int hvm_injection_pending(struct vcpu *v)
-{
- return hvm_funcs.injection_pending(v);
+static inline int hvm_event_injection_faulted(struct vcpu *v)
+{
+ return hvm_funcs.event_injection_faulted(v);
}
#endif /* __ASM_X86_HVM_HVM_H__ */
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|