[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 5/6] VT-d: No need to set irq affinity for posted format IRTE
>>> On 21.09.16 at 04:37, <feng.wu@xxxxxxxxx> wrote: > We don't set the affinity for posted format IRTE, since the > destination of these interrupts is vCPU and the vCPU affinity > is set during vCPU scheduling. I'm quite sure I did point out before that you talk about just affinity changes here, yet ... > --- a/xen/drivers/passthrough/vtd/intremap.c > +++ b/xen/drivers/passthrough/vtd/intremap.c > @@ -637,9 +637,12 @@ static int msi_msg_to_remap_entry( > remap_rte->address_hi = 0; > remap_rte->data = index - i; > > - memcpy(iremap_entry, &new_ire, sizeof(struct iremap_entry)); > - iommu_flush_cache_entry(iremap_entry, sizeof(struct iremap_entry)); > - iommu_flush_iec_index(iommu, 0, index); > + if ( !iremap_entry->remap.p || !iremap_entry->remap.im ) > + { > + memcpy(iremap_entry, &new_ire, sizeof(struct iremap_entry)); > + iommu_flush_cache_entry(iremap_entry, sizeof(struct iremap_entry)); > + iommu_flush_iec_index(iommu, 0, index); > + } ... you suppress the update also in other cases. This _may_ be safe at present, but you're digging a hole for someone else to fall into down the road. Hence at the very least you should, in a to be added "else" path, ASSERT() that nothing in the descriptor changed except the bits representing affinity. Even better would be if in fact you suppressed the update+flush only when nothing other than dst changed. Also, since you already touch this, please consider switching from the type-unsafe memcpy() to type-safe structure assignment. And please in any event change the sizeof()-s to sizeof(*iremap_entry). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |