 
	
| [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
 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!
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 
 | 
|  | Lists.xenproject.org is hosted with RackSpace, monitoring our |