diff options
Diffstat (limited to 'xen/arch/ia64/vcpu.c')
-rw-r--r-- | xen/arch/ia64/vcpu.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/xen/arch/ia64/vcpu.c b/xen/arch/ia64/vcpu.c index fb9db8a35f..b55e5b6bd7 100644 --- a/xen/arch/ia64/vcpu.c +++ b/xen/arch/ia64/vcpu.c @@ -117,7 +117,7 @@ void vcpu_set_metaphysical_mode(VCPU *vcpu, BOOLEAN newmode) { /* only do something if mode changes */ if (!!newmode ^ !!PSCB(vcpu,metaphysical_mode)) { - if (newmode) set_metaphysical_rr(0,vcpu->domain->metaphysical_rid); + if (newmode) set_metaphysical_rr0(); else if (PSCB(vcpu,rrs[0]) != -1) set_one_rr(0, PSCB(vcpu,rrs[0])); PSCB(vcpu,metaphysical_mode) = newmode; @@ -170,6 +170,13 @@ IA64FAULT vcpu_set_psr_dt(VCPU *vcpu) return IA64_NO_FAULT; } +IA64FAULT vcpu_set_psr_i(VCPU *vcpu) +{ + PSCB(vcpu,interrupt_delivery_enabled) = 1; + PSCB(vcpu,interrupt_collection_enabled) = 1; + return IA64_NO_FAULT; +} + IA64FAULT vcpu_set_psr_sm(VCPU *vcpu, UINT64 imm24) { struct ia64_psr psr, imm, *ipsr; @@ -643,6 +650,7 @@ IA64FAULT vcpu_get_ivr(VCPU *vcpu, UINT64 *pval) #ifdef HEARTBEAT_FREQ #define N_DOMS 16 // period in seconds static long count[N_DOMS] = { 0 }; + static long nonclockcount[N_DOMS] = { 0 }; REGS *regs = vcpu_regs(vcpu); unsigned domid = vcpu->domain->domain_id; #endif @@ -664,15 +672,15 @@ IA64FAULT vcpu_get_ivr(VCPU *vcpu, UINT64 *pval) } #ifdef HEARTBEAT_FREQ if (domid >= N_DOMS) domid = N_DOMS-1; - if (vector == (PSCB(vcpu,itv) & 0xff) && - !(++count[domid] & ((HEARTBEAT_FREQ*1024)-1))) { - printf("Dom%d heartbeat... iip=%p,psr.i=%d,pend=%d\n", - domid, regs->cr_iip, - current->vcpu_info->arch.interrupt_delivery_enabled, - current->vcpu_info->arch.pending_interruption); - count[domid] = 0; - dump_runq(); + if (vector == (PSCB(vcpu,itv) & 0xff)) { + if (!(++count[domid] & ((HEARTBEAT_FREQ*1024)-1))) { + printf("Dom%d heartbeat... ticks=%lx,nonticks=%lx\n", + domid, count[domid], nonclockcount[domid]); + //count[domid] = 0; + //dump_runq(); + } } + else nonclockcount[domid]++; #endif // now have an unmasked, pending, deliverable vector! // getting ivr has "side effects" |