[PATCH RFC 3/6] arm64: allocate memory for other segments after kernel

Pratyush Anand panand at redhat.com
Mon Apr 20 21:19:18 PDT 2015



On Monday 20 April 2015 08:51 AM, Baoquan He wrote:
> On 04/16/15 at 10:17pm, Pratyush Anand wrote:
>> In case of KEXEC_ON_CRASH, load other segments after the addresses where
>> kernel segments finish.
>>
>> Signed-off-by: Pratyush Anand <panand at redhat.com>
>> ---
>>   kexec/arch/arm64/crashdump-arm64.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/kexec/arch/arm64/crashdump-arm64.c b/kexec/arch/arm64/crashdump-arm64.c
>> index 41266f294589..75f4e4d269ca 100644
>> --- a/kexec/arch/arm64/crashdump-arm64.c
>> +++ b/kexec/arch/arm64/crashdump-arm64.c
>> @@ -312,5 +312,6 @@ void set_crash_entry(struct mem_ehdr *ehdr, struct kexec_info *info)
>>   off_t locate_dtb_in_crashmem(struct kexec_info *info, off_t dtb_size)
>>   {
>>   	return locate_hole(info, dtb_size, 128UL * 1024,
>> -		crash_reserved_mem.start, crash_reserved_mem.end, 1);
>> +		crash_reserved_mem.start + arm64_mem.text_offset +
>> +		arm64_mem.image_size, crash_reserved_mem.end, 1);
>
> So you have decided to hard code the sequence of segment. It
> seems not good. Why don't do it by calling add_buffer_phys_virt() or
> implement a similar function if you don't like add_buffer_phys_virt.

I agree that code is a bit tightly coupled here. I think, Takahiro  can 
comment better.

arm64 does use add_buffer_phys_virt to add all the buffers into segment 
list. arm64_load_other_segments function adds buffers for all segments 
other than kernel and elfcorehdr. This function calls 
add_buffer_phys_virt to load different segments like dtb, initrd and 
purgatory. Only limitation we are putting that we find free area for all 
these segments after the area where kernel finishes. Currently load 
sequence is like dtb, initrd and then purgatory. But I believe, even if 
we use other load sequence in arm64_load_other_segments, it should work.


Not sure, if understood the question and replied well.

~Pratyush



>
>>   }
>> --
>> 2.1.0
>>
>>
>> _______________________________________________
>> kexec mailing list
>> kexec at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/kexec
>
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
>



More information about the kexec mailing list