arm64 kernel crashdump support
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
kexec-tools (Ubuntu) |
Fix Released
|
Undecided
|
dann frazier | ||
Xenial |
Fix Released
|
Undecided
|
dann frazier | ||
Yakkety |
Won't Fix
|
Undecided
|
dann frazier | ||
Zesty |
Fix Released
|
Undecided
|
dann frazier | ||
Artful |
Fix Released
|
Undecided
|
Unassigned | ||
linux (Ubuntu) |
Fix Released
|
Undecided
|
dann frazier | ||
Xenial |
Won't Fix
|
Undecided
|
Unassigned | ||
Yakkety |
Won't Fix
|
Undecided
|
Unassigned | ||
Zesty |
Fix Released
|
Medium
|
dann frazier | ||
Artful |
Fix Released
|
Undecided
|
Unassigned | ||
makedumpfile (Debian) |
Fix Released
|
Unknown
|
|||
makedumpfile (Ubuntu) |
Fix Released
|
Undecided
|
dann frazier | ||
Xenial |
Fix Released
|
Undecided
|
dann frazier | ||
Yakkety |
Won't Fix
|
Undecided
|
dann frazier | ||
Zesty |
Fix Released
|
Undecided
|
dann frazier | ||
Artful |
Fix Released
|
Undecided
|
dann frazier |
Bug Description
Note: Updates are being staged at ppa:dannf/
[Impact]
It is not possible to collect a kernel crash dump from a crashed arm64 server for later debugging.
[Test Case]
sudo apt install kdump-tools
(reboot, so crashkernel= is added to the kernel commandline)
echo c | sudo tee /proc/sysrq-trigger
Crash dump should occur, with artifacts collected in /var/crash.
If you want to verify that the dump is usable, install the corresponding linux-image-
sudo crash /usr/lib/
crash should successfully load, placing you at a "crash>" prompt. At that prompt, you can issue the 'bt' command to see a backtrace.
Note: you need crash from zesty (7.1.8-1ubuntu1) or later.
[Regression Risk]
= Kernel =
3 patches here touch code outside of arch/arm64/:
memblock: add memblock_
This adds a new function with no callers, so regression risk is negligible.
(A later patch adds a call to it under arch/arm64/).
memblock: add memblock_
This refactors some of the code in memblock_
efi/libstub/arm*: Set default address and size cells values for an empty dtb
Because this code is for EFI platforms that support device-tree, it is de-facto ARM-specific (as noted in the patch title).
For arm64, we have mitigated the risk by explicit regression testing on several platforms:
- Qualcomm QDF2400
- Cavium ThunderX CRB1S
- HP m400 (X-Gene)
- HiSilicon D05 (Hi07)
= kexec-tools =
== zesty ==
For zesty, 10 patches are required to add kdump support.
0001-kexec-
This modifies a function used on armhf & x86. The description explains the change, and why it does not impact those archs:
-----
The current users of kexec_iomem_
be affected by this change because
* arm
The callback function only returns -1 or 0, and the return value of
kexec_
* sh, x86
The callback function may return (-1 for sh,) 0 or 1, but always returns
1 once we have reached the maximum number of entries allowed.
Even so the current kexec_iomem_
This change actually fixes this bug.
-----
0002-kexec-
This generalizes a function that was duplicated by arm & x86 and makes it common so arm64 can use it.
The remaining 8 of these only touch code in kexec/arch/arm64, so regression risk for other architectures is negligible.
Finally, I have tested this update on both i386 and amd64 VMs. i386 crashes do not currently work in zesty (filed LP: #1699874), and my test results show no change there. amd64 worked before, and continues to work with these changes.
== yakkety ==
Since yakkety is based on an older upstream, 6 additional patches are required:
arm-fix-
This is a cleanup patch, cherry-picked because it allows later patches to apply w/o backporting. ARM-specific.
kexec-add-
Adds a new element to struct, to be used by later commits.
kexec-add-
kexec-add-
kexec-add-
kexec-fix-
These patches only add new functions, which will be used by later patches.
kexec-arch-
This is a bug fix or i386 that allows later patches to apply w/o backporting.
kdump support for i386 is apparently broken for the yakkety kernel (see LP: #1699874) so, if this introduces a regression, it won't be detectable.
(I checked to see if this *fixes* i386 crashdumps - it does not).
Note that, while makedumpfile in >= zesty is new enough to work on arm64, the yakkety version does not. kdump-tools falls back to copying the entire vmcore, which is what I tested.
As with zesty, I have tested this update on both i386 and amd64 VMs. i386 crashes do not currently work in yakkety, and my test results show no change there. amd64 worked before, and continues to work with these changes.
= xenial =
The patchset needed for xenial is identical to the patchset for yakkety. The only additional change is to add arm64 to the list of archs that get a /etc/default/grub.d snippet (in yakkety that snippet moved over to kdump-tools), and that has negligible regression risk for !arm64.
I performed the same testing as with yakkety. The only significant difference is that i386 worked before and after this update (for y/z/a it worked neither before nor after).
CVE References
no longer affects: | linux (Ubuntu Yakkety) |
Changed in linux (Ubuntu): | |
status: | Incomplete → Confirmed |
Changed in linux (Ubuntu Zesty): | |
status: | Incomplete → Confirmed |
description: | updated |
Changed in makedumpfile (Ubuntu): | |
status: | New → Confirmed |
Changed in makedumpfile (Ubuntu Xenial): | |
status: | New → Confirmed |
Changed in makedumpfile (Ubuntu Zesty): | |
status: | New → Confirmed |
Changed in kexec-tools (Ubuntu): | |
assignee: | nobody → dann frazier (dannf) |
Changed in kexec-tools (Ubuntu Zesty): | |
assignee: | nobody → dann frazier (dannf) |
status: | Confirmed → In Progress |
Changed in linux (Ubuntu): | |
assignee: | nobody → dann frazier (dannf) |
Changed in linux (Ubuntu): | |
status: | Confirmed → In Progress |
no longer affects: | kexec-tools (Ubuntu Yakkety) |
Changed in kexec-tools (Ubuntu Yakkety): | |
assignee: | nobody → dann frazier (dannf) |
status: | New → Confirmed |
Changed in makedumpfile (Ubuntu Yakkety): | |
assignee: | nobody → dann frazier (dannf) |
status: | New → Confirmed |
Changed in linux (Ubuntu Yakkety): | |
status: | New → Won't Fix |
Changed in linux (Ubuntu Zesty): | |
assignee: | nobody → dann frazier (dannf) |
status: | Confirmed → In Progress |
Changed in linux (Ubuntu Xenial): | |
status: | Incomplete → Won't Fix |
description: | updated |
description: | updated |
Changed in linux (Ubuntu Zesty): | |
importance: | Undecided → Medium |
status: | In Progress → Fix Committed |
tags: | added: qdf2400 |
Changed in kexec-tools (Ubuntu Xenial): | |
assignee: | nobody → dann frazier (dannf) |
Changed in makedumpfile (Ubuntu): | |
assignee: | nobody → dann frazier (dannf) |
Changed in makedumpfile (Ubuntu Xenial): | |
assignee: | nobody → dann frazier (dannf) |
Changed in makedumpfile (Ubuntu Zesty): | |
assignee: | nobody → dann frazier (dannf) |
Changed in linux (Ubuntu): | |
status: | In Progress → Fix Committed |
description: | updated |
description: | updated |
Changed in kexec-tools (Ubuntu Yakkety): | |
status: | Confirmed → In Progress |
description: | updated |
Changed in kexec-tools (Ubuntu Xenial): | |
status: | Confirmed → In Progress |
description: | updated |
description: | updated |
description: | updated |
Changed in kexec-tools (Ubuntu Yakkety): | |
status: | In Progress → Won't Fix |
Changed in linux (Ubuntu Artful): | |
status: | New → Fix Released |
Changed in makedumpfile (Ubuntu Artful): | |
assignee: | nobody → dann frazier (dannf) |
status: | New → In Progress |
Changed in kexec-tools (Ubuntu Artful): | |
status: | New → Fix Released |
Changed in makedumpfile (Debian): | |
status: | Unknown → Fix Released |
Changed in makedumpfile (Ubuntu Artful): | |
status: | In Progress → Fix Released |
This bug is missing log files that will aid in diagnosing the problem. From a terminal window please run:
apport-collect 1694859
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.