* [PATCH] dump-dmesg: Understand >= v3.11-rc4 dmesg @ 2013-09-01 20:05 Lubomir Rintel 2013-09-06 6:45 ` Atsushi Kumagai 0 siblings, 1 reply; 4+ messages in thread From: Lubomir Rintel @ 2013-09-01 20:05 UTC (permalink / raw) To: kexec Cc: Daisuke Nishimura, Minoru Usui, Lubomir Rintel, Masaki Tachibana, Atsushi Kumagai, Louis Bouchard Symbol name changed with the following commit: 62e32ac printk: rename struct log to struct printk_log Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Cc: Louis Bouchard <louis.bouchard@canonical.com> Cc: Masaki Tachibana <tachibana@mxm.nes.nec.co.jp> Cc: Minoru Usui <usui@mxm.nes.nec.co.jp> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: Atsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp> --- makedumpfile.c | 56 ++++++++++++++++++++++++++++++++++++++------------------ makedumpfile.h | 6 +++--- 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/makedumpfile.c b/makedumpfile.c index b42565c..5b04048 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -1389,10 +1389,17 @@ get_structure_info(void) OFFSET_INIT(elf64_phdr.p_paddr, "elf64_phdr", "p_paddr"); OFFSET_INIT(elf64_phdr.p_memsz, "elf64_phdr", "p_memsz"); - SIZE_INIT(log, "log"); - OFFSET_INIT(log.ts_nsec, "log", "ts_nsec"); - OFFSET_INIT(log.len, "log", "len"); - OFFSET_INIT(log.text_len, "log", "text_len"); + SIZE_INIT(printk_log, "printk_log"); + if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { + OFFSET_INIT(printk_log.ts_nsec, "printk_log", "ts_nsec"); + OFFSET_INIT(printk_log.len, "printk_log", "len"); + OFFSET_INIT(printk_log.text_len, "printk_log", "text_len"); + } else { + SIZE_INIT(printk_log, "log"); + OFFSET_INIT(printk_log.ts_nsec, "log", "ts_nsec"); + OFFSET_INIT(printk_log.len, "log", "len"); + OFFSET_INIT(printk_log.text_len, "log", "text_len"); + } return TRUE; } @@ -1593,7 +1600,8 @@ write_vmcoreinfo_data(void) WRITE_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); WRITE_STRUCTURE_SIZE("nodemask_t", nodemask_t); WRITE_STRUCTURE_SIZE("pageflags", pageflags); - WRITE_STRUCTURE_SIZE("log", log); + WRITE_STRUCTURE_SIZE("printk_log", printk_log); + WRITE_STRUCTURE_SIZE("log", printk_log); /* compat */ /* * write the member offset of 1st kernel @@ -1628,9 +1636,13 @@ write_vmcoreinfo_data(void) WRITE_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); WRITE_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); WRITE_MEMBER_OFFSET("vmap_area.list", vmap_area.list); - WRITE_MEMBER_OFFSET("log.ts_nsec", log.ts_nsec); - WRITE_MEMBER_OFFSET("log.len", log.len); - WRITE_MEMBER_OFFSET("log.text_len", log.text_len); + WRITE_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); + WRITE_MEMBER_OFFSET("printk_log.len", printk_log.len); + WRITE_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); + /* Compatibility with pre-3.11-rc4 */ + WRITE_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); + WRITE_MEMBER_OFFSET("log.len", printk_log.len); + WRITE_MEMBER_OFFSET("log.text_len", printk_log.text_len); if (SYMBOL(node_data) != NOT_FOUND_SYMBOL) WRITE_ARRAY_LENGTH("node_data", node_data); @@ -1909,7 +1921,6 @@ read_vmcoreinfo(void) READ_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); READ_STRUCTURE_SIZE("nodemask_t", nodemask_t); READ_STRUCTURE_SIZE("pageflags", pageflags); - READ_STRUCTURE_SIZE("log", log); READ_MEMBER_OFFSET("page.flags", page.flags); READ_MEMBER_OFFSET("page._count", page._count); @@ -1940,9 +1951,18 @@ read_vmcoreinfo(void) READ_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); READ_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); READ_MEMBER_OFFSET("vmap_area.list", vmap_area.list); - READ_MEMBER_OFFSET("log.ts_nsec", log.ts_nsec); - READ_MEMBER_OFFSET("log.len", log.len); - READ_MEMBER_OFFSET("log.text_len", log.text_len); + + READ_STRUCTURE_SIZE("printk_log", printk_log); + if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { + READ_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); + READ_MEMBER_OFFSET("printk_log.len", printk_log.len); + READ_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); + } else { + READ_STRUCTURE_SIZE("log", printk_log); + READ_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); + READ_MEMBER_OFFSET("log.len", printk_log.len); + READ_MEMBER_OFFSET("log.text_len", printk_log.text_len); + } READ_ARRAY_LENGTH("node_data", node_data); READ_ARRAY_LENGTH("pgdat_list", pgdat_list); @@ -3705,13 +3725,13 @@ dump_log_entry(char *logptr, int fp) ulonglong nanos; ulong rem; - text_len = USHORT(logptr + OFFSET(log.text_len)); - ts_nsec = ULONGLONG(logptr + OFFSET(log.ts_nsec)); + text_len = USHORT(logptr + OFFSET(printk_log.text_len)); + ts_nsec = ULONGLONG(logptr + OFFSET(printk_log.ts_nsec)); nanos = (ulonglong)ts_nsec / (ulonglong)1000000000; rem = (ulonglong)ts_nsec % (ulonglong)1000000000; - msg = logptr + SIZE(log); + msg = logptr + SIZE(printk_log); sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000); @@ -3749,7 +3769,7 @@ log_from_idx(unsigned int idx, char *logbuf) * the buffer. */ - msglen = USHORT(logptr + OFFSET(log.len)); + msglen = USHORT(logptr + OFFSET(printk_log.len)); if (!msglen) logptr = logbuf; @@ -3770,9 +3790,9 @@ log_next(unsigned int idx, char *logbuf) * return the one after that. */ - msglen = USHORT(logptr + OFFSET(log.len)); + msglen = USHORT(logptr + OFFSET(printk_log.len)); if (!msglen) { - msglen = USHORT(logbuf + OFFSET(log.len)); + msglen = USHORT(logbuf + OFFSET(printk_log.len)); return msglen; } diff --git a/makedumpfile.h b/makedumpfile.h index a5826e0..5b96c11 100644 --- a/makedumpfile.h +++ b/makedumpfile.h @@ -1198,7 +1198,7 @@ struct size_table { long cpumask_t; long kexec_segment; long elf64_hdr; - long log; + long printk_log; long pageflags; }; @@ -1337,11 +1337,11 @@ struct offset_table { long p_memsz; } elf64_phdr; - struct log_s { + struct printk_log_s { long ts_nsec; long len; long text_len; - } log; + } printk_log; }; -- 1.7.1 _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] dump-dmesg: Understand >= v3.11-rc4 dmesg 2013-09-01 20:05 [PATCH] dump-dmesg: Understand >= v3.11-rc4 dmesg Lubomir Rintel @ 2013-09-06 6:45 ` Atsushi Kumagai 2013-09-18 12:19 ` [PATCH v2] " Lubomir Rintel 0 siblings, 1 reply; 4+ messages in thread From: Atsushi Kumagai @ 2013-09-06 6:45 UTC (permalink / raw) To: lkundrak; +Cc: usui, nishimura, tachibana, louis.bouchard, kexec HelloLubomir, (2013/09/02 5:04), Lubomir Rintel wrote: > Symbol name changed with the following commit: > 62e32ac printk: rename struct log to struct printk_log > > Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> > Cc: Louis Bouchard <louis.bouchard@canonical.com> > Cc: Masaki Tachibana <tachibana@mxm.nes.nec.co.jp> > Cc: Minoru Usui <usui@mxm.nes.nec.co.jp> > Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> > Cc: Atsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp> > --- > makedumpfile.c | 56 ++++++++++++++++++++++++++++++++++++++------------------ > makedumpfile.h | 6 +++--- > 2 files changed, 41 insertions(+), 21 deletions(-) > > diff --git a/makedumpfile.c b/makedumpfile.c > index b42565c..5b04048 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -1389,10 +1389,17 @@ get_structure_info(void) > OFFSET_INIT(elf64_phdr.p_paddr, "elf64_phdr", "p_paddr"); > OFFSET_INIT(elf64_phdr.p_memsz, "elf64_phdr", "p_memsz"); > > - SIZE_INIT(log, "log"); > - OFFSET_INIT(log.ts_nsec, "log", "ts_nsec"); > - OFFSET_INIT(log.len, "log", "len"); > - OFFSET_INIT(log.text_len, "log", "text_len"); > + SIZE_INIT(printk_log, "printk_log"); > + if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { > + OFFSET_INIT(printk_log.ts_nsec, "printk_log", "ts_nsec"); > + OFFSET_INIT(printk_log.len, "printk_log", "len"); > + OFFSET_INIT(printk_log.text_len, "printk_log", "text_len"); > + } else { > + SIZE_INIT(printk_log, "log"); > + OFFSET_INIT(printk_log.ts_nsec, "log", "ts_nsec"); > + OFFSET_INIT(printk_log.len, "log", "len"); > + OFFSET_INIT(printk_log.text_len, "log", "text_len"); > + } > > return TRUE; > } > @@ -1593,7 +1600,8 @@ write_vmcoreinfo_data(void) > WRITE_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); > WRITE_STRUCTURE_SIZE("nodemask_t", nodemask_t); > WRITE_STRUCTURE_SIZE("pageflags", pageflags); > - WRITE_STRUCTURE_SIZE("log", log); > + WRITE_STRUCTURE_SIZE("printk_log", printk_log); > + WRITE_STRUCTURE_SIZE("log", printk_log); /* compat */ To export the size of struct printk_log as the size of struct log for old makedumpfile doesn't provide compatibility, because old makedumpfile can't extract dmesg after all since the variable-length record format isn't supported. (except makedumpfile-1.5.2, 1.5.3 and 1.5.4) The compatibility you said is only for those versions, so that's incomplete and not acceptable. I think ether log or printk_log should be written based on the original symbol name, to write both is redundant and confusing in many cases. > /* > * write the member offset of 1st kernel > @@ -1628,9 +1636,13 @@ write_vmcoreinfo_data(void) > WRITE_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); > WRITE_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); > WRITE_MEMBER_OFFSET("vmap_area.list", vmap_area.list); > - WRITE_MEMBER_OFFSET("log.ts_nsec", log.ts_nsec); > - WRITE_MEMBER_OFFSET("log.len", log.len); > - WRITE_MEMBER_OFFSET("log.text_len", log.text_len); > + WRITE_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); > + WRITE_MEMBER_OFFSET("printk_log.len", printk_log.len); > + WRITE_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); > + /* Compatibility with pre-3.11-rc4 */ > + WRITE_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); > + WRITE_MEMBER_OFFSET("log.len", printk_log.len); > + WRITE_MEMBER_OFFSET("log.text_len", printk_log.text_len); The same as above can be said. Thanks Atsushi Kumagai > if (SYMBOL(node_data) != NOT_FOUND_SYMBOL) > WRITE_ARRAY_LENGTH("node_data", node_data); > @@ -1909,7 +1921,6 @@ read_vmcoreinfo(void) > READ_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); > READ_STRUCTURE_SIZE("nodemask_t", nodemask_t); > READ_STRUCTURE_SIZE("pageflags", pageflags); > - READ_STRUCTURE_SIZE("log", log); > > READ_MEMBER_OFFSET("page.flags", page.flags); > READ_MEMBER_OFFSET("page._count", page._count); > @@ -1940,9 +1951,18 @@ read_vmcoreinfo(void) > READ_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); > READ_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); > READ_MEMBER_OFFSET("vmap_area.list", vmap_area.list); > - READ_MEMBER_OFFSET("log.ts_nsec", log.ts_nsec); > - READ_MEMBER_OFFSET("log.len", log.len); > - READ_MEMBER_OFFSET("log.text_len", log.text_len); > + > + READ_STRUCTURE_SIZE("printk_log", printk_log); > + if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { > + READ_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); > + READ_MEMBER_OFFSET("printk_log.len", printk_log.len); > + READ_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); > + } else { > + READ_STRUCTURE_SIZE("log", printk_log); > + READ_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); > + READ_MEMBER_OFFSET("log.len", printk_log.len); > + READ_MEMBER_OFFSET("log.text_len", printk_log.text_len); > + } > > READ_ARRAY_LENGTH("node_data", node_data); > READ_ARRAY_LENGTH("pgdat_list", pgdat_list); > @@ -3705,13 +3725,13 @@ dump_log_entry(char *logptr, int fp) > ulonglong nanos; > ulong rem; > > - text_len = USHORT(logptr + OFFSET(log.text_len)); > - ts_nsec = ULONGLONG(logptr + OFFSET(log.ts_nsec)); > + text_len = USHORT(logptr + OFFSET(printk_log.text_len)); > + ts_nsec = ULONGLONG(logptr + OFFSET(printk_log.ts_nsec)); > > nanos = (ulonglong)ts_nsec / (ulonglong)1000000000; > rem = (ulonglong)ts_nsec % (ulonglong)1000000000; > > - msg = logptr + SIZE(log); > + msg = logptr + SIZE(printk_log); > > sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000); > > @@ -3749,7 +3769,7 @@ log_from_idx(unsigned int idx, char *logbuf) > * the buffer. > */ > > - msglen = USHORT(logptr + OFFSET(log.len)); > + msglen = USHORT(logptr + OFFSET(printk_log.len)); > if (!msglen) > logptr = logbuf; > > @@ -3770,9 +3790,9 @@ log_next(unsigned int idx, char *logbuf) > * return the one after that. > */ > > - msglen = USHORT(logptr + OFFSET(log.len)); > + msglen = USHORT(logptr + OFFSET(printk_log.len)); > if (!msglen) { > - msglen = USHORT(logbuf + OFFSET(log.len)); > + msglen = USHORT(logbuf + OFFSET(printk_log.len)); > return msglen; > } > > diff --git a/makedumpfile.h b/makedumpfile.h > index a5826e0..5b96c11 100644 > --- a/makedumpfile.h > +++ b/makedumpfile.h > @@ -1198,7 +1198,7 @@ struct size_table { > long cpumask_t; > long kexec_segment; > long elf64_hdr; > - long log; > + long printk_log; > > long pageflags; > }; > @@ -1337,11 +1337,11 @@ struct offset_table { > long p_memsz; > } elf64_phdr; > > - struct log_s { > + struct printk_log_s { > long ts_nsec; > long len; > long text_len; > - } log; > + } printk_log; > > }; > > _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] dump-dmesg: Understand >= v3.11-rc4 dmesg 2013-09-06 6:45 ` Atsushi Kumagai @ 2013-09-18 12:19 ` Lubomir Rintel 2013-09-20 4:15 ` Atsushi Kumagai 0 siblings, 1 reply; 4+ messages in thread From: Lubomir Rintel @ 2013-09-18 12:19 UTC (permalink / raw) To: Atsushi Kumagai, kexec Cc: Daisuke Nishimura, Minoru Usui, Lubomir Rintel, Masaki Tachibana, Atsushi Kumagai, Louis Bouchard Symbol name changed with the following commit: 62e32ac printk: rename struct log to struct printk_log Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Cc: Louis Bouchard <louis.bouchard@canonical.com> Cc: Masaki Tachibana <tachibana@mxm.nes.nec.co.jp> Cc: Minoru Usui <usui@mxm.nes.nec.co.jp> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: Atsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp> --- So, the change did make it into 3.11. Does this make sense? Changes for v2: * Only back values for symbol names we did actually read; either "log" or "printk_log" makedumpfile.c | 66 ++++++++++++++++++++++++++++++++++++++++--------------- makedumpfile.h | 5 ++- 2 files changed, 51 insertions(+), 20 deletions(-) diff --git a/makedumpfile.c b/makedumpfile.c index b42565c..6f00167 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -49,6 +49,7 @@ unsigned long long pfn_hwpoison; unsigned long long num_dumped; +int use_printk_log; /* did we read printk_log symbol name? */ int retcd = FAILED; /* return code */ #define INITIALIZE_LONG_TABLE(table, value) \ @@ -1389,10 +1390,19 @@ get_structure_info(void) OFFSET_INIT(elf64_phdr.p_paddr, "elf64_phdr", "p_paddr"); OFFSET_INIT(elf64_phdr.p_memsz, "elf64_phdr", "p_memsz"); - SIZE_INIT(log, "log"); - OFFSET_INIT(log.ts_nsec, "log", "ts_nsec"); - OFFSET_INIT(log.len, "log", "len"); - OFFSET_INIT(log.text_len, "log", "text_len"); + SIZE_INIT(printk_log, "printk_log"); + if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { + use_printk_log = 1; + OFFSET_INIT(printk_log.ts_nsec, "printk_log", "ts_nsec"); + OFFSET_INIT(printk_log.len, "printk_log", "len"); + OFFSET_INIT(printk_log.text_len, "printk_log", "text_len"); + } else { + use_printk_log = 0; + SIZE_INIT(printk_log, "log"); + OFFSET_INIT(printk_log.ts_nsec, "log", "ts_nsec"); + OFFSET_INIT(printk_log.len, "log", "len"); + OFFSET_INIT(printk_log.text_len, "log", "text_len"); + } return TRUE; } @@ -1593,7 +1603,10 @@ write_vmcoreinfo_data(void) WRITE_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); WRITE_STRUCTURE_SIZE("nodemask_t", nodemask_t); WRITE_STRUCTURE_SIZE("pageflags", pageflags); - WRITE_STRUCTURE_SIZE("log", log); + if (use_printk_log) + WRITE_STRUCTURE_SIZE("printk_log", printk_log); + else + WRITE_STRUCTURE_SIZE("log", printk_log); /* * write the member offset of 1st kernel @@ -1628,9 +1641,16 @@ write_vmcoreinfo_data(void) WRITE_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); WRITE_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); WRITE_MEMBER_OFFSET("vmap_area.list", vmap_area.list); - WRITE_MEMBER_OFFSET("log.ts_nsec", log.ts_nsec); - WRITE_MEMBER_OFFSET("log.len", log.len); - WRITE_MEMBER_OFFSET("log.text_len", log.text_len); + if (use_printk_log) { + WRITE_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); + WRITE_MEMBER_OFFSET("printk_log.len", printk_log.len); + WRITE_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); + } else { + /* Compatibility with pre-3.11-rc4 */ + WRITE_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); + WRITE_MEMBER_OFFSET("log.len", printk_log.len); + WRITE_MEMBER_OFFSET("log.text_len", printk_log.text_len); + } if (SYMBOL(node_data) != NOT_FOUND_SYMBOL) WRITE_ARRAY_LENGTH("node_data", node_data); @@ -1909,7 +1929,6 @@ read_vmcoreinfo(void) READ_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); READ_STRUCTURE_SIZE("nodemask_t", nodemask_t); READ_STRUCTURE_SIZE("pageflags", pageflags); - READ_STRUCTURE_SIZE("log", log); READ_MEMBER_OFFSET("page.flags", page.flags); READ_MEMBER_OFFSET("page._count", page._count); @@ -1940,9 +1959,20 @@ read_vmcoreinfo(void) READ_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); READ_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); READ_MEMBER_OFFSET("vmap_area.list", vmap_area.list); - READ_MEMBER_OFFSET("log.ts_nsec", log.ts_nsec); - READ_MEMBER_OFFSET("log.len", log.len); - READ_MEMBER_OFFSET("log.text_len", log.text_len); + + READ_STRUCTURE_SIZE("printk_log", printk_log); + if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { + use_printk_log = 1; + READ_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); + READ_MEMBER_OFFSET("printk_log.len", printk_log.len); + READ_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); + } else { + use_printk_log = 0; + READ_STRUCTURE_SIZE("log", printk_log); + READ_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); + READ_MEMBER_OFFSET("log.len", printk_log.len); + READ_MEMBER_OFFSET("log.text_len", printk_log.text_len); + } READ_ARRAY_LENGTH("node_data", node_data); READ_ARRAY_LENGTH("pgdat_list", pgdat_list); @@ -3705,13 +3735,13 @@ dump_log_entry(char *logptr, int fp) ulonglong nanos; ulong rem; - text_len = USHORT(logptr + OFFSET(log.text_len)); - ts_nsec = ULONGLONG(logptr + OFFSET(log.ts_nsec)); + text_len = USHORT(logptr + OFFSET(printk_log.text_len)); + ts_nsec = ULONGLONG(logptr + OFFSET(printk_log.ts_nsec)); nanos = (ulonglong)ts_nsec / (ulonglong)1000000000; rem = (ulonglong)ts_nsec % (ulonglong)1000000000; - msg = logptr + SIZE(log); + msg = logptr + SIZE(printk_log); sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000); @@ -3749,7 +3779,7 @@ log_from_idx(unsigned int idx, char *logbuf) * the buffer. */ - msglen = USHORT(logptr + OFFSET(log.len)); + msglen = USHORT(logptr + OFFSET(printk_log.len)); if (!msglen) logptr = logbuf; @@ -3770,9 +3800,9 @@ log_next(unsigned int idx, char *logbuf) * return the one after that. */ - msglen = USHORT(logptr + OFFSET(log.len)); + msglen = USHORT(logptr + OFFSET(printk_log.len)); if (!msglen) { - msglen = USHORT(logbuf + OFFSET(log.len)); + msglen = USHORT(logbuf + OFFSET(printk_log.len)); return msglen; } diff --git a/makedumpfile.h b/makedumpfile.h index a5826e0..c33852a 100644 --- a/makedumpfile.h +++ b/makedumpfile.h @@ -1198,6 +1198,7 @@ struct size_table { long cpumask_t; long kexec_segment; long elf64_hdr; + long printk_log; long log; long pageflags; @@ -1337,11 +1338,11 @@ struct offset_table { long p_memsz; } elf64_phdr; - struct log_s { + struct printk_log_s { long ts_nsec; long len; long text_len; - } log; + } printk_log; }; -- 1.7.1 _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] dump-dmesg: Understand >= v3.11-rc4 dmesg 2013-09-18 12:19 ` [PATCH v2] " Lubomir Rintel @ 2013-09-20 4:15 ` Atsushi Kumagai 0 siblings, 0 replies; 4+ messages in thread From: Atsushi Kumagai @ 2013-09-20 4:15 UTC (permalink / raw) To: lkundrak; +Cc: usui, nishimura, tachibana, louis.bouchard, kexec Hello Lubomir, (2013/09/18 22:59), Lubomir Rintel wrote: > Symbol name changed with the following commit: > 62e32ac printk: rename struct log to struct printk_log > > Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> > Cc: Louis Bouchard <louis.bouchard@canonical.com> > Cc: Masaki Tachibana <tachibana@mxm.nes.nec.co.jp> > Cc: Minoru Usui <usui@mxm.nes.nec.co.jp> > Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> > Cc: Atsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp> > --- > So, the change did make it into 3.11. > Does this make sense? Thanks, I'll merge this patch with the small change below: diff --git a/makedumpfile.c b/makedumpfile.c index ca27987..c21d113 100644 --- a/makedumpfile.c +++ b/makedumpfile.c @@ -49,7 +49,6 @@ unsigned long long pfn_hwpoison; unsigned long long num_dumped; -int use_printk_log; /* did we read printk_log symbol name? */ int retcd = FAILED; /* return code */ #define INITIALIZE_LONG_TABLE(table, value) \ @@ -1392,12 +1391,12 @@ get_structure_info(void) SIZE_INIT(printk_log, "printk_log"); if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { - use_printk_log = 1; + info->flag_use_printk_log = TRUE; OFFSET_INIT(printk_log.ts_nsec, "printk_log", "ts_nsec"); OFFSET_INIT(printk_log.len, "printk_log", "len"); OFFSET_INIT(printk_log.text_len, "printk_log", "text_len"); } else { - use_printk_log = 0; + info->flag_use_printk_log = FALSE; SIZE_INIT(printk_log, "log"); OFFSET_INIT(printk_log.ts_nsec, "log", "ts_nsec"); OFFSET_INIT(printk_log.len, "log", "len"); @@ -1603,7 +1602,7 @@ write_vmcoreinfo_data(void) WRITE_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); WRITE_STRUCTURE_SIZE("nodemask_t", nodemask_t); WRITE_STRUCTURE_SIZE("pageflags", pageflags); - if (use_printk_log) + if (info->flag_use_printk_log) WRITE_STRUCTURE_SIZE("printk_log", printk_log); else WRITE_STRUCTURE_SIZE("log", printk_log); @@ -1641,7 +1640,7 @@ write_vmcoreinfo_data(void) WRITE_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); WRITE_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); WRITE_MEMBER_OFFSET("vmap_area.list", vmap_area.list); - if (use_printk_log) { + if (info->flag_use_printk_log) { WRITE_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); WRITE_MEMBER_OFFSET("printk_log.len", printk_log.len); WRITE_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); @@ -1962,12 +1961,12 @@ read_vmcoreinfo(void) READ_STRUCTURE_SIZE("printk_log", printk_log); if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { - use_printk_log = 1; + info->flag_use_printk_log = TRUE; READ_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); READ_MEMBER_OFFSET("printk_log.len", printk_log.len); READ_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); } else { - use_printk_log = 0; + info->flag_use_printk_log = FALSE; READ_STRUCTURE_SIZE("log", printk_log); READ_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); READ_MEMBER_OFFSET("log.len", printk_log.len); diff --git a/makedumpfile.h b/makedumpfile.h index d244b83..3a7e61a 100644 --- a/makedumpfile.h +++ b/makedumpfile.h @@ -893,6 +893,7 @@ struct DumpInfo { int flag_force; /* overwrite existing stuff */ int flag_exclude_xen_dom;/* exclude Domain-U from xen-kdump */ int flag_dmesg; /* dump the dmesg log out of the vmcore file */ + int flag_use_printk_log; /* did we read printk_log symbol name? */ int flag_nospace; /* the flag of "No space on device" error */ unsigned long vaddr_for_vtop; /* virtual address for debugging */ long page_size; /* size of page */ @@ -1176,6 +1177,7 @@ struct size_table { long list_head; long node_memblk_s; long nodemask_t; + long printk_log; /* * for Xen extraction @@ -1198,8 +1200,6 @@ struct size_table { long cpumask_t; long kexec_segment; long elf64_hdr; - long printk_log; - long log; long pageflags; }; Thanks Atsushi Kumagai > Changes for v2: > * Only back values for symbol names we did actually read; either "log" > or "printk_log" > > makedumpfile.c | 66 ++++++++++++++++++++++++++++++++++++++++--------------- > makedumpfile.h | 5 ++- > 2 files changed, 51 insertions(+), 20 deletions(-) > > diff --git a/makedumpfile.c b/makedumpfile.c > index b42565c..6f00167 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -49,6 +49,7 @@ unsigned long long pfn_hwpoison; > > unsigned long long num_dumped; > > +int use_printk_log; /* did we read printk_log symbol name? */ > int retcd = FAILED; /* return code */ > > #define INITIALIZE_LONG_TABLE(table, value) \ > @@ -1389,10 +1390,19 @@ get_structure_info(void) > OFFSET_INIT(elf64_phdr.p_paddr, "elf64_phdr", "p_paddr"); > OFFSET_INIT(elf64_phdr.p_memsz, "elf64_phdr", "p_memsz"); > > - SIZE_INIT(log, "log"); > - OFFSET_INIT(log.ts_nsec, "log", "ts_nsec"); > - OFFSET_INIT(log.len, "log", "len"); > - OFFSET_INIT(log.text_len, "log", "text_len"); > + SIZE_INIT(printk_log, "printk_log"); > + if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { > + use_printk_log = 1; > + OFFSET_INIT(printk_log.ts_nsec, "printk_log", "ts_nsec"); > + OFFSET_INIT(printk_log.len, "printk_log", "len"); > + OFFSET_INIT(printk_log.text_len, "printk_log", "text_len"); > + } else { > + use_printk_log = 0; > + SIZE_INIT(printk_log, "log"); > + OFFSET_INIT(printk_log.ts_nsec, "log", "ts_nsec"); > + OFFSET_INIT(printk_log.len, "log", "len"); > + OFFSET_INIT(printk_log.text_len, "log", "text_len"); > + } > > return TRUE; > } > @@ -1593,7 +1603,10 @@ write_vmcoreinfo_data(void) > WRITE_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); > WRITE_STRUCTURE_SIZE("nodemask_t", nodemask_t); > WRITE_STRUCTURE_SIZE("pageflags", pageflags); > - WRITE_STRUCTURE_SIZE("log", log); > + if (use_printk_log) > + WRITE_STRUCTURE_SIZE("printk_log", printk_log); > + else > + WRITE_STRUCTURE_SIZE("log", printk_log); > > /* > * write the member offset of 1st kernel > @@ -1628,9 +1641,16 @@ write_vmcoreinfo_data(void) > WRITE_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); > WRITE_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); > WRITE_MEMBER_OFFSET("vmap_area.list", vmap_area.list); > - WRITE_MEMBER_OFFSET("log.ts_nsec", log.ts_nsec); > - WRITE_MEMBER_OFFSET("log.len", log.len); > - WRITE_MEMBER_OFFSET("log.text_len", log.text_len); > + if (use_printk_log) { > + WRITE_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); > + WRITE_MEMBER_OFFSET("printk_log.len", printk_log.len); > + WRITE_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); > + } else { > + /* Compatibility with pre-3.11-rc4 */ > + WRITE_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); > + WRITE_MEMBER_OFFSET("log.len", printk_log.len); > + WRITE_MEMBER_OFFSET("log.text_len", printk_log.text_len); > + } > > if (SYMBOL(node_data) != NOT_FOUND_SYMBOL) > WRITE_ARRAY_LENGTH("node_data", node_data); > @@ -1909,7 +1929,6 @@ read_vmcoreinfo(void) > READ_STRUCTURE_SIZE("node_memblk_s", node_memblk_s); > READ_STRUCTURE_SIZE("nodemask_t", nodemask_t); > READ_STRUCTURE_SIZE("pageflags", pageflags); > - READ_STRUCTURE_SIZE("log", log); > > READ_MEMBER_OFFSET("page.flags", page.flags); > READ_MEMBER_OFFSET("page._count", page._count); > @@ -1940,9 +1959,20 @@ read_vmcoreinfo(void) > READ_MEMBER_OFFSET("vm_struct.addr", vm_struct.addr); > READ_MEMBER_OFFSET("vmap_area.va_start", vmap_area.va_start); > READ_MEMBER_OFFSET("vmap_area.list", vmap_area.list); > - READ_MEMBER_OFFSET("log.ts_nsec", log.ts_nsec); > - READ_MEMBER_OFFSET("log.len", log.len); > - READ_MEMBER_OFFSET("log.text_len", log.text_len); > + > + READ_STRUCTURE_SIZE("printk_log", printk_log); > + if (SIZE(printk_log) != NOT_FOUND_STRUCTURE) { > + use_printk_log = 1; > + READ_MEMBER_OFFSET("printk_log.ts_nsec", printk_log.ts_nsec); > + READ_MEMBER_OFFSET("printk_log.len", printk_log.len); > + READ_MEMBER_OFFSET("printk_log.text_len", printk_log.text_len); > + } else { > + use_printk_log = 0; > + READ_STRUCTURE_SIZE("log", printk_log); > + READ_MEMBER_OFFSET("log.ts_nsec", printk_log.ts_nsec); > + READ_MEMBER_OFFSET("log.len", printk_log.len); > + READ_MEMBER_OFFSET("log.text_len", printk_log.text_len); > + } > > READ_ARRAY_LENGTH("node_data", node_data); > READ_ARRAY_LENGTH("pgdat_list", pgdat_list); > @@ -3705,13 +3735,13 @@ dump_log_entry(char *logptr, int fp) > ulonglong nanos; > ulong rem; > > - text_len = USHORT(logptr + OFFSET(log.text_len)); > - ts_nsec = ULONGLONG(logptr + OFFSET(log.ts_nsec)); > + text_len = USHORT(logptr + OFFSET(printk_log.text_len)); > + ts_nsec = ULONGLONG(logptr + OFFSET(printk_log.ts_nsec)); > > nanos = (ulonglong)ts_nsec / (ulonglong)1000000000; > rem = (ulonglong)ts_nsec % (ulonglong)1000000000; > > - msg = logptr + SIZE(log); > + msg = logptr + SIZE(printk_log); > > sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000); > > @@ -3749,7 +3779,7 @@ log_from_idx(unsigned int idx, char *logbuf) > * the buffer. > */ > > - msglen = USHORT(logptr + OFFSET(log.len)); > + msglen = USHORT(logptr + OFFSET(printk_log.len)); > if (!msglen) > logptr = logbuf; > > @@ -3770,9 +3800,9 @@ log_next(unsigned int idx, char *logbuf) > * return the one after that. > */ > > - msglen = USHORT(logptr + OFFSET(log.len)); > + msglen = USHORT(logptr + OFFSET(printk_log.len)); > if (!msglen) { > - msglen = USHORT(logbuf + OFFSET(log.len)); > + msglen = USHORT(logbuf + OFFSET(printk_log.len)); > return msglen; > } > > diff --git a/makedumpfile.h b/makedumpfile.h > index a5826e0..c33852a 100644 > --- a/makedumpfile.h > +++ b/makedumpfile.h > @@ -1198,6 +1198,7 @@ struct size_table { > long cpumask_t; > long kexec_segment; > long elf64_hdr; > + long printk_log; > long log; > > long pageflags; > @@ -1337,11 +1338,11 @@ struct offset_table { > long p_memsz; > } elf64_phdr; > > - struct log_s { > + struct printk_log_s { > long ts_nsec; > long len; > long text_len; > - } log; > + } printk_log; > > }; > > _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-09-20 4:20 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-09-01 20:05 [PATCH] dump-dmesg: Understand >= v3.11-rc4 dmesg Lubomir Rintel 2013-09-06 6:45 ` Atsushi Kumagai 2013-09-18 12:19 ` [PATCH v2] " Lubomir Rintel 2013-09-20 4:15 ` Atsushi Kumagai
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox