Re: [PATCH v1 0/2] mm/kdump: exclude reserved pages in dumps

From: Vlastimil Babka
Date: Tue Jul 24 2018 - 05:49:29 EST


On 07/23/2018 02:30 PM, Michal Hocko wrote:
> On Mon 23-07-18 13:45:18, Vlastimil Babka wrote:
>> On 07/20/2018 02:34 PM, David Hildenbrand wrote:
>>> Dumping tools (like makedumpfile) right now don't exclude reserved pages.
>>> So reserved pages might be access by dump tools although nobody except
>>> the owner should touch them.
>>
>> Are you sure about that? Or maybe I understand wrong. Maybe it changed
>> recently, but IIRC pages that are backing memmap (struct pages) are also
>> PG_reserved. And you definitely do want those in the dump.
>
> You are right. reserve_bootmem_region will make all early bootmem
> allocations (including those backing memmaps) PageReserved. I have asked
> several times but I haven't seen a satisfactory answer yet. Why do we
> even care for kdump about those. If they are reserved the nobody should
> really look at those specific struct pages and manipulate them. Kdump
> tools are using a kernel interface to read the content. If the specific
> content is backed by a non-existing memory then they should simply not
> return anything.

When creating a crashdump, I definitely need the pages containing memmap
included in the dump, so I can inspect the struct pages. But this is a
bit recursive issue, so I'll try making it clearer:

1) there are kernel pages with data (e.g. slab) that I typically need in
the dump, and are not PageReserved
2) there are struct pages for pages 1) in the memmap that physically
hold the pageflags for 1), and these are PageReserved
3) there are struct pages for pages 2) somewhere else in the memmap,
physically hold the pageflags for 2). They are probably also
PageReserved themselves ? and self-referencing.

Excluding PageReserved from dump means there won't be cases 2) and 3) in
the dump, which at least for case 2) is making such dump almost useless
in many cases.