[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v11 2/6] VT-d: Introduce new fields in msi_desc to track binding with guest interrupt
>>> On 29.03.17 at 07:11, <chao.gao@xxxxxxxxx> wrote: > v11: > - Commit message changes. > - Add code to clear the two new fields introduced in this patch. The latter appears to contradict ... > --- a/xen/arch/x86/msi.c > +++ b/xen/arch/x86/msi.c > @@ -578,6 +578,7 @@ static struct msi_desc *alloc_msi_entry(unsigned int nr) > entry[nr].dev = NULL; > entry[nr].irq = -1; > entry[nr].remap_index = -1; > + entry[nr].pi_desc = NULL; > } ... only pi_desc being cleared here. I think the code is fine here (as you use gvec only when pi_desc is non-NULL), but please try to avoid giving imprecise information in the future. > --- a/xen/drivers/passthrough/io.c > +++ b/xen/drivers/passthrough/io.c > @@ -618,6 +618,8 @@ int pt_irq_destroy_bind( > else > what = "bogus"; > } > + else if ( iommu_intpost && pirq && pirq_dpci->gmsi.posted ) > + pi_update_irte(NULL, pirq, 0); The more I look at this passing of a NULL vCPU pointer, the less I like it: If the pointer was used for anything other than retrieving pi_desc, this would be actively dangerous. I think the function would better be passed a const struct pi_desc * instead. > --- a/xen/include/asm-x86/msi.h > +++ b/xen/include/asm-x86/msi.h > @@ -118,6 +118,8 @@ struct msi_desc { > struct msi_msg msg; /* Last set MSI message */ > > int remap_index; /* index in interrupt remapping table */ > + const struct pi_desc *pi_desc; /* pointer to posted descriptor */ > + uint8_t gvec; /* guest vector. valid when pi_desc > isn't NULL */ > }; Please avoid adding further holes in this structure, by moving gvec right after msi_attrib (I'll also queue a patch to move remap_index up ahead of msg). Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |