[patch 2/3] Add flags parameter to reserve_bootmem_generic()
Vivek Goyal
vgoyal at redhat.com
Mon Jun 9 16:29:35 EDT 2008
On Mon, Jun 09, 2008 at 10:17:32PM +0200, Bernhard Walle wrote:
> * Amul Shah <amul.shah at unisys.com> [2008-06-09 15:50]:
> >
> > > Don't remember the details. Perhaps Amul does (cc'ed)
> > >
> > > -Andi
> > >
> >
> > The short story is that the kexec kernel was panicking when trying to
> > reserve the MP tables. The panic occurs because the MP tables resided
> > in a reserved memory area above the highest address (80MB phys at that
> > time) in the user defined E820 map used by the kexec kernel.
> >
> > I had placed my code to affect only MP table reservation (see patch
> > below) because it is unique to just that code path. Andi decided a
> > generalized approach would be better in case other vendors had similar
> > issues.
>
> Ok, in that case it makes indeed sense to just return success here.
> Here's my third version of that patch:
Hi Bernhard,
[..]
> -void __init reserve_bootmem_generic(unsigned long phys, unsigned len)
> +int __init reserve_bootmem_generic(unsigned long phys, unsigned len, int flags)
> {
> #ifdef CONFIG_NUMA
> int nid, next_nid;
> #endif
> unsigned long pfn = phys >> PAGE_SHIFT;
> + int ret;
>
> if (pfn >= end_pfn) {
> /*
> @@ -811,11 +812,11 @@ void __init reserve_bootmem_generic(unsi
> * firmware tables:
> */
> if (pfn < max_pfn_mapped)
> - return;
> + return 0;
>
Can you please put some more explanation comment here to explain that
why it is ok to return with success, despite the fact that we never
reserved any memory.
One comment is already there, but it would be nice if we could expand
that a bit to give more context. Like during normal boot there we need
to make sure "MP tables" memory is reserved but once kdump kernel is
booted, same "MP tables" memory might be beyond "end_pfn" and
reserving code would not know about this special case. So it is ok to
return with success. (Something similar).
Thanks
Vivek
More information about the kexec
mailing list