Re: [PATCH -mm 11/14] bootmem: respect goal more likely

Yasunori Goto
2008-06-04T10:56:37Z

> This check is backwards and probably made your boot fail.
>
> >> + if (limit && limit < bdata->node_boot_start)
> >> + continue;
>
> Changed this to break, because we don't need to search any further if
> the current node already starts at/above the limit (remember, we walk a
> list sorted by ->node_boot_start here).
>
> I also made the checks more intuitively understandable.
>
> Could you try the following fix on top of this patch?

I tried it. However, my box cannot boot yet.

>> max -= PFN_DOWN(bdata->node_boot_start);
>> start -= PFN_DOWN(bdata->node_boot_start);
>> + fallback -= PFN_DOWN(bdata->node_boot_start);

I thought this fallback was wrong at first,
because fallback may point 0 at this time,
it doesn't point start_pfn of this node.

But even if here is commented out, kernel can't boot up yet.

I'd like to straggle more, but may be need more time,
because, IA64 doesn't have early_printk, and console is not enable
at here.....

P.S.
I was very confused by local variable namimng in alloc_bootmem_core.
I suppose start, max, and end, should be named like
sidx, eidx, and midx. They are not pfn, but index of bitmap.

However, new_start and new_end should be named as new_start_offset and
new_end_offset. They are not index, but offset from start address of
the node.

Probably, it will be easier to read, I think.

Bye.
--
Yasunori Goto