All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: Clock Interrupt not occurring. hypervisor_callback not being called. (more info)
@ 2006-03-01 16:17 Ivan Kelly
  2006-03-01 20:16 ` Dave Winchell
  2006-03-01 22:42 ` Keir Fraser
  0 siblings, 2 replies; 7+ messages in thread
From: Ivan Kelly @ 2006-03-01 16:17 UTC (permalink / raw)
  To: xen-devel

Some more info on this problem.
The problem seems to be that evtchn_pending[0] is not being updated
fast enough after the callback is made. Therefore the callback is
running and seeing nothing as pending and discarding anything that
happens.
If i put in something that delays before the start of the inner loop
somewhere, it will work fine. It doesn't have to be a printf, can be a
for(i=0;i<100000;i++) or something similar.
evtchn_pending is set as volatile. Im not sure if this is actually
helping at all though, since I have to use the ACK compiler which is
the only thing that minix will compile with.

Does anyone have any idea on how i can get evtchn_pending to update on time?
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>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-03-02  0:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-03-01 16:17 Clock Interrupt not occurring. hypervisor_callback not being called. (more info) Ivan Kelly
2006-03-01 20:16 ` Dave Winchell
2006-03-01 22:29   ` Ivan Kelly
2006-03-01 22:48     ` Dave Winchell
2006-03-01 22:42 ` Keir Fraser
2006-03-01 23:04   ` Ivan Kelly
2006-03-02  0:19     ` Ivan Kelly

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.