[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Deadlocks by p2m_lock and event_lock
Hi, Jan and Andres Here we met a deadlocks issue by p2m_lock and event_lock on Xen. The issue appears from the series of patches "Synchronized p2m lookups, Xen 24770~", deadlocks may happen on a specifical case: Assign a PCIe device with MSI-x capability to HVM guest(in case of EPT). I've dump the all processor registers when dom0 hang( attach the log). The deadlocks happen as follows: ====CPU0=== map_domain_pirq() Grab event_lock / Pci_enable_msi() / msix_capability_init() / p2m_change_entry_type_global() Trying to acquire p2m_lock ====CPU9=== hvm_hap_nested_page_fault() -> get_gfn_type_access() Grab p2m_lock / handle_mmio() / ... / notify_via_xen_event_channel() Trying to acquire event_lock The event_lock is used anywhere in Xen, I only have a patch of workaround this issue for proposal, but not for the final fix. Any good suggestion? diff -r f61120046915 xen/arch/x86/irq.c --- a/xen/arch/x86/irq.c Wed Mar 07 11:50:31 2012 +0100 +++ b/xen/arch/x86/irq.c Sat Mar 10 02:06:18 2012 +0800 @@ -1875,10 +1875,12 @@ int map_domain_pirq( if ( !cpu_has_apic ) goto done; + spin_unlock(&d->event_lock); pdev = pci_get_pdev(msi->seg, msi->bus, msi->devfn); ret = pci_enable_msi(msi, &msi_desc); if ( ret ) goto done; + spin_lock(&d->event_lock); spin_lock_irqsave(&desc->lock, flags); Best Regards, Xudong Hao Attachment:
registers_dump.log _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |