[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [VTD][patch 1/5] HVM device assignment using vt-d
> Yes, this is a bug. How about moving the last > > spin_unlock_irqrestore(&iommu->lock, flags); > > outside of the if-statement? That looks good to me :-) Cheers, Mark > Allen > > >-----Original Message----- > >From: M.A. Williamson [mailto:maw48@xxxxxxxxxxxxxxxx] On > >Behalf Of Mark Williamson > >Sent: Wednesday, May 30, 2007 6:38 PM > >To: xen-devel@xxxxxxxxxxxxxxxxxxx > >Cc: Kay, Allen M > >Subject: Re: [Xen-devel] [VTD][patch 1/5] HVM device > >assignment using vt-d > > > >On Wednesday 30 May 2007, Kay, Allen M wrote: > >> vtd1.patch: > >> - vt-d specific code > >> - low risk changes in common code > >> > >> Signed-off-by: Allen Kay <allen.m.kay@xxxxxxxxx> > >> Signed-off-by: Xiaohui Xin <xiaohui.xin@xxxxxxxxx> > > > >iommu_set_root_entry can exit with locking. Is this > >unintentional behaviour? > > > >/* iommu handling */ > >static int iommu_set_root_entry(struct iommu *iommu) > >{ > > void *addr; > > u32 cmd, sts; > > struct root_entry *root; > > unsigned long flags; > > > > if (iommu == NULL) > > gdprintk(XENLOG_ERR VTDPREFIX, > > "iommu_set_root_entry: iommu == NULL\n"); > > > > spin_lock_irqsave(&iommu->lock, flags); > > > >MAW: if iommu->root_entry is already set at this point > > > > if (!iommu->root_entry) { > > spin_unlock_irqrestore(&iommu->lock, flags); > > root = (struct root_entry *)alloc_xenheap_page(); > > memset((u8*)root, 0, PAGE_SIZE); > > iommu_flush_cache_page(iommu, root); > > spin_lock_irqsave(&iommu->lock, flags); > > > > if (!root && !iommu->root_entry) { > > spin_unlock_irqrestore(&iommu->lock, flags); > > return -ENOMEM; > > } > > > > if (!iommu->root_entry) > > iommu->root_entry = root; > > else /* somebody is fast */ > > free_xenheap_page((void *)root); > > spin_unlock_irqrestore(&iommu->lock, flags); > > } > > > >MAW: then we never unlock iommu->lock. In all other cases > >it's released > >before we return. > > > >Cheers, > >Mark > > > >-- > >Dave: Just a question. What use is a unicyle with no seat? > >And no pedals! > >Mark: To answer a question with a question: What use is a skateboard? > >Dave: Skateboards have wheels. > >Mark: My wheel has a wheel! -- Dave: Just a question. What use is a unicyle with no seat? And no pedals! Mark: To answer a question with a question: What use is a skateboard? Dave: Skateboards have wheels. Mark: My wheel has a wheel! _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |