WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] config.h, xenmisc.c, xenasm.S, process.c, domain.c:

To: xen-changelog@xxxxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] config.h, xenmisc.c, xenasm.S, process.c, domain.c:
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Mon, 14 Mar 2005 18:28:54 +0000
Delivery-date: Sat, 26 Mar 2005 00:02:47 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-archive: <http://sourceforge.net/mailarchive/forum.php?forum=xen-changelog>
List-help: <mailto:xen-changelog-request@lists.sourceforge.net?subject=help>
List-id: <xen-changelog.lists.sourceforge.net>
List-post: <mailto:xen-changelog@lists.sourceforge.net>
List-subscribe: <https://lists.sourceforge.net/lists/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.sourceforge.net?subject=subscribe>
List-unsubscribe: <https://lists.sourceforge.net/lists/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.sourceforge.net?subject=unsubscribe>
Reply-to: Xen Development List <xen-devel@xxxxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-admin@xxxxxxxxxxxxxxxxxxxxx
ChangeSet 1.1305.1.1, 2005/03/14 11:28:54-07:00, djm@djmnc4000.(none)

        config.h, xenmisc.c, xenasm.S, process.c, domain.c:
          cleanup



 arch/ia64/domain.c        |    2 ++
 arch/ia64/process.c       |   34 +++++++---------------------------
 arch/ia64/xenasm.S        |   19 -------------------
 arch/ia64/xenmisc.c       |   30 +++++++++++++++++++++++++++---
 include/asm-ia64/config.h |    4 ++--
 5 files changed, 38 insertions(+), 51 deletions(-)


diff -Nru a/xen/arch/ia64/domain.c b/xen/arch/ia64/domain.c
--- a/xen/arch/ia64/domain.c    2005-03-25 19:02:53 -05:00
+++ b/xen/arch/ia64/domain.c    2005-03-25 19:02:53 -05:00
@@ -670,6 +670,7 @@
 }
 
 
+#if 0
 void switch_to(struct exec_domain *prev, struct exec_domain *next)
 {
        struct exec_domain *last;
@@ -677,6 +678,7 @@
        __switch_to(prev,next,last);
        //set_current(next);
 }
+#endif
 
 void domain_pend_keyboard_interrupt(int irq)
 {
diff -Nru a/xen/arch/ia64/process.c b/xen/arch/ia64/process.c
--- a/xen/arch/ia64/process.c   2005-03-25 19:02:53 -05:00
+++ b/xen/arch/ia64/process.c   2005-03-25 19:02:53 -05:00
@@ -143,15 +143,13 @@
        }
        if (!PSCB(ed,interrupt_collection_enabled)) {
                if (!(PSCB(ed,ipsr) & IA64_PSR_DT)) {
-                       printf("psr.dt off, trying to deliver nested dtlb!\n");
-                       while(1);
+                       panic_domain(regs,"psr.dt off, trying to deliver nested 
dtlb!\n");
                }
                vector &= ~0xf;
                if (vector != IA64_DATA_TLB_VECTOR &&
                    vector != IA64_DATA_TLB_VECTOR) {
-printf("psr.ic off, delivering fault=%lx,iip=%p,isr=%p,PSCB.iip=%p\n",
+panic_domain(regs,"psr.ic off, delivering 
fault=%lx,iip=%p,isr=%p,PSCB.iip=%p\n",
        vector,regs->cr_iip,isr,PSCB(ed,iip));
-                       while(1);
                        
                }
 //printf("Delivering NESTED DATA TLB fault\n");
@@ -243,9 +241,6 @@
        unsigned long lookup_domain_mpa(struct domain *,unsigned long);
        unsigned long match_dtlb(struct exec_domain *,unsigned long, unsigned 
long *, unsigned long *);
        IA64FAULT fault;
-#ifndef USER_ACCESS
-       extern void __get_domain_bundle(void);
-#endif
 
 // NEED TO HANDLE THREE CASES:
 // 1) domain is in metaphysical mode
@@ -268,13 +263,6 @@
                vcpu_itc_no_srlz(ed,2,address,pteval,-1UL,PAGE_SHIFT);
                return;
        }
-#ifndef USER_ACCESS
-       if (*(unsigned long *)__get_domain_bundle != iip) {
-               printf("Bad user space access @%p ",address);
-               printf("iip=%p, ipsr=%p, b0=%p\n",iip,psr,regs->b0);
-               while(1);
-       }
-#endif
 if (address < 0x4000) printf("WARNING: page_fault @%p, iip=%p\n",address,iip);
                
        // if we are fortunate enough to have it in the 1-entry TLB...
@@ -285,13 +273,6 @@
        // look in the TRs
        fault = vcpu_tpa(ed,address,&mpaddr);
        if (fault != IA64_NO_FAULT) {
-#ifndef USER_ACCESS
-               // this is hardcoded to handle __get_domain_bundle only
-               regs->r8 = 0; regs->r9 = 0;
-               regs->cr_iip += 0x20;
-               //regs->cr_iip |= (2UL << IA64_PSR_RI_BIT);
-               return;
-#else /* USER_ACCESS */
                static int uacnt = 0;
                // can't translate it, just fail (poor man's exception)
                // which results in retrying execution
@@ -303,12 +284,10 @@
                else {
                        // should never happen.  If it does, region 0 addr may
                        // indicate a bad xen pointer
-                       printk("*** xen_handle_domain_access: exception table"
+                       panic_domain(regs,"*** xen_handle_domain_access: 
exception table"
                                " lookup failed, iip=%p, addr=%p, 
spinning...\n",
                                iip,address);
-                       while(1);
                }
-#endif /* USER_ACCESS */
        }
        if (d == dom0) {
                if (mpaddr < dom0_start || mpaddr >= dom0_start + dom0_size) {
@@ -375,7 +354,9 @@
        }
        vector = is_data ? IA64_DATA_TLB_VECTOR : IA64_INST_TLB_VECTOR;
        if (handle_lazy_cover(current, isr, regs)) return;
-if (!(address>>61)) { printf("ia64_do_page_fault: @%p???, iip=%p, itc=%p 
(spinning...)\n",address,iip,ia64_get_itc()); while(1); }
+if (!(address>>61)) {
+panic_domain(0,"ia64_do_page_fault: @%p???, iip=%p, itc=%p 
(spinning...)\n",address,iip,ia64_get_itc());
+}
        if ((isr & IA64_ISR_SP)
            || ((isr & IA64_ISR_NA) && (isr & IA64_ISR_CODE_MASK) == 
IA64_ISR_CODE_LFETCH))
        {
@@ -835,8 +816,7 @@
        unsigned long itir = vcpu_get_itir_on_fault(ed,ifa);
 
        if (!(psr & IA64_PSR_CPL)) {
-               printf("ia64_handle_reflection: reflecting with priv=0!!\n");
-               while(1);
+               panic_domain(regs,"ia64_handle_reflection: reflecting with 
priv=0!!\n");
        }
        // FIXME: no need to pass itir in to this routine as we need to
        // compute the virtual itir anyway (based on domain's RR.ps)
diff -Nru a/xen/arch/ia64/xenasm.S b/xen/arch/ia64/xenasm.S
--- a/xen/arch/ia64/xenasm.S    2005-03-25 19:02:53 -05:00
+++ b/xen/arch/ia64/xenasm.S    2005-03-25 19:02:53 -05:00
@@ -261,24 +261,6 @@
        br.cond.sptk.many rp                    // goes to ia64_leave_kernel
 END(ia64_prepare_handle_reflection)
 
-#ifndef USER_ACCESS
-// REMOVE: replaced with get_user
-// NOTE: instruction spacing must be explicit for recovery on miss
-GLOBAL_ENTRY(__get_domain_bundle)
-       ld8 r8=[r32],8
-       nop 0
-       nop 0
-       ;;
-       ld8 r9=[r32]
-       nop 0
-       nop 0
-       ;;
-       br.ret.sptk.many rp
-       nop 0
-       nop 0
-       ;;
-END(__get_domain_bundle)
-#else
 GLOBAL_ENTRY(__get_domain_bundle)
        EX(.failure_in_get_bundle,ld8 r8=[r32],8)
        ;;
@@ -294,7 +276,6 @@
        br.ret.sptk.many rp
        ;;
 END(__get_domain_bundle)
-#endif
 
 GLOBAL_ENTRY(dorfirfi)
 #define SI_CR_IIP_OFFSET 0x10
diff -Nru a/xen/arch/ia64/xenmisc.c b/xen/arch/ia64/xenmisc.c
--- a/xen/arch/ia64/xenmisc.c   2005-03-25 19:02:53 -05:00
+++ b/xen/arch/ia64/xenmisc.c   2005-03-25 19:02:53 -05:00
@@ -203,7 +203,7 @@
 
 void show_registers(struct pt_regs *regs)
 {
-       dummy();
+       printf("*** ADD REGISTER DUMP HERE FOR DEBUGGING\n");
 }      
 
 ///////////////////////////////
@@ -240,12 +240,36 @@
        return NULL;
 }
 
+void cs10foo(void) {}
+void cs01foo(void) {}
+
 // context_switch
 void context_switch(struct exec_domain *prev, struct exec_domain *next)
 {
-       switch_to(prev,next);
+printk("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
+printk("@@@@@@ context switch from domain %d (%x) to domain %d (%x)\n",
+prev->domain->id,(long)prev&0xffffff,next->domain->id,(long)next&0xffffff);
+printk("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
+if (prev->domain->id == 1 && next->domain->id == 0) cs10foo();
+if (prev->domain->id == 0 && next->domain->id == 1) cs01foo();
+       switch_to(prev,next,prev);
        clear_bit(EDF_RUNNING, &prev->ed_flags);
        //if (!is_idle_task(next->domain) )
                //send_guest_virq(next, VIRQ_TIMER);
-       schedule_tail(next);
+       load_region_regs(current);
+}
+
+void panic_domain(struct pt_regs *regs, const char *fmt, ...)
+{
+       va_list args;
+       char buf[128];
+       struct exec_domain *ed = current;
+       static volatile int test = 1;   // so can continue easily in debug
+    
+       printf("$$$$$ PANIC in domain %d:",ed->domain->id);
+       va_start(args, fmt);
+       (void)vsnprintf(buf, sizeof(buf), fmt, args);
+       va_end(args);
+       if (regs) show_registers(regs);
+       while(test);
 }
diff -Nru a/xen/include/asm-ia64/config.h b/xen/include/asm-ia64/config.h
--- a/xen/include/asm-ia64/config.h     2005-03-25 19:02:53 -05:00
+++ b/xen/include/asm-ia64/config.h     2005-03-25 19:02:53 -05:00
@@ -1,6 +1,6 @@
 // control flags for turning on/off features under test
-#undef CLONE_DOMAIN0
-//#define CLONE_DOMAIN0 1
+//#undef CLONE_DOMAIN0
+#define CLONE_DOMAIN0 1
 //#undef CLONE_DOMAIN0
 #define USER_ACCESS
 


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] config.h, xenmisc.c, xenasm.S, process.c, domain.c:, BitKeeper Bot <=