Re: further plans on bootmem, was: Re: - bootmem-avoid-dma32-zone-by-default.patchremoved from -mm tree

From: Yinghai Lu
Date: Tue Mar 09 2010 - 19:08:36 EST


On 03/09/2010 04:01 PM, Johannes Weiner wrote:
> On Tue, Mar 09, 2010 at 01:49:02PM -0800, Andrew Morton wrote:
>> On Tue, 09 Mar 2010 13:09:55 -0800
>> Yinghai Lu <yinghai@xxxxxxxxxx> wrote:
>>
>>> On 03/09/2010 11:40 AM, akpm@xxxxxxxxxxxxxxxxxxxx wrote:
>>>> The patch titled
>>>> bootmem: avoid DMA32 zone by default
>>>> has been removed from the -mm tree. Its filename was
>>>> bootmem-avoid-dma32-zone-by-default.patch
>>>>
>>>> This patch was dropped because I'm all confused
>>>>
>>>
>>> Thanks for that...
>>
>> Well. I did drop it because I'm all confused. It may come back.
>>
>> If Johannes is working in the direction of removing and simplifying
>> code then that's a high priority. So I'm waiting to see where this
>> discussion leads (on the mailing list, please!)
>
> I am not working on simplifying in this area at the moment. I am just
> questioning the discrepancy between the motivation of Yinghai's patch
> series to skip bootmem on x86 and its actual outcome.
>
> The stated reason for the series was that the amount of memory allocators
> involved in bootstrapping mm on x86 'seemed a bit excessive'. [1]
>
> I am perfectly fine with the theory: select one mechanism and see whether
> it can be bridged and consequently _removed_. To shrink the code base,
> shrink text size, make the boot process less complex, more robust etc.
>
> What I take away from this patchset, however, is that all it really does
> is make the early_res stuff from x86 generic code and add a semantically
> different version of the bootmem API on top of it, selectable with a config
> option. The diffstat balance is an increase of around 900 lines of code.
>
> Note that it still uses bootmem to actually bootstrap the page allocator,
> that we now have two implementations of the bootmem interface and no real
> plan - as far as I am informed - to actually change this.
>
> I also found it weird that it makes x86 skip an allocator level that all
> the other architectures are using, and replaces it with 'generic' code that
> nobody but x86 is using (sparc, powerpc, sh and microblaze appear to have
> lib/lmb.c at this stage and for this purpose? lmb was also suggested by
> benh [4] but I have to admit I do not understand Yinghai's response to it).
>

next steps:
1. create kernel/fw_memmap.c, and move common code from arch/x86/kernel/e820.c to it
2. merge lmb with fw_memmap.c/early_res.c
so some arch that use lmb will fw_memmap/earl_res.c

YH

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/