[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] Fixfor xen bug 1306: Dom0 hangs when destoryingone guest with MSI NIC assigned
Sorry for non-responsiveness (holidays, off-line). You're absolutely right on these problems. Screwup on my part. \me feels reeally stupid now. eSk [Haitao Shan] > Hi, Keir, > Since I have got no response from Espen, I try to fix the bug > myself. Please see the attached patch. Description: This patch will > fix bug 1306. The reason is explained in my former mail. This patch > also removes hard tabs in msi.c. > Signed-off-by: Shan Haitao <Haitao.shan@xxxxxxxxx> > Best Regards > Shan Haitao > -----Original Message----- > From: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx > [mailto:xen-devel-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Shan, Haitao > Sent: 2008$BG/(J7$B7n(J29$BF|(J 15:22 > To: Espen Skoglund; Keir Fraser > Cc: Jiang, Yunhong; xen-devel@xxxxxxxxxxxxxxxxxxx; Li, Xin B; Li, Susie > Subject: [Xen-devel] Root cause of xen bug 1306: Dom0 hangs when > destoryingone guest with MSI NIC assigned > Hi, Espen, > Some recent changsets break the MSI function. Please see my comments embedded > in the following code snippet. > Another problem is the following function is invoked by pci_release_devices, > which is executed before iommu_domain_destroy. However, the following > function must be executed after unbinding all guest pirqs. The unbinding code > is located in iommu_domain_destroy. > I am not familiar with recent IOMMU code. Could you please have a look? > static void msi_free_vectors(struct pci_dev* dev) > { > struct msi_desc *entry, *tmp; > irq_desc_t *desc; > unsigned long flags; > retry: > list_for_each_entry_safe( entry, tmp, &dev->msi_list, list ) > { > desc = &irq_desc[entry->vector]; > local_irq_save(flags); > if ( !spin_trylock(&desc->lock) ) > { > local_irq_restore(flags); > goto retry; > } > spin_lock_irqsave(&desc->lock, flags); > -----$B"*(Jthe above line should be removed, otherwise dead lock will occur > by acquiring a lock already acquired. > if ( desc->handler == &pci_msi_type ) > { > /* MSI is not shared, so should be released already */ > BUG_ON(desc->status & IRQ_GUEST); desc-> handler = &no_irq_type; > } > msi_free_vector(entry->vector); > spin_unlock_irqrestore(&desc->lock, flags); > } > } > Best Regards > Shan Haitao > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |