Re: [PATCH] kexec: unmap reserved pages for each error-return way

From: Xunlei Pang
Date: Thu Jan 28 2016 - 22:14:40 EST


On 2016/01/28 at 17:02, Dmitry Safonov wrote:
> On 01/28/2016 05:58 AM, Xunlei Pang wrote:
>> Hi Dmitry,
>>
>> On 2016/01/28 at 03:15, Andrew Morton wrote:
>>> On Wed, 27 Jan 2016 14:48:31 +0300 Dmitry Safonov <dsafonov@xxxxxxxxxxxxx> wrote:
>>>
>>>> For allocation of kimage failure or kexec_prepare or load segments
>>>> errors there is no need to keep crashkernel memory mapped.
>>>> It will affect only s390 as map/unmap hook defined only for it.
>>>> As on unmap s390 also changes os_info structure let's check return code
>>>> and add info only on success.
>>>>
>>> This conflicts (both mechanically and somewhat conceptually) with
>>> Xunlei Pang's "kexec: Introduce a protection mechanism for the
>>> crashkernel reserved memory" and "kexec: provide
>>> arch_kexec_protect(unprotect)_crashkres()".
>>>
>>> http://ozlabs.org/~akpm/mmots/broken-out/kexec-introduce-a-protection-mechanism-for-the-crashkernel-reserved-memory.patch
>>> http://ozlabs.org/~akpm/mmots/broken-out/kexec-introduce-a-protection-mechanism-for-the-crashkernel-reserved-memory-v4.patch
>>>
>>> and
>>>
>>> http://ozlabs.org/~akpm/mmots/broken-out/kexec-provide-arch_kexec_protectunprotect_crashkres.patch
>>> http://ozlabs.org/~akpm/mmots/broken-out/kexec-provide-arch_kexec_protectunprotect_crashkres-v4.patch
>>>
>>> so can we please sort all that out?
>>
>> Ah, I've checked git-log history, they are almost the same idea, can crash_unmap/map_reserved_pages()
>> be re-implemented using the new arch_kexec_unprotect/protect_crashkres() on S390?
> Sorry, didn't fetched akpm before sending.
> Yes, sounds like really right thing to do to have one united arch-helper.

Yeah, as Michael said, "memblock_remove(crash_base, crash_size)" creates a big hole in the kernel pgtable.
In order to have one united arch-helper, I guess we can forbid this to let the pgtable setup for crash memory,
then we can easily move the logic of crash_map_reserved_pages() to arch_kexec_unprotect_crashkres(), and
move crash_unmap_reserved_pages() to arch_kexec_protect_crashkres(). After that crash_map_reserved_pages()
called in crash_shrink_memory() can be safely removed as well.

Regards,
Xunlei

>>
>> Regards,
>> Xunlei
>>
>>> _______________________________________________
>>> kexec mailing list
>>> kexec@xxxxxxxxxxxxxxxxxxx
>>> http://lists.infradead.org/mailman/listinfo/kexec
>>
>
>
> --
> Regards,
> Dmitry Safonov