On Wed, Dec 14, 2016 at 2:11 PM, Pingfan Liu <piliu at redhat.com> wrote: > kexec-tools always allocates program headers for each possible cpu. This The code is in the file: kexec-tools/kexec/crashdump-elf.c nr_cpus = sysconf(_SC_NPROCESSORS_CONF); > incurs zero PT_NOTE for offline cpu. We mark this case so that later, > the capture kernel can distinguish it from the mistake of allocated > program header. > The counterpart of the capture kernel comes in next patch. > > Signed-off-by: Pingfan Liu <piliu at redhat.com> > --- > This unnecessary warning buzz on all archs when there is offline cpu > > include/uapi/linux/elf.h | 1 + > kernel/kexec_core.c | 9 +++++++++ > 2 files changed, 10 insertions(+) > > diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h > index b59ee07..9744f1e 100644 > --- a/include/uapi/linux/elf.h > +++ b/include/uapi/linux/elf.h > @@ -367,6 +367,7 @@ typedef struct elf64_shdr { > * using the corresponding note types via the PTRACE_GETREGSET and > * PTRACE_SETREGSET requests. > */ > +#define NT_DUMMY 0 > #define NT_PRSTATUS 1 > #define NT_PRFPREG 2 > #define NT_PRPSINFO 3 > diff --git a/kernel/kexec_core.c b/kernel/kexec_core.c > index 5616755..aeac16e 100644 > --- a/kernel/kexec_core.c > +++ b/kernel/kexec_core.c > @@ -891,9 +891,12 @@ void __crash_kexec(struct pt_regs *regs) > if (mutex_trylock(&kexec_mutex)) { > if (kexec_crash_image) { > struct pt_regs fixed_regs; > + unsigned int cpu; > > crash_setup_regs(&fixed_regs, regs); > crash_save_vmcoreinfo(); > + for_each_cpu_not(cpu, cpu_online_mask) > + crash_save_cpu(NULL, cpu); > machine_crash_shutdown(&fixed_regs); > machine_kexec(kexec_crash_image); > } > @@ -1040,6 +1043,12 @@ void crash_save_cpu(struct pt_regs *regs, int cpu) > buf = (u32 *)per_cpu_ptr(crash_notes, cpu); > if (!buf) > return; > + if (regs == NULL) { > + buf = append_elf_note(buf, KEXEC_CORE_NOTE_NAME, NT_DUMMY, > + NULL, 0); > + final_note(buf); > + return; > + } > memset(&prstatus, 0, sizeof(prstatus)); > prstatus.pr_pid = current->pid; > elf_core_copy_kernel_regs(&prstatus.pr_reg, regs); > -- > 2.7.4 >