# HG changeset patch
# User djm@xxxxxxxxxxxxxxx
# Node ID d0a1154755c95ffdb4455a81a72dc746a845ca97
# Parent ca44d2dbb273b4a9388b067fc16a0a38fc463a92
Fix zeroing of some counters and add a couple more
diff -r ca44d2dbb273 -r d0a1154755c9 xen/arch/ia64/hypercall.c
--- a/xen/arch/ia64/hypercall.c Sat Jul 9 14:58:56 2005
+++ b/xen/arch/ia64/hypercall.c Sun Jul 10 15:53:17 2005
@@ -34,7 +34,7 @@
case FW_HYPERCALL_PAL_CALL:
//printf("*** PAL hypercall: index=%d\n",regs->r28);
//FIXME: This should call a C routine
-#if 1
+#if 0
// This is very conservative, but avoids a possible
// (and deadly) freeze in paravirtualized domains due
// to a yet-to-be-found bug where pending_interruption
@@ -47,8 +47,9 @@
#define SPURIOUS_VECTOR 15
pi = vcpu_check_pending_interrupts(v);
if (pi != SPURIOUS_VECTOR) {
- idle_when_pending++;
- pi = vcpu_pend_unspecified_interrupt(v);
+ if (!v->vcpu_info->arch.pending_interruption)
+ idle_when_pending++;
+ vcpu_pend_unspecified_interrupt(v);
//printf("idle w/int#%d pending!\n",pi);
//this shouldn't happen, but it apparently does quite a bit! so don't
//allow it to happen... i.e. if a domain has an interrupt pending and
diff -r ca44d2dbb273 -r d0a1154755c9 xen/arch/ia64/privop.c
--- a/xen/arch/ia64/privop.c Sat Jul 9 14:58:56 2005
+++ b/xen/arch/ia64/privop.c Sun Jul 10 15:53:17 2005
@@ -1040,6 +1040,7 @@
extern unsigned long lazy_cover_count;
extern unsigned long idle_when_pending;
extern unsigned long pal_halt_light_count;
+extern unsigned long context_switch_count;
int dump_misc_stats(char *buf)
{
@@ -1050,6 +1051,7 @@
s += sprintf(s,"Physical translations: %d\n",phys_translate_count);
s += sprintf(s,"Idle when pending: %d\n",idle_when_pending);
s += sprintf(s,"PAL_HALT_LIGHT (no pending):
%d\n",pal_halt_light_count);
+ s += sprintf(s,"context switches: %d\n",context_switch_count);
s += sprintf(s,"Lazy covers: %d\n",lazy_cover_count);
return s - buf;
}
@@ -1061,6 +1063,9 @@
phys_translate_count = 0;
vhpt_translate_count = 0;
lazy_cover_count = 0;
+ pal_halt_light_count = 0;
+ idle_when_pending = 0;
+ context_switch_count = 0;
}
int dump_hyperprivop_counts(char *buf)
diff -r ca44d2dbb273 -r d0a1154755c9 xen/arch/ia64/xenmisc.c
--- a/xen/arch/ia64/xenmisc.c Sat Jul 9 14:58:56 2005
+++ b/xen/arch/ia64/xenmisc.c Sun Jul 10 15:53:17 2005
@@ -257,6 +257,8 @@
void cs10foo(void) {}
void cs01foo(void) {}
+unsigned long context_switch_count = 0;
+
// context_switch
void context_switch(struct vcpu *prev, struct vcpu *next)
{
@@ -276,6 +278,7 @@
/* Housekeeping for prev domain */
#endif // CONFIG_VTI
+ context_switch_count++;
switch_to(prev,next,prev);
#ifdef CONFIG_VTI
/* Post-setup for new domain */
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|