629c8b4cdb
Fix the problem that makedumpfile sometimes fails on x86_64 machine. This patch adds the symbol "phys_base" to a vmcoreinfo data. The vmcoreinfo data has the minimum debugging information only for dump filtering. makedumpfile (dump filtering command) gets it to distinguish unnecessary pages, and makedumpfile creates a small dumpfile. On x86_64 kernel which compiled with CONFIG_PHYSICAL_START=0x0 and CONFIG_RELOCATABLE=y, makedumpfile fails like the following: # makedumpfile -d31 /proc/vmcore dumpfile The kernel version is not supported. The created dumpfile may be incomplete. _exclude_free_page: Can't get next online node. makedumpfile Failed. # The cause is the lack of the symbol "phys_base" in a vmcoreinfo data. If the symbol "phys_base" does not exist, makedumpfile considers an x86_64 kernel as non relocatable. As the result, makedumpfile misunderstands the physical address where the kernel is loaded, and it cannot translate a kernel virtual address to physical address correctly. To fix this problem, this patch adds the symbol "phys_base" to a vmcoreinfo data. Signed-off-by: Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: <stable@kernel.org> Acked-by: Vivek Goyal <vgoyal@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
acpi | ||
cpu | ||
.gitignore | ||
Makefile | ||
alternative.c | ||
aperture_64.c | ||
apic_32.c | ||
apic_64.c | ||
apm_32.c | ||
asm-offsets.c | ||
asm-offsets_32.c | ||
asm-offsets_64.c | ||
audit_64.c | ||
bootflag.c | ||
bugs_64.c | ||
cpuid.c | ||
crash.c | ||
crash_dump_32.c | ||
crash_dump_64.c | ||
doublefault_32.c | ||
ds.c | ||
e820_32.c | ||
e820_64.c | ||
early-quirks.c | ||
early_printk.c | ||
efi.c | ||
efi_32.c | ||
efi_64.c | ||
efi_stub_32.S | ||
efi_stub_64.S | ||
entry_32.S | ||
entry_64.S | ||
genapic_64.c | ||
genapic_flat_64.c | ||
geode_32.c | ||
head64.c | ||
head_32.S | ||
head_64.S | ||
hpet.c | ||
i386_ksyms_32.c | ||
i387.c | ||
i8237.c | ||
i8253.c | ||
i8259_32.c | ||
i8259_64.c | ||
init_task.c | ||
io_apic_32.c | ||
io_apic_64.c | ||
io_delay.c | ||
ioport.c | ||
irq_32.c | ||
irq_64.c | ||
k8.c | ||
kdebugfs.c | ||
kprobes.c | ||
ldt.c | ||
machine_kexec_32.c | ||
machine_kexec_64.c | ||
mca_32.c | ||
mfgpt_32.c | ||
microcode.c | ||
module_32.c | ||
module_64.c | ||
mpparse_32.c | ||
mpparse_64.c | ||
msr.c | ||
nmi_32.c | ||
nmi_64.c | ||
numaq_32.c | ||
paravirt.c | ||
paravirt_patch_32.c | ||
paravirt_patch_64.c | ||
pci-calgary_64.c | ||
pci-dma_32.c | ||
pci-dma_64.c | ||
pci-gart_64.c | ||
pci-nommu_64.c | ||
pci-swiotlb_64.c | ||
pcspeaker.c | ||
pmtimer_64.c | ||
process_32.c | ||
process_64.c | ||
ptrace.c | ||
quirks.c | ||
reboot.c | ||
reboot_fixups_32.c | ||
relocate_kernel_32.S | ||
relocate_kernel_64.S | ||
rtc.c | ||
scx200_32.c | ||
setup64.c | ||
setup_32.c | ||
setup_64.c | ||
sigframe_32.h | ||
signal_32.c | ||
signal_64.c | ||
smp_32.c | ||
smp_64.c | ||
smpboot_32.c | ||
smpboot_64.c | ||
smpcommon_32.c | ||
srat_32.c | ||
stacktrace.c | ||
step.c | ||
summit_32.c | ||
sys_i386_32.c | ||
sys_x86_64.c | ||
syscall_64.c | ||
syscall_table_32.S | ||
tce_64.c | ||
test_nx.c | ||
test_rodata.c | ||
time_32.c | ||
time_64.c | ||
tls.c | ||
tls.h | ||
topology.c | ||
trampoline_32.S | ||
trampoline_64.S | ||
traps_32.c | ||
traps_64.c | ||
tsc_32.c | ||
tsc_64.c | ||
tsc_sync.c | ||
verify_cpu_64.S | ||
vm86_32.c | ||
vmi_32.c | ||
vmiclock_32.c | ||
vmlinux.lds.S | ||
vmlinux_32.lds.S | ||
vmlinux_64.lds.S | ||
vsmp_64.c | ||
vsyscall_64.c | ||
x8664_ksyms_64.c |