[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] Various tweaks for paravirtualization and debugging



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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.