ia64/xen-unstable
changeset 4662:ba67e077b528
bitkeeper revision 1.1327.1.6 (426eade4Z6TUJnbOAc8St0Xt6XDYMw)
Various tweaks for paravirtualization and debugging
Various tweaks for paravirtualization and debugging
author | djm@kirby.fc.hp.com |
---|---|
date | Tue Apr 26 21:08:52 2005 +0000 (2005-04-26) |
parents | 89d65362afad |
children | 34c2b5c0ac81 |
files | xen/arch/ia64/hypercall.c xen/arch/ia64/vhpt.c xen/arch/ia64/xenasm.S xen/include/asm-ia64/config.h |
line diff
1.1 --- a/xen/arch/ia64/hypercall.c Thu Apr 21 00:04:59 2005 +0000 1.2 +++ b/xen/arch/ia64/hypercall.c Tue Apr 26 21:08:52 2005 +0000 1.3 @@ -32,6 +32,14 @@ ia64_hypercall (struct pt_regs *regs) 1.4 case FW_HYPERCALL_PAL_CALL: 1.5 //printf("*** PAL hypercall: index=%d\n",regs->r28); 1.6 //FIXME: This should call a C routine 1.7 +#if 1 1.8 + // This is very conservative, but avoids a possible 1.9 + // (and deadly) freeze in paravirtualized domains due 1.10 + // to a yet-to-be-found bug where pending_interruption 1.11 + // is zero when it shouldn't be. Since PAL is called 1.12 + // in the idle loop, this should resolve it 1.13 + ed->vcpu_info->arch.pending_interruption = 1; 1.14 +#endif 1.15 x = pal_emulator_static(regs->r28); 1.16 regs->r8 = x.status; regs->r9 = x.v0; 1.17 regs->r10 = x.v1; regs->r11 = x.v2; 1.18 @@ -61,7 +69,6 @@ ia64_hypercall (struct pt_regs *regs) 1.19 #endif 1.20 break; 1.21 case FW_HYPERCALL_EFI_GET_TIME: 1.22 - fooefi(); 1.23 tv = vcpu_get_gr(ed,32); 1.24 tc = vcpu_get_gr(ed,33); 1.25 //printf("efi_get_time(%p,%p) called...",tv,tc);
2.1 --- a/xen/arch/ia64/vhpt.c Thu Apr 21 00:04:59 2005 +0000 2.2 +++ b/xen/arch/ia64/vhpt.c Tue Apr 26 21:08:52 2005 +0000 2.3 @@ -21,7 +21,20 @@ void vhpt_flush(void) 2.4 { 2.5 struct vhpt_lf_entry *v = (void *)VHPT_ADDR; 2.6 int i, cnt = 0; 2.7 +#if 0 2.8 +static int firsttime = 2; 2.9 2.10 +if (firsttime) firsttime--; 2.11 +else { 2.12 +printf("vhpt_flush: *********************************************\n"); 2.13 +printf("vhpt_flush: *********************************************\n"); 2.14 +printf("vhpt_flush: *********************************************\n"); 2.15 +printf("vhpt_flush: flushing vhpt (seems to crash at rid wrap?)...\n"); 2.16 +printf("vhpt_flush: *********************************************\n"); 2.17 +printf("vhpt_flush: *********************************************\n"); 2.18 +printf("vhpt_flush: *********************************************\n"); 2.19 +} 2.20 +#endif 2.21 for (i = 0; i < VHPT_NUM_ENTRIES; i++, v++) { 2.22 v->itir = 0; 2.23 v->CChain = 0;
3.1 --- a/xen/arch/ia64/xenasm.S Thu Apr 21 00:04:59 2005 +0000 3.2 +++ b/xen/arch/ia64/xenasm.S Tue Apr 26 21:08:52 2005 +0000 3.3 @@ -190,7 +190,6 @@ 1: 3.4 3.5 movl r22=SHAREDINFO_ADDR 3.6 ;; 3.7 - movl r25=PAGE_SHARED 3.8 movl r25=__pgprot(__DIRTY_BITS | _PAGE_PL_2 | _PAGE_AR_RW) 3.9 ;; 3.10 mov r21=loc5 // saved sharedinfo physical address
4.1 --- a/xen/include/asm-ia64/config.h Thu Apr 21 00:04:59 2005 +0000 4.2 +++ b/xen/include/asm-ia64/config.h Tue Apr 26 21:08:52 2005 +0000 4.3 @@ -251,6 +251,8 @@ extern unsigned int watchdog_on; 4.4 4.5 #undef CONFIG_X86 4.6 4.7 +#define CONFIG_MCKINLEY 4.8 + 4.9 //#define CONFIG_SMP 1 4.10 //#define CONFIG_NR_CPUS 2 4.11 //leave SMP for a later time