[PATCH v2] vmcore-dmesg: Understand >= v3.11-rc4 dmesg

WANG Chao chaowang at redhat.com
Tue Oct 29 23:12:53 EDT 2013


On 09/19/13 at 04:49pm, 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 at v3.sk>
> Cc: Simon Horman <horms at verge.net.au>
> Cc: Vivek Goyal <vgoyal at redhat.com>
> Cc: Joe Perches <joe at perches.com>
> Cc: Dave Young <dyoung at redhat.com>
> ---

Hi,

vmcore-dmesg is really broken here since 3.11 kernel is released. Are
you going to send an update v3 to address the comments to v2 from Vivek,
Joe and Dave

Thanks
WANG Chao

> 
> Changes for v2:
>   * Clarified printk_log vs. log in some comments.
> 
>  vmcore-dmesg/vmcore-dmesg.c |   16 ++++++++++++----
>  1 files changed, 12 insertions(+), 4 deletions(-)
> 
> diff --git a/vmcore-dmesg/vmcore-dmesg.c b/vmcore-dmesg/vmcore-dmesg.c
> index 0f477c0..dd222cd 100644
> --- a/vmcore-dmesg/vmcore-dmesg.c
> +++ b/vmcore-dmesg/vmcore-dmesg.c
> @@ -34,10 +34,10 @@ static loff_t logged_chars_vaddr;
>  static loff_t log_first_idx_vaddr;
>  static loff_t log_next_idx_vaddr;
>  
> -/* struct log size */
> +/* struct printk_log (or older log) size */
>  static uint64_t log_sz;
>  
> -/* struct log field offsets */
> +/* struct printk_log (or older log) field offsets */
>  static uint64_t log_offset_ts_nsec = UINT64_MAX;
>  static uint16_t log_offset_len = UINT16_MAX;
>  static uint16_t log_offset_text_len = UINT16_MAX;
> @@ -324,19 +324,27 @@ static void scan_vmcoreinfo(char *start, size_t size)
>  			*symbol[i].vaddr = vaddr;
>  		}
>  
> -		/* Check for "SIZE(log)=" */
> +		/* Check for "SIZE(printk_log)" or older "SIZE(log)=" */
>  		if (memcmp("SIZE(log)=", pos, 10) == 0)
>  			log_sz = strtoull(pos + 10, NULL, 10);
> +		if (memcmp("SIZE(printk_log)=", pos, 17) == 0)
> +			log_sz = strtoull(pos + 17, NULL, 10);
>  
> -		/* Check for struct log field offsets */
> +		/* Check for struct printk_log (or older log) field offsets */
>  		if (memcmp("OFFSET(log.ts_nsec)=", pos, 20) == 0)
>  			log_offset_ts_nsec = strtoull(pos + 20, NULL, 10);
> +		if (memcmp("OFFSET(printk_log.ts_nsec)=", pos, 27) == 0)
> +			log_offset_ts_nsec = strtoull(pos + 27, NULL, 10);
>  
>  		if (memcmp("OFFSET(log.len)=", pos, 16) == 0)
>  			log_offset_len = strtoul(pos + 16, NULL, 10);
> +		if (memcmp("OFFSET(printk_log.len)=", pos, 23) == 0)
> +			log_offset_len = strtoul(pos + 23, NULL, 10);
>  
>  		if (memcmp("OFFSET(log.text_len)=", pos, 21) == 0)
>  			log_offset_text_len = strtoul(pos + 21, NULL, 10);
> +		if (memcmp("OFFSET(printk_log.text_len)=", pos, 28) == 0)
> +			log_offset_text_len = strtoul(pos + 28, NULL, 10);
>  
>  		if (last_line)
>  			break;
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec



More information about the kexec mailing list