|  |  | 
  
    |  |  | 
 
  |   |  | 
  
    |  |  | 
  
    |  |  | 
  
    |   xen-ppc-devel
Re: [XenPPC] current crash 
| 
On Aug 25, 2006, at 8:29 AM, Orran Y Krieger wrote:
 Certainly...  the test os maps itself in V==R, and it seems to have  
a call
Recall the lineage of this code was for chip validation, so it does  
not surprise me that some wasteful tho validating
to check for each entry before mapping it.
 
 
Seems kinda silly... but the
code has a ton of ifdefs for processors with software loaded  
TLB.... very
yucky, and I have a feeling that the code was cut and pasted a  
couple of 
times.
 
I doubt that, but some of that libOS code was poorly written, some  
took liberties in the rhype/test directory. 
 
Debugging was a pain, since printfs where not flushed... so 10  
minute cycle 
time for rebooting to do a binary search with a while(1).
 
I assume you are speaking of DomU console output?
I'm not sure if there is anyway to force a flush since the system  
assumes no one is listening :( 
 
Tried two things
to help me debug, might be of value to discuss.  First, I tried  
yielding
the processor a few hundred times after each printf.  This didn't  
help at
all. I have a feeling that the problem here is that I am only  
writting to
event channel, not consuming events, so the yeild doesn't actually  
yield 
the processor.   Is this worth exploring?
 
Yield does not do much other then allow something else to be  
scheduled, but you come right back and not necessarily running any  
other domain before you come back. 
 Very good idea, this will block until you have an asynchronous  
interrupt.
That interrupt is eether and timer alarm you have programed or an  
evtchn.
In order for either of these to be delivered to you (in order to wake  
you from your block) the clokcing hcall will assert EE on. this is  
done in:
  include/asm-powerpc/event.h local_event_delivery_enable 49 static  
inline void local_event_delivery_enable(void )
This morning I decided to explore blocking the VCPU instead of  
yielding.
 
 
It resulted in a BUG_ON in Xen in external.c line 63
/* XXX OS error: EE was set but RI was not. We could trigger a  
machine
     * check, or kill the domain... for now just crash Xen so we  
notice. */ 
    BUG_ON(!(regs->msr & MSR_RI));
 
I need to study this a bit more, but it is important that your OS  
assert RI in its MSR anytime it is not in an "exception handling  
critical section" (my words).  Not sure if libOS even mamnages this  
bit, if not then just leave it on for now. 
-JX
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
 | 
 |  | 
  
    |  |  |