Re: [Alacrityvm-devel] [KVM PATCH v2 1/2] KVM: export lockless GSI attribute

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

 



Gregory Haskins wrote:
> Avi Kivity wrote:
>> On 10/23/2009 04:38 AM, Gregory Haskins wrote:
>>> Certain GSI's support lockless injecton, but we have no way to detect
>>> which ones at the GSI level.  Knowledge of this attribute will be
>>> useful later in the series so that we can optimize irqfd injection
>>> paths for cases where we know the code will not sleep.  Therefore,
>>> we provide an API to query a specific GSI.
>>>
>>>    
>> Instead of a lockless attribute, how about a ->set_atomic() method.  For 
>> msi this can be the same as ->set(), for non-msi it can be a function 
>> that schedules the work (which will eventually call ->set()).
>>
>> The benefit is that we make a decision only once, when preparing the 
>> routing entry, and install that decision in the routing entry instead of 
>> making it again and again later.
> 
> Yeah, I like this idea.  I think we can also get rid of the custom
> workqueue if we do this as well, TBD.

So I looked into this.  It isn't straight forward because you need to
retain some kind of state across the deferment on a per-request basis
(not per-GSI).  Today, this state is neatly tracked into the irqfd
object itself (e.g. it knows to toggle the GSI).

So while generalizing this perhaps makes sense at some point, especially
if irqfd-like interfaces get added, it probably doesn't make a ton of
sense to expend energy on it ATM.  It is basically a generalization of
the irqfd deferrment code.  Lets just wait until we have a user beyond
irqfd for now.  Sound acceptable?

In the meantime, I found a bug in the irq_routing code, so I will submit
a v3 with this fix, as well as a few other things I improved in the v2
series.

Kind Regards,
-Greg

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux