[PATCH v2 2/3] Generic handling of multi-page exclusions

HATAYAMA Daisuke d.hatayama at jp.fujitsu.com
Wed Apr 9 00:12:56 PDT 2014


From: Petr Tesarik <ptesarik at suse.cz>
Subject: Re: [PATCH v2 2/3] Generic handling of multi-page exclusions
Date: Tue, 8 Apr 2014 12:07:28 +0200

> On Tue, 08 Apr 2014 17:19:03 +0900 (JST)
> HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> wrote:
> 
>> From: Petr Tesarik <ptesarik at suse.cz>
>> Subject: Re: [PATCH v2 2/3] Generic handling of multi-page exclusions
>> Date: Tue, 8 Apr 2014 08:54:36 +0200
>> 
>> > On Tue, 08 Apr 2014 10:49:07 +0900 (JST)
>> > HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> wrote:
>> >> 
>> >> Also, it seems to me better to introduce a new type for this
>> >> processing rather than extending existing code. struct mem_map_data is
>> >> not specific for the excluding processing.
>> > 
>> > Kind of agreed. OTOH it will most likely be embedded in struct
>> > mem_map_data anyway, because exactly one such object per mm is needed.
>> > 
>> > Petr T
>> 
>> I don't understand well. It seems to me a single object is enough. Is
>> it possible to nr_pages cover multiple mm's?
> 
> In fact, I believe it may be sufficient, but the loop nesting is like
> this (pseudo-code):
> 
>   for each cycle:
>     for each mm:
>        call __exclude_unnecessary_pages
> 
> I'm not 100% sure that the region cannot change back and forth between
> two consecutive calls to __exclude_unnecessary_pages.
> 
> Thinking about it some more, this can be harmful only if there are
> overlapping memory maps... Can it happen, or can I safely ignore this
> possibility?
> 
> Petr T

The list of mm is sorted and not overlapping. See get_mm_sparsemem(),
get_mm_sparsemem(), get_mm_discontigmem() and get_mm_flatmem() from
get_mem_map(). In particular, in get_mm_discontigmem(), sorting and
removing overlapping portions are done explicitly.

Thanks.
HATAYAMA, Daisuke




More information about the kexec mailing list