|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] Clock Interrupt not occurring. hypervisor_callback not b
On 2/28/06, Dave Winchell <dwinchell@xxxxxxxxxxxxxxx> wrote:
> Have you tried making evtchn_pending and evtchn_mask volatile in
> shared_info_t?
I tried that. It's still showing the same behaviour. The function is
as below. When the kprintf("l1 ... bit is uncommented, the clock
events seem to get fired fine, and the the main loop also continues to
run. When removed, it doesn't get called at all. It never gets as far
as do_event. kprintf is a function that calls hypervisor_console_io.
This is 2.0.7 btw.
Regards
Ivan
<SNIP>
PUBLIC void
do_hypervisor_callback(struct stackframe_s *regs)
{
unsigned long l1, l2;
unsigned int l1i, l2i, port;
int irq;
shared_info_t *s = hypervisor_shared_info;
s->vcpu_data[0].evtchn_upcall_pending = 0;
l1 = x86_atomic_xchg(&s->evtchn_pending_sel, 0);
while ( l1 != 0 )
{
/* kprintf("l1: %x\n");*/
l1i = x86_scan_forward(l1);
l1 &= ~(1 << l1i);
l2 = s->evtchn_pending[l1i] & ~s->evtchn_mask[l1i];
while ( l2 != 0 )
{
kprintf("l2: %x\n", l2);
l2i = x86_scan_forward(l2);
l2 &= ~(1 << l2i);
port = (l1i << 5) + l2i;
if ( (irq = event_to_action[port]) != -1 ) {
do_event(irq, regs);
}
}
}
}
<ENDSNIP>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|