ChangeSet 1.1327.1.6, 2005/04/26 15:08:52-06:00, djm@xxxxxxxxxxxxxxx
Various tweaks for paravirtualization and debugging
arch/ia64/hypercall.c | 9 ++++++++-
arch/ia64/vhpt.c | 13 +++++++++++++
arch/ia64/xenasm.S | 1 -
include/asm-ia64/config.h | 2 ++
4 files changed, 23 insertions(+), 2 deletions(-)
diff -Nru a/xen/arch/ia64/hypercall.c b/xen/arch/ia64/hypercall.c
--- a/xen/arch/ia64/hypercall.c 2005-05-03 04:04:09 -04:00
+++ b/xen/arch/ia64/hypercall.c 2005-05-03 04:04:09 -04:00
@@ -32,6 +32,14 @@
case FW_HYPERCALL_PAL_CALL:
//printf("*** PAL hypercall: index=%d\n",regs->r28);
//FIXME: This should call a C routine
+#if 1
+ // 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
+ // is zero when it shouldn't be. Since PAL is called
+ // in the idle loop, this should resolve it
+ ed->vcpu_info->arch.pending_interruption = 1;
+#endif
x = pal_emulator_static(regs->r28);
regs->r8 = x.status; regs->r9 = x.v0;
regs->r10 = x.v1; regs->r11 = x.v2;
@@ -61,7 +69,6 @@
#endif
break;
case FW_HYPERCALL_EFI_GET_TIME:
- fooefi();
tv = vcpu_get_gr(ed,32);
tc = vcpu_get_gr(ed,33);
//printf("efi_get_time(%p,%p) called...",tv,tc);
diff -Nru a/xen/arch/ia64/vhpt.c b/xen/arch/ia64/vhpt.c
--- a/xen/arch/ia64/vhpt.c 2005-05-03 04:04:09 -04:00
+++ b/xen/arch/ia64/vhpt.c 2005-05-03 04:04:09 -04:00
@@ -21,7 +21,20 @@
{
struct vhpt_lf_entry *v = (void *)VHPT_ADDR;
int i, cnt = 0;
+#if 0
+static int firsttime = 2;
+if (firsttime) firsttime--;
+else {
+printf("vhpt_flush: *********************************************\n");
+printf("vhpt_flush: *********************************************\n");
+printf("vhpt_flush: *********************************************\n");
+printf("vhpt_flush: flushing vhpt (seems to crash at rid wrap?)...\n");
+printf("vhpt_flush: *********************************************\n");
+printf("vhpt_flush: *********************************************\n");
+printf("vhpt_flush: *********************************************\n");
+}
+#endif
for (i = 0; i < VHPT_NUM_ENTRIES; i++, v++) {
v->itir = 0;
v->CChain = 0;
diff -Nru a/xen/arch/ia64/xenasm.S b/xen/arch/ia64/xenasm.S
--- a/xen/arch/ia64/xenasm.S 2005-05-03 04:04:09 -04:00
+++ b/xen/arch/ia64/xenasm.S 2005-05-03 04:04:09 -04:00
@@ -190,7 +190,6 @@
movl r22=SHAREDINFO_ADDR
;;
- movl r25=PAGE_SHARED
movl r25=__pgprot(__DIRTY_BITS | _PAGE_PL_2 | _PAGE_AR_RW)
;;
mov r21=loc5 // saved sharedinfo physical address
diff -Nru a/xen/include/asm-ia64/config.h b/xen/include/asm-ia64/config.h
--- a/xen/include/asm-ia64/config.h 2005-05-03 04:04:09 -04:00
+++ b/xen/include/asm-ia64/config.h 2005-05-03 04:04:09 -04:00
@@ -251,6 +251,8 @@
#undef CONFIG_X86
+#define CONFIG_MCKINLEY
+
//#define CONFIG_SMP 1
//#define CONFIG_NR_CPUS 2
//leave SMP for a later time
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|