NVMe driver accidentally reverted to use GSI instead of MSIX
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[Impact]
These commit ids are in the xenial kernel branch.
Commit 90c9712fbb38807
interrupts") changed the NVMe driver to always use MSI/MSI-x interrupts.
However, later commit 30d6592fce71bea
unmap controller registers on reset") as well as commit
e9820e415895bdd
controller registers on reset") accidentally reverted part of the original
commit, which reverted the NVMe driver to using GSI interrupts instead of
always using MSI/MSI-x interrupts.
The original commit was added because GSI interrupts do not always work for NVMe on all systems, while MSI/MSIX interrupts do work. The accidental reversion of the code to use MSI/MSIX causes the NVMe driver to not work on some systems with NVMe drives.
[Test Case]
On a system with NVMe drive(s) that do not work (because the NVMe driver is using the non-working GSI interrupt, instead of MSI/MSIX interrupt), test the current xenial kernel, and some or all of the NVMe drives will fail to initialize. Then test with the fixed kernel, and all the NVMe drives will initialize.
[Regression Potential]
If MSI/MSIX interrupts do not work with NVMe drives on some systems, this change would break those systems. Those systems would also be broken by the upstream kernel, however; additionally, without MSI/MSIX support, such NVMe controllers would be significantly slower due to reliance on a single GSI for notification of completion of all I/O. So it's very unlikely there are any systems with NVMe controllers that do not support MSI/MSI-x.
[Other Info]
Changed in linux (Ubuntu): | |
importance: | Undecided → Medium |
status: | Incomplete → Triaged |
Changed in linux (Ubuntu Xenial): | |
status: | Confirmed → Fix Committed |
Changed in linux (Ubuntu): | |
status: | Triaged → Fix Released |
tags: | added: cscc |
This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:
apport-collect 1647887
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.