pci-xgene-msi: fixed deadlock in irq_set_affinity
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Medium
|
Craig Magina | ||
Trusty |
Fix Released
|
Undecided
|
Craig Magina | ||
Utopic |
Fix Released
|
Medium
|
Craig Magina |
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_
+ 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_
+ In irq_set_affinity, call raw_spin_
- 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/
[Regression Potential]
Fix specific to the xgene pci msi code.
Changed in linux (Ubuntu): | |
importance: | Undecided → Medium |
tags: | added: kernel-da-key |
Changed in linux (Ubuntu): | |
status: | Incomplete → Confirmed |
Changed in linux (Ubuntu): | |
status: | Confirmed → Triaged |
tags: | added: patch |
Changed in linux (Ubuntu Trusty): | |
assignee: | nobody → Craig Magina (craig.magina) |
status: | New → Fix Committed |
Changed in linux (Ubuntu Utopic): | |
assignee: | nobody → Craig Magina (craig.magina) |
milestone: | none → ubuntu-14.10 |
status: | Triaged → In Progress |
tags: |
added: verification-done-trusty removed: verification-needed-trusty |
This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:
apport-collect 1359514
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.