[PATCH v3 09/12] ppc64/kexec_file: setup backup region for kdump kernel

Hari Bathini hbathini at linux.ibm.com
Fri Jul 17 07:10:37 AEST 2020



On 16/07/20 7:08 am, Thiago Jung Bauermann wrote:
> 
> Hari Bathini <hbathini at linux.ibm.com> writes:
> 
>> @@ -968,7 +1040,7 @@ int setup_new_fdt_ppc64(const struct kimage *image, void *fdt,
>>
>>  	/*
>>  	 * Restrict memory usage for kdump kernel by setting up
>> -	 * usable memory ranges.
>> +	 * usable memory ranges and memory reserve map.
>>  	 */
>>  	if (image->type == KEXEC_TYPE_CRASH) {
>>  		ret = get_usable_memory_ranges(&umem);
>> @@ -980,6 +1052,24 @@ int setup_new_fdt_ppc64(const struct kimage *image, void *fdt,
>>  			pr_err("Error setting up usable-memory property for kdump kernel\n");
>>  			goto out;
>>  		}
>> +
>> +		ret = fdt_add_mem_rsv(fdt, BACKUP_SRC_START + BACKUP_SRC_SIZE,
>> +				      crashk_res.start - BACKUP_SRC_SIZE);
> 
> I believe this answers my question from the other email about how the
> crashkernel is prevented from stomping in the crashed kernel's memory,
> right? I needed to think for a bit to understand what the above
> reservation was protecting. I think it's worth adding a comment.

Right. The reason to add it in the first place is, prom presses the panic button if
it can't find low memory. Marking it reserved seems to keep it quiet though. so..

Will add comment mentioning that..

>> +void purgatory(void)
>> +{
>> +	void *dest, *src;
>> +
>> +	src = (void *)BACKUP_SRC_START;
>> +	if (backup_start) {
>> +		dest = (void *)backup_start;
>> +		__memcpy(dest, src, BACKUP_SRC_SIZE);
>> +	}
>> +}
> 
> In general I'm in favor of using C code over assembly, but having to
> bring in that relocation support just for the above makes me wonder if
> it's worth it in this case.

I am planning to build on purgatory later with "I'm in purgatory" print support
for pseries at least and also, sha256 digest check.

Thanks
Hari


More information about the Linuxppc-dev mailing list