Re: [Patch] kexec: increase max of kexec segments and use dynamic allocation

Cong Wang
2010-07-26T10:07:54Z

On 07/25/10 10:54, Eric W. Biederman wrote:
> huang ying<huang.ying.caritas@gmail.com> writes:
>
>> On Thu, Jul 22, 2010 at 3:08 PM, Eric W. Biederman
>> <ebiederm@xmission.com> wrote:
>>> Cong Wang<amwang@redhat.com> writes:
>>>
>>>> On 07/22/10 14:28, Eric W. Biederman wrote:
>>>>> Amerigo Wang<amwang@redhat.com> writes:
>>>>>
>>>>>> Currently KEXEC_SEGMENT_MAX is only 16 which is too small for machine with
>>>>>> many memory ranges. Increase this hard limit to 1024 which is reasonably large,
>>>>>> and change ->segment from a static array to a dynamically allocated memory.
>>>>>
>>>>> ???
>>>>>
>>>>> This should be about segments in the executable being loaded. What
>>>>> executable has one segment for each range of physical memory?
>>>>>
>>>>> Not that generalizing this is a bad idea but with a comment that
>>>>> seems entirely wrong I am wondering what the problem really is.
>>>>>
>>>>
>>>> Ah, I think Neil should explain this.
>>>>
>>>> He made a patch which includes many memory ranges, caused kexec
>>>> fails to load the kernel. Increasing this limit and the corresponding
>>>> one in kexec-tools fixes the problem. His patch is not in upstream
>>>> kexec-tools, AFAIK.
>>>>
>>>> However, even if we don't consider that patch, isn't 16 too small too?
>>>
>>> Generally you just need one physical hunk for the code, maybe a second
>>> for the initrd.
>>>
>>> It is perfectly fine to raise the number of segments as it doesn't
>>> affect the ABI, but it wants a good explanation of what kind of weird
>>> application wants to write to all over memory when it is loaded.
>>
>> kexec can be used to load not only the kernel images, but also more
>> complex images such as hibernation image. So I think it is good to
>> raise the number of segments.
>
> Totally reasonable.
>
> And in all fairness the patch does a good job of raising the limit.
>
> However if that is the goal 1024 is probably a bit low as I believe
> SGI has built machines with that many nodes. Still after the patch
> under discussion 1024 was only a limit in a header file so it can
> be trivially changed.

So, what is a better number? 2048? :)

Thanks.

--
The opposite of love is not hate, it's indifference.
- Elie Wiesel