|   | 
      | 
  
  
      | 
      | 
  
 
     | 
    | 
  
  
     | 
    | 
  
  
    |   | 
      | 
  
  
    | 
         
xen-devel
Re: [Xen-devel] event_lock not initialized in the idle domain	(permitted
 
On 22/04/2010 23:20, "Byrne, John (HP Labs)" <john.l.byrne@xxxxxx> wrote:
> The prepare_wait_on_xen_event_channel() looks to be totally bogus. The
> notify_via_xen_event_channel() is the source of my problem. The first thing it
> does is grab the lock on the current domain. If the tasklet is running on the
> idle domain, it hangs because the event_lock of the current domain is not
> initialized. Looking at the code for notify_via_xen_event_channel() more
> carefully, it seems it should be calling evtchn_send() instead.
> 
> I could provide a patch that does this. As I said in the my first e-mail, I
> don't see any advantage in doing the notification from a tasklet and my
> inclination would be to delete it as well and just make the call directly. I'm
> a little worried that I am only interested in xenpaging at the moment and it
> looks like it might impact the sharing path as well.
I think your approach of removing the tasklet was the correct one. See
arch/x86/hvm/hvm.c:hvm_send_assist_req() for an example of correct usage of
the *_xen_event_channel() helpers. Firstly, that function doesn't run as a
tasklet; Secondly, in fact 'v' *always* is current. Possibly we should even
ASSERT that on entry to the function to make it clearer.
I think that the correct functions probably are being used, just in the
wrong context. The aim after all is to pause the current vcpu until it
receives assistance from a helper in dom0. That is similar to the existing
(correct) use of *_xen_event_channel() which is to pause an HVM vcpu which
requires help from qemu-dm in a stubdomain or dom0 process.
 -- Keir
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |   
 
 | 
    | 
  
  
    |   | 
    |