All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@verge.net.au>
To: Jay Lan <jlan@sgi.com>
Cc: kexec@lists.infradead.org
Subject: Re: [PATCH] IA64: kexec allocates too few memory for kdump kernel itself
Date: Thu, 4 Sep 2008 10:01:02 +1000	[thread overview]
Message-ID: <20080904000100.GD8974@verge.net.au> (raw)
In-Reply-To: <48BEFB47.20004@sgi.com>

On Wed, Sep 03, 2008 at 02:01:59PM -0700, Jay Lan wrote:
> Sometimes the kexec would allocate not enough memory for kdump kernel
> itself on IA64 and caused kdump kernel to panic at boot.
> 
> When it happens, the /proc/iomem would show a kernel RAM segment like
> this:
> 3014000000-3015294fff : System RAM
>   3014000000-3014823ccf : Kernel code
>   3014823cd0-3014dee8ef : Kernel data
>   3014dee8f0-301529448f : Kernel bss
> 3015295000-307bffdfff : System RAM
>   3018000000-3037ffffff : Crash kernel
> 
> But kexec would allocate memory 3018000000-3019290000 for the kernel,
> which is 0x5000 smaller than the regular kernel. In my cases, the
> physical_node_map and kern_memmap of the kdump kernel overlaped and
> caused data corruption.
> 
> This patch fixes the problem. The patch was generated against
> kexec-tools 2.0.0 and tested in 2.6.27-rc4.

Hi Jay,

I am unclear about why this underallocation occurs.

> 
> Signed-off-by: Jay Lan <jlan@sgi.com>
> 

> ---
>  kexec/arch/ia64/crashdump-ia64.c |    8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> Index: kexec-tools/kexec/arch/ia64/crashdump-ia64.c
> ===================================================================
> --- kexec-tools.orig/kexec/arch/ia64/crashdump-ia64.c	2008-09-03 11:24:14.289758063 -0700
> +++ kexec-tools/kexec/arch/ia64/crashdump-ia64.c	2008-09-03 11:29:34.095833316 -0700
> @@ -90,15 +90,15 @@ static void add_loaded_segments_info(str
>  			phdr = &ehdr->e_phdr[i];
>  	                if (phdr->p_type != PT_LOAD)
>  	                        break;
> -			if (loaded_segments[loaded_segments_num].end !=
> -				phdr->p_paddr & ~(ELF_PAGE_SIZE-1))
> -				break;
> +			if (loaded_segments[loaded_segments_num].end <
> +			    (phdr->p_paddr & ~(ELF_PAGE_SIZE-1)) )
> +				loaded_segments[loaded_segments_num].end
> +				  = phdr->p_paddr & ~(ELF_PAGE_SIZE-1);
>  			loaded_segments[loaded_segments_num].end +=
>  				(phdr->p_memsz + ELF_PAGE_SIZE - 1) &
>  				~(ELF_PAGE_SIZE - 1);
>  			i++;
>  		}
> -
>  		loaded_segments_num++;
>  	}
>  }

> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  reply	other threads:[~2008-09-04  0:01 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-03 21:01 [PATCH] IA64: kexec allocates too few memory for kdump kernel itself Jay Lan
2008-09-04  0:01 ` Simon Horman [this message]
2008-09-04  1:37   ` Jay Lan
2008-09-04 18:28     ` Jay Lan
2008-09-12 23:27       ` Simon Horman
2008-09-13  0:38         ` Jay Lan
2008-09-15  5:47           ` Simon Horman
2008-09-15  6:58       ` Simon Horman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080904000100.GD8974@verge.net.au \
    --to=horms@verge.net.au \
    --cc=jlan@sgi.com \
    --cc=kexec@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.