On 11.03.19 10:04, Dave Young wrote: > Hi David, > On 11/22/18 at 11:06am, David Hildenbrand wrote: >> Right now, pages inflated as part of a balloon driver will be dumped >> by dump tools like makedumpfile. While XEN is able to check in the >> crash kernel whether a certain pfn is actuall backed by memory in the >> hypervisor (see xen_oldmem_pfn_is_ram) and optimize this case, dumps of >> other balloon inflated memory will essentially result in zero pages getting >> allocated by the hypervisor and the dump getting filled with this data. >> >> The allocation and reading of zero pages can directly be avoided if a >> dumping tool could know which pages only contain stale information not to >> be dumped. >> >> We now have PG_offline which can be (and already is by virtio-balloon) >> used for marking pages as logically offline. Follow up patches will >> make use of this flag also in other balloon implementations. >> >> Let's export PG_offline via PAGE_OFFLINE_MAPCOUNT_VALUE, so >> makedumpfile can directly skip pages that are logically offline and the >> content therefore stale. (we export is as a macro to match how it is >> done for PG_buddy. This way it is clearer that this is not actually a flag >> but only a very specific mapcount value to represent page types). >> >> Please note that this is also helpful for a problem we were seeing under >> Hyper-V: Dumping logically offline memory (pages kept fake offline while >> onlining a section via online_page_callback) would under some condicions >> result in a kernel panic when dumping them. >> >> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> >> Cc: Dave Young <dyoung@xxxxxxxxxx> >> Cc: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx> >> Cc: Baoquan He <bhe@xxxxxxxxxx> >> Cc: Omar Sandoval <osandov@xxxxxx> >> Cc: Arnd Bergmann <arnd@xxxxxxxx> >> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> >> Cc: Michal Hocko <mhocko@xxxxxxxx> >> Cc: "Michael S. Tsirkin" <mst@xxxxxxxxxx> >> Cc: Lianbo Jiang <lijiang@xxxxxxxxxx> >> Cc: Borislav Petkov <bp@xxxxxxxxx> >> Cc: Kazuhito Hagio <k-hagio@xxxxxxxxxxxxx> >> Acked-by: Michael S. Tsirkin <mst@xxxxxxxxxx> >> Acked-by: Dave Young <dyoung@xxxxxxxxxx> >> Signed-off-by: David Hildenbrand <david@xxxxxxxxxx> >> --- >> kernel/crash_core.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/kernel/crash_core.c b/kernel/crash_core.c >> index 933cb3e45b98..093c9f917ed0 100644 >> --- a/kernel/crash_core.c >> +++ b/kernel/crash_core.c >> @@ -464,6 +464,8 @@ static int __init crash_save_vmcoreinfo_init(void) >> VMCOREINFO_NUMBER(PAGE_BUDDY_MAPCOUNT_VALUE); >> #ifdef CONFIG_HUGETLB_PAGE >> VMCOREINFO_NUMBER(HUGETLB_PAGE_DTOR); >> +#define PAGE_OFFLINE_MAPCOUNT_VALUE (~PG_offline) >> + VMCOREINFO_NUMBER(PAGE_OFFLINE_MAPCOUNT_VALUE); >> #endif >> >> arch_crash_save_vmcoreinfo(); > > The patch has been merged, would you mind to send a documentation patch > for the vmcoreinfo, which is added recently in Documentation/kdump/vmcoreinfo.txt > > A brief description about how this vmcoreinfo field is used is good to > have. > Turns out, it was already documented PG_lru|PG_private|PG_swapcache|PG_swapbacked|PG_slab|PG_hwpoision |PG_head_mask|PAGE_BUDDY_MAPCOUNT_VALUE(~PG_buddy) |PAGE_OFFLINE_MAPCOUNT_VALUE(~PG_offline) ----------------------------------------------------------------- Page attributes. These flags are used to filter various unnecessary for dumping pages. Thanks! > Thanks > Dave > -- Thanks, David / dhildenb