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. > >> +int kvm_irq_check_lockless(struct kvm *kvm, u32 irq) >> > > bool kvm_irq_check_lockless(...) We lose the ability to detect failure (such as ENOENT) if we do this, but its moot if we move to the ->set_atomic() model, since this attribute is no longer necessary and this patch can be dropped. Kind Regards, -Greg
Attachment:
signature.asc
Description: OpenPGP digital signature