This bug was fixed in the package linux - 3.16.0-21.28 --------------- linux (3.16.0-21.28) utopic; urgency=low
[ Andy Whitcroft ] * [Config] linux-image-extra is additive to linux-image - LP: #1375310 * [Config] linux-image-extra postrm is not needed on purge [ dann frazier ] * [Config] run updateconfigs after adding arm64 PCI support * SAUCE: (no-up) Fix pcie-xgene build failure [ Ming Lei ] * SAUCE: (no-up) apm: pcie: fix hang when no card connected [ Tanmay Inamdar ] * SAUCE: (no-up) arm64: PCI(e) arch support * SAUCE: (no-up) pci: APM X-Gene PCIe controller driver * SAUCE: (no-up) arm64: dts: APM X-Gene PCIe device tree nodes * SAUCE: (no-up) dt-bindings: pci: xgene pcie device tree bindings * SAUCE: (no-up) MAINTAINERS: entry for APM X-Gene PCIe host driver * SAUCE: (no-up) Add MSI/MSI-X driver for APM PCI bus - LP: #1318977 [ Tim Gardner ] * rebase to v3.16.4 * Release Tracking Bug - LP: #1377905 [ Tuan Phan ] * SAUCE: (no-up) pci-xgene-msi: fixed deadlock in irq_set_affinity - LP: #1359514 [ Upstream Kernel Changes ] * drm/nouveau: make sure display hardware is reinitialised on runtime resume - LP: #1374607 [ Upstream Kernel Changes ] * rebase to v3.16.4 -- Tim Gardner <tim.gard...@canonical.com> Fri, 03 Oct 2014 12:10:48 -0400 ** Changed in: linux (Ubuntu Utopic) Status: In Progress => Fix Released -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1359514 Title: pci-xgene-msi: fixed deadlock in irq_set_affinity Status in “linux” package in Ubuntu: Fix Released Status in “linux” source package in Trusty: Fix Released Status in “linux” source package in Utopic: Fix Released Bug description: [IMPACT] Issue: CPU affinity is changed while irqbalance is running. + Problem explanation: - Old code + Call xgene_msi_cascade function (CPU x) + raw_spin_lock(&desc->lock); (CPU x) + Goto generic_handle_irq (CPU x) + The CPU x doesn't have a chance to exit the xgene_msi_cascade function to unlock desc->lock before Linux scheduce and call xgene_msi_set_affinity (irqbalance is caller) in the same CPU x + In irq_set_affinity, call raw_spin_lock_irqsave(&desc->lock, flags) which cause deadlock to CPU x because it disables preempt - New code + Use chained_irq_enter and exit as the standard way to cascade interrupt functions. [TEST CASE] Turn off irqbalance Run a single tcp stream Randomly change the affinity of the receiving ring: @ ethtool -S $INTF | grep rx[0-9].*_pac @ - to detect the rx ring @ grep $INTF /proc/interrupts@ - to find it's interrupt @ printf "%x" $(( 2 ** $((RANDOM % 8)) )) > /proc/irq/$IRQ/smp_affinity @ - to change the affinity [Regression Potential] Fix specific to the xgene pci msi code. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1359514/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp