Commit Graph

25 Commits

Author SHA1 Message Date
Dave Anderson
23939b2c44 Enabled the "crash --log vmcore" command line option on the ARM64
architecture.  Without the patch, the option fails with the message
"crash: crash --log not implemented on ARM64: TBD".
(anderson@redhat.com)
2015-06-04 14:01:38 -04:00
Dave Anderson
2e84d38c93 Enabled the "bt -R" option on the ARM64 architecture. Without the
patch, the option fails with the message "bt: -R option not supported
or applicable on this architecture or kernel".
(anderson@redhat.com)
2015-06-04 10:36:06 -04:00
Dave Anderson
15a58e4070 Enhancement of the ARM64 backtrace capability. Without the patch,
backtraces of the active tasks start at the function that is saved
in each per-cpu ELF note.  With the patch, the backtrace will start
at the "crash_kexec" function on the panicking cpu, and at the
"crash_save_cpu" function on the other active cpus.  By doing so,
the backtrace will display the exception handling functions leading
to crash_kexec() or crash_save_cpu(), as well as the exception frame
register set as it was at the time of the fatal exception on the
panic cpu, or when the shutdown IPI was received on the other cpus.
(anderson@redhat.com)
2015-06-02 16:03:11 -04:00
Dave Anderson
d4040e2fb4 Fixes for the translation of ARM64 PTEs, as displayed by the "vm -p"
and "vtop" commands.  Without the patch, if "vm -p" references a
swapped-out page on Linux 4.0 and later kernels, the SWAP location
may indicate "(unknown swap location)", and will show an invalid
OFFSET value; on Linux 3.13 and later kernels, running "vtop" on a
user virtual address incorrectly translates the PTE contents of
swapped out pages by showing a PHYSICAL address and FLAGS translation
instead of the SWAP device and OFFSET.  It is possible that there may
be PTE bit translation errors on other kernel versions; the patch
addresses the changes in ARM64 PTE bit definitions made in Linux
3.11, 3.13, and 4.0 kernels.
(anderson@redhat.com)
2015-05-21 09:55:29 -04:00
Dave Anderson
7623eee904 Fix for the ARM64 page size determination on Linux 4.1 and later
kernels.  Without the patch, the crash session fails during
initialization with the message "crash: invalid/unsupported page
size: 98304" on kernels with 64K pages.  On kernels with 4K pages,
the message is "crash: invalid/unsupported page size: 6144".  In
addition, the "-p <page-size>" command line override option
had no effect on ARM64; that has been fixed as well.
(anderson@redhat.com)
2015-05-19 10:20:04 -04:00
Dave Anderson
9b41d403b1 Fix for a segmentation violation generated by the "help -[n|D]"
options on ARM64 compressed kdumps.
(anderson@redhat.com)
2015-05-18 11:14:23 -04:00
Dave Anderson
2544f3ce85 Fix for ARM64 kernels to account for changes in the virtual memory
layout introduced in Linux 3.17.  The vmalloc region end address, and
the vmemmap start and end addresses are now calculated at kernel
build time, because they depend upon the size of a struct page.
Accordingly, the crash utility needs to calculate those three address
values dynamically, after the embedded gdb module has initialized.
Without the patch, reads of page structures return invalid data due
to incorrect virtual-to-physical translations of memory in the
vmemmap range.  This in turn causes commands that require page
structure contents to fail or show invalid data, such as "kmem -p",
"kmem -[sS]", and the "kmem -[fF]" options.
(anderson@redhat.com)
2015-03-23 15:51:28 -04:00
Dave Anderson
19d7200112 During initialization, reject useless ARM64 "(A)" and "(a)" absolute
symbols that are below the text region.  Without the patch, several
recently-introduced absolute symbols have been introduced into the
kernel, which will be displayed by "sym -l" prior to the first kernel
virtual address symbol, and will show up in command output where
memory values are translated into kernel symbol references.
(anderson@redhat.com)
2015-03-19 14:04:44 -04:00
Dave Anderson
3e61decc7e Fix for the determination of the cpu count on ARM64 machines.
Without the patch, if certain patterns of cpus are offline, the count
may be too small, causing cpu-dependent commands to not recognize
online cpus.
(Jan.Karlsson@sonymobile.com, anderson@redhat.com)
2014-10-17 10:30:11 -04:00
Dave Anderson
97a39ce0c7 If an ARM or ARM64 dumpfile does not contain the register sets of
the active tasks in the kernel's per-cpu crash_notes, there is an
initialization-time warning message indicating "could not retrieve
crash_notes".  It has been changed to a more meaningful warning
message indicating "cannot retrieve registers for active tasks".
(anderson@redhat.com)
2014-07-30 14:11:33 -04:00
Dave Anderson
520fcee94d Determine the various ARM64 kernel virtual address ranges using the
kernel's VA_BITS value.  It currently is hardwired in the kernel to
one of two values depending upon whether 4K or 64K pages are
configured.  However, there are plans to support 16K paqes, to make
VA_BITS a configurable value, and to make the number of page-table
levels configurable.  Towards that end, the crash utility has been
changed to determine the VA_BITS value based upon known kernel
virtual addresses, and to then calculate the relevant kernel virtual
address ranges on that value instead of hardwiring them based upon
the page size.
(anderson@redhat.com)
2014-07-23 11:14:37 -04:00
Dave Anderson
ee73b32996 When running against an ARM64 dumpfile created with the "snap.so"
extension module, do not attempt to read the crash_notes.  Since the
dumpfile was taken while running on a live system, the crash_notes,
if configured into the kernel, would not contain valid data.  Without
the patch, the message "WARNING: could not retrieve crash_notes" is
displayed during session initialization.
(anderson@redhat.com)
2014-07-18 16:07:42 -04:00
Dave Anderson
773a6822b9 During initialization, reject useless ARM64 "(A)" absolute symbols
that begin with "__crc_".  Without the patch, several thousand of
them may be displayed by "sym -l" prior to the first kernel virtual
address symbol.
(anderson@redhat.com)
2014-07-18 12:03:59 -04:00
Dave Anderson
40da7b939e Fix for the ARM64 "vtop <address>" command on kernels configured
with 64K pages if the address argument is located in the kernel
logical memory map region, which uses 512MB hugepage mappings.
Without the patch, the verbose page table walk mistakenly continues
to the PTE level.
(anderson@redhat.com)
2014-04-14 15:48:58 -04:00
Dave Anderson
7010f10be1 Fix for a segmentation violation generated by the "crash -g vmlinux"
command on ARM64.
(anderson@redhat.com)
2014-04-11 14:55:22 -04:00
Dave Anderson
bcad624fe2 Fix for the "vm -p" option on ARM64 so that file-backed pages are
properly translated to the filename and offset.  Without the patch,
file-backed pages are erroneously shown as being backed on a swap
device.
(anderson@redhat.com)
2014-04-08 13:10:02 -04:00
Dave Anderson
81ea0bc877 Implemented support for the ARM64 "bt -f" and "bt -F[F]" options.
(anderson@redhat.com)
2014-04-04 16:09:40 -04:00
Dave Anderson
9eb2a4a616 Fix for the ARM64 virtual-to-physical translation of vmemmap page
structure addresses for kernels configured with 4K pages.  Without
the patch, any command that required the contents of a page structure
would fail with a readmem error.
(cldu@marvell.com, anderson@redhat.com)
2014-04-04 11:30:13 -04:00
Dave Anderson
d6ce9d2bba Implemented support for the ARM64 "bt -l" option.
(anderson@redhat.com)
2014-04-03 10:39:54 -04:00
Dave Anderson
12e9faa3cd Implemented support for the ARM64 "bt -e" option.
(anderson@redhat.com)
2014-04-03 10:23:10 -04:00
Dave Anderson
13f25a3e58 Cleaned up the exception frame displays of 64-bit in-kernel and both
32-bit and 64-bit user-mode exceptions.
(anderson@redhat.com)
2014-04-02 15:37:17 -04:00
Dave Anderson
7462950108 Initial working implementation of the basic ARM64 "bt" command, with
several command options still under development.  In-kernel exception
frames are only dumped if the exception handler function is contained
within the symbol boundaries from "__exception_text_start" to
"__exception_text_end"; when ARM64 kdump is eventually implemented,
further exception-related work will be resumed.
(anderson@redhat.com)
2014-04-01 16:31:26 -04:00
Dave Anderson
f9b816565d Document the "--machdep phys_offset=<physical-address>" command
line option for the ARM64 architecture in the crash.8 man page and
the "crash -h" output.
(anderson@redhat.com)
2014-03-28 14:05:22 -04:00
Dave Anderson
0f6d989aa0 Updated the ARM64 implementation to support Linux 3.13 and later
kernels that expand to a 42-bit address space when 64K pages are
configured.  This is also the first crash version that has been
tested on a live ARM64 system with 4K pages, where it cleanly
make it to the "crash>" prompt.  However, it should be noted that
some commands (most notably "bt") still do not work as of yet.
(anderson@redhat.com)
2014-03-27 16:20:50 -04:00
Dave Anderson
03e3937ec7 Initial commit: crash-7.0.4 2014-01-28 16:46:11 -05:00