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
|