[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH resend 2/3] x86: enable multi-vector MSI
>>> On 16.07.13 at 13:36, Andrew Cooper <andrew.cooper3@xxxxxxxxxx> wrote: > On 16/07/13 11:14, Jan Beulich wrote: >> +int get_free_pirqs(struct domain *d, unsigned int nr) >> +{ >> + unsigned int i, found = 0; >> + >> + ASSERT(spin_is_locked(&d->event_lock)); >> + >> + for ( i = d->nr_pirqs - 1; i >= nr_irqs_gsi; --i ) >> + if ( is_free_pirq(d, pirq_info(d, i)) ) >> + { >> + pirq_get_info(d, i); >> + if ( ++found == nr ) >> + return i; >> + } >> + else >> + found = 0; >> + >> + return -ENOSPC; >> +} >> + > > Is there any reason why this loop is backwards? Unless I am mistaken, > guests can choose their own pirqs when binding them, reducing the > likelyhood that the top of the available space will be free. This just follows the behavior of get_free_pirq(). I'm not up to having the two behave differently. >> @@ -210,8 +237,15 @@ int physdev_map_pirq(domid_t domid, int >> done: >> spin_unlock(&d->event_lock); >> spin_unlock(&pcidevs_lock); >> - if ( (ret != 0) && (type == MAP_PIRQ_TYPE_MSI) && (*index == -1) ) >> - destroy_irq(irq); >> + if ( ret != 0 ) >> + switch ( type ) >> + { >> + case MAP_PIRQ_TYPE_MSI: >> + if ( *index == -1 ) >> + case MAP_PIRQ_TYPE_MULTI_MSI: >> + destroy_irq(irq); >> + break; >> + } > > Do we not need to create and destroy entry_nr irqs in this function, or > is a multi-vector-msi now considered as just as single irq ? > > I ask because this appears to lack the "repeating certain operations for > all involved IRQs" described in the comment. No, there's a single create_irq() in the function, and having a single destroy_irq() here matches this. The remaining ones (both!) are in map_domain_pirq(). Also, as a general remark, asking for changes in a series that was posted 2.5 months ago (and deferred just because of the 4.3 release process) seems a little strange to me. I had to repost merely to collect ack-s, and didn't really expect further requests for adjustments as there was ample time before to do so. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |