From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Vrabel Subject: Re: [PATCH] x86: keep the crash kernel below 896 MiB Date: Thu, 25 Apr 2013 12:01:17 +0100 Message-ID: <51790CFD.4000707@citrix.com> References: <1366880223-15439-1-git-send-email-warner.wang@hp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1366880223-15439-1-git-send-email-warner.wang@hp.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Warner Wang Cc: keir@xen.org, jbeulich@suse.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 25/04/13 09:57, Warner Wang wrote: > When use the crashkernel=size parameter without specifying a "@xM" > suffix, the crashkernel will be reserved at the highest suitable > address of memory, this will make the kexec-tools fail to work. > The current kexec-tools have a limitation that it can only work > with crashkernel reserved under 896 MiB. we can increase this > limit once kexec-tools are fixed. > Linux kernel itself have this code for kexec-tools limitation, > so I think Xen code should also have it. I don't think we should limit Xen in this way for any particular tool. It's trivial to specify a location in the crashkernel parameter to work around this particular tool limitation. I also think that this limitation may well be fixed as of kexec-tools 2.0.4. 64-bit kernels are now loaded above 4 GiB. David > Signed-off-by: Warner Wang > --- > xen/arch/x86/setup.c | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c > index 43301a5..ae4c947 100644 > --- a/xen/arch/x86/setup.c > +++ b/xen/arch/x86/setup.c > @@ -943,6 +943,13 @@ void __init __start_xen(unsigned long mbi_p) > } > } > > + /* > + * Keep the crash kernel below this limit. On 64 bits, kexec-tools > + * currently limits us to 896 MiB; increase this limit once kexec-tools > + * are fixed. > + */ > + e = min_t(uint64_t, e, 896 << 20); > + > /* Don't overlap with modules. */ > e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), > mod, mbi->mods_count, -1);