Xen MSI setup code incorrectly re-uses cached pirq
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
High
|
Dan Streetman | ||
Trusty |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned | ||
Yakkety |
Fix Released
|
Undecided
|
Unassigned | ||
Zesty |
Fix Released
|
High
|
Dan Streetman |
Bug Description
[Impact]
This bug fixes the root problem reported in bug 1648449, so its description can be mostly reused here:
On an Amazon AWS instance that has NVMe drives, the NVMe drives fail to initialize, and so aren't usable by the system. If one of the NVMe drives contains the root filesystem, the instance won't boot.
[Test Case]
Boot an AWS instance with multiple NVMe drives. All except the first will fail to initialize, and errors will appear in the system log (if the system boots at all). With a patched kernel, all NVMe drives are initialized and enumerated and work properly.
[Regression Potential]
Patching the Xen MSI setup function may cause problems with other PCI devices using MSI/MSIX interrupts on a Xen guest.
Note this patch restores correct behavior for guests running under Xen 4.5 or later hypervisors - specifically Xen hypervisors with qemu 2.1.0 or later. For Xen hypervisors with qemu 2.0.0 or earlier, this patch causes a regression. With an Ubuntu hypervisor, Vivid or later qemu is patched, as well as UCA Kilo or later qemu. Trusty qemu or UCA Icehouse qemu are not patched - see bug 1657489.
[Other Info]
The patch from bug 1648449 was only a workaround, that changed the NVMe driver to not trigger this Xen bug. However, there have been reports of that patch causing non-Xen systems with NVMe drives to stop working, in bug 1626894. So, the best thing to do is revert the workaround patch (and its regression fix patch from bug 1651602) back to the original NVMe drive code, and apply the real Xen patch to fix the problem. That should restore functionality for non-Xen systems, and should allow Xen systems with multiple NVMe controllers to work.
Upstream discussion:
https:/
Related: bug 1657489 ("qemu-xen: free all the pirqs for msi/msix when driver unload")
Changed in linux (Ubuntu): | |
assignee: | nobody → Dan Streetman (ddstreet) |
status: | New → In Progress |
importance: | Undecided → High |
Changed in linux (Ubuntu Xenial): | |
status: | New → Fix Committed |
Changed in linux (Ubuntu Yakkety): | |
status: | New → Fix Committed |
description: | updated |
Changed in linux (Ubuntu Trusty): | |
status: | New → Fix Committed |
Changed in linux (Ubuntu): | |
status: | In Progress → Fix Released |
This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification- needed- yakkety' to 'verification- done-yakkety' . If the problem still exists, change the tag 'verification- needed- yakkety' to 'verification- failed- yakkety' .
If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.
See https:/ /wiki.ubuntu. com/Testing/ EnableProposed for documentation how to enable and use -proposed. Thank you!