Who is 'Freeing init memory ...'

bill4carson bill4carson at gmail.com
Thu Aug 15 05:29:05 EDT 2013



On 2013年08月15日 16:51, Woody Wu wrote:
> On Thu, Aug 15, 2013 at 10:41:39AM +0200, Belisko Marek wrote:
>> Hi,
>>
>> On Thu, Aug 15, 2013 at 10:08 AM, Woody Wu<narkewoody at gmail.com>  wrote:
>>> Hi,
>>>
>>> Near the end of kernel startup, there is a message 'Freeing init memory
>>> ..'. This process on embedded system takes several seconds. After
>>> searched kernel source, however, I cannot find the same literal text in
>>> all the .c files.
>> rgrep 'Freeing' . on kernell source give me a lot of output. I believe
>> you're looking on arm for that one:
>> arch/arm/mm/init.c:             printk(KERN_INFO "Freeing %s memory:
>> %dK\n", s, size);
>
> Yes, thank you very much!  Now I want to disable the 'Freeing' behavior
> to reduce boot time, is there a kernel config or cmdline option? I am
> not sure if I can disable CONFIG_HIGHMEM to archive this purpose.


Why not bother to read the code?

712 void free_initmem(void)
713 {
714 #ifdef CONFIG_HAVE_TCM
715         extern char __tcm_start, __tcm_end;
716
717         totalram_pages += free_area(__phys_to_pfn(__pa(&__tcm_start)),
718                                     __phys_to_pfn(__pa(&__tcm_end)),
719                                     "TCM link");
720 #endif
721
722         if (!machine_is_integrator() && !machine_is_cintegrator())
723                 totalram_pages += free_area(__phys_to_pfn(__pa(__init_begin)),
724                                             __phys_to_pfn(__pa(__init_end)),
725                                             "init");
726 }
727



478 static inline int free_area(unsigned long pfn, unsigned long end, char *s)
479 {
480         unsigned int pages = 0, size = (end - pfn) << (PAGE_SHIFT - 10);
481
482         for (; pfn < end; pfn++) {
483                 struct page *page = pfn_to_page(pfn);
484                 ClearPageReserved(page);
485                 init_page_count(page);
486                 __free_page(page);
487                 pages++;
488         }
489
490         if (size && s)
491                 printk(KERN_INFO "Freeing %s memory: %dK\n", s, size);
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Does this really mean operations before the "Freeing init memory" cause the delay????
You want to bypass "Now I want to disable the 'Freeing' behavior", are you kidding?

Please select printk timing the kernel hacking to find out where the delay actually lies.



>> So, I want to know, who was printing this message and
>>> how can I disable the behavior to save some boot time since I don't care
>>> losting of several hundreds kilo bytes of memory.
>>>
>>> Thanks in advance.
>>> woody
>>>
>>> --
>>> I can't go back to yesterday - because I was a different person then
>>>
>>> _______________________________________________
>>> Kernelnewbies mailing list
>>> Kernelnewbies at kernelnewbies.org
>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>>
>> Cheers,
>>
>> marek
>>
>> --
>> as simple and primitive as possible
>> -------------------------------------------------
>> Marek Belisko - OPEN-NANDRA
>> Freelance Developer
>>
>> Ruska Nova Ves 219 | Presov, 08005 Slovak Republic
>> Tel: +421 915 052 184
>> skype: marekwhite
>> twitter: #opennandra
>> web: http://open-nandra.com
>

-- 
八百里秦川尘土飞扬,三千万老陕齐吼秦腔。

--bill



More information about the Kernelnewbies mailing list