The first patch allows us to rely on one less heuristic by taking
advantage of information recently made available to us through the
kernel image. The second patch enables analysis of qemu generated
dump files.
v3:
- Forgot the type == 'A' check needed to avoid a ton of unnecessary
strcmps [drew]
v2:
- Drop "arm64: relax symbol filters" patch and just stash the value of
the one absolute symbol we need "_kernel_flags_le". [Dave Anderson]
Also, while working on this, I testing several dumps. The following are
my results.
arm/aarch64 kvm guest kdump testing (P - PASS, F - FAIL). Testing done
with a latest mainline crash utility patched with these patches and a
latest mainline qemu with patches for dump generation.
.-----------------------------------------------------------------------.
| Host | arm32 | arm64 | arm64 | arm64 |
|---------------------------------------|-------|-------|-------|-------|
| Guest | arm32 | arm64 | arm64 | arm32 |
|---------------------------------------|-------|-------|-------|-------|
| Pagesize| 4K | 4K | 64K | 4K |
|=======================================================================|
| kdump in guest | F[1] | P[2] | P[3] | F[1] |
|---------------------------------------|-------|-------|-------|-------|
| qmp-dump-guest-memory <filename>[4] | P | P | P | P |
|---------------------------------------|-------|-------|-------|-------|
| qmp-dump-guest-memory -z <filename>[5]| F[8] | P | P | F[8] |
|---------------------------------------|-------|-------|-------|-------|
| qmp-dump-guest-memory -l <filename>[6]| F[8] | P | P | F[8] |
|---------------------------------------|-------|-------|-------|-------|
| qmp-dump-guest-memory -s <filename>[7]| F[8] | P | P | F[8] |
.-----------------------------------------------------------------------.
[1] Kernel v4.4-rc1 crashes with a NULL pointer dereference at virtual
address 00000000 in a memcpy (crash_kexec/machine_kexec/fncpy/memcpy).
Needs kernel debugging.
[2] Not sure about mainline, but works with the RHEL kernel,
makedumpfile does not yet support arm64 with 4K pages, but using
'core_collector cp' in /etc/kdump.conf allows saving an uncompressed
elf file.
[3] Not sure about mainline, but works with the RHEL kernel,
uses makedumpfile, thus generates a makedumpfile formatted file
using zlib compression.
[4] No format specified, creates an uncompressed elf formatted file.
[5] makedumpfile format, with zlib compression
[6] makedumpfile format, with lzo compression
[7] makedumpfile format, with snappy compression
[8] The crash utility doesn't seem to like arm32 dumps in makedumpfile
format. Looks like the physical page bitmap is all zeros? Needs
qemu and crash debugging.
Andrew Jones (2):
arm64: read pagesize
arm/arm64: read elf notes for qemu generated cores
arm.c | 22 ++++++++++++++++++++++
arm64.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
defs.h | 2 ++
netdump.c | 21 +++++++++++++++++++++
4 files changed, 97 insertions(+)
--
2.4.3