← Back to team overview

kernel-packages team mailing list archive

[Bug 1359514] Re: pci-xgene-msi: fixed deadlock in irq_set_affinity

 

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.gardner@xxxxxxxxxxxxx>   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


References