[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [win-pv-devel] Advice on evtchn interrupt handling



> -----Original Message-----
> From: win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx [mailto:win-pv-devel-
> bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Rafal Wojdyla
> Sent: 09 December 2015 10:19
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Subject: [win-pv-devel] Advice on evtchn interrupt handling
> 
> Hi,
> 
> I found an issue in my evtchn handling in xeniface that I'm not sure how
> to properly fix. Namely, the interrupt callback that's assigned for a
> particular channel can be called before its queued DPC (that signals the
> caller-provided event) finishes. In such case the interrupt callback
> fails to insert the DPC again and an event is lost, potentially causing
> a vchan "deadlock" down the way.
> 

Hi Rafal,

That shouldn't be the case. Windows de-queues a DPC before running for 
precisely this kind of reason. I.e. just because your DPC is running, it should 
not stop another from being queued. Are you definitely seeing a failure to 
queue even when no DPC is actually queued? What you may actually be getting 
caught by is evtchn auto-masking. If you have enabled auto-masking then you 
need to explicitly unmask at the end of your DPC. (The transmitter and receiver 
ring DPCs in XENVIF are a good example of this).

Cheers,

  Paul

> Any advice on how to approach this? The interrupt callback runs at
> HIGH_LEVEL which is an issue when it comes to synchronization with some
> other code that could take care of such "pending" events.
> 
> Also I wonder if the kernel differentiates DPCs only by their KDPC
> address, or also by arguments passed to KeInsertQueueDpc()?
> 
> --
> RafaÅ WojdyÅa
> Qubes Tools for Windows developer
> https://www.qubes-os.org/
> 
> _______________________________________________
> win-pv-devel mailing list
> win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.