Hello community,

here is the log from the commit of package makedumpfile for openSUSE:Factory 
checked in at 2019-09-11 10:23:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/makedumpfile (Old)
 and      /work/SRC/openSUSE:Factory/.makedumpfile.new.7948 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "makedumpfile"

Wed Sep 11 10:23:42 2019 rev:74 rq:729000 version:1.6.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/makedumpfile/makedumpfile.changes        
2019-08-16 15:33:09.149917308 +0200
+++ /work/SRC/openSUSE:Factory/.makedumpfile.new.7948/makedumpfile.changes      
2019-09-11 10:23:45.075485763 +0200
@@ -1,0 +2,15 @@
+Fri Sep  6 13:09:13 UTC 2019 - Petr Tesařík <[email protected]>
+
+- makedumpfile-Increase-SECTION_MAP_LAST_BIT-to-4.patch: Increase
+  SECTION_MAP_LAST_BIT to 4 (bsc#1144708).
+
+-------------------------------------------------------------------
+Thu Sep  5 18:36:13 UTC 2019 - Petr Tesařík <[email protected]>
+
+- Update to 1.6.6
+  * Support for AMD Secure Memory Encryption
+  * Exclude pages that are logically offline
+  * Support kernels up to 5.1.9
+- Drop makedumpfile-coptflags.diff.
+
+-------------------------------------------------------------------
@@ -25,0 +41 @@
+  * Support larger VA size with newer ppc64 kernels (bsc#1118445).

Old:
----
  makedumpfile-1.6.5.tar.gz
  makedumpfile-coptflags.diff

New:
----
  makedumpfile-1.6.6.tar.gz
  makedumpfile-Increase-SECTION_MAP_LAST_BIT-to-4.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ makedumpfile.spec ++++++
--- /var/tmp/diff_new_pack.v1qLJi/_old  2019-09-11 10:23:46.711485560 +0200
+++ /var/tmp/diff_new_pack.v1qLJi/_new  2019-09-11 10:23:46.755485555 +0200
@@ -32,7 +32,7 @@
 # End of compatibility cruft
 
 Name:           makedumpfile
-Version:        1.6.5
+Version:        1.6.6
 Release:        0
 Summary:        Partial kernel dump
 License:        GPL-2.0-only
@@ -40,9 +40,9 @@
 Url:            https://sourceforge.net/projects/makedumpfile/
 Source:         
https://sourceforge.net/projects/makedumpfile/files/makedumpfile/%{version}/%{name}-%{version}.tar.gz
 Source99:       %{name}-rpmlintrc
-Patch0:         %{name}-coptflags.diff
 Patch1:         %{name}-override-libtinfo.patch
 Patch2:         %{name}-ppc64-VA-range-SUSE.patch
+Patch3:         %{name}-Increase-SECTION_MAP_LAST_BIT-to-4.patch
 BuildRequires:  libdw-devel
 BuildRequires:  libebl-devel
 BuildRequires:  libelf-devel
@@ -70,18 +70,19 @@
 
 %prep
 %setup -q
-%patch0 -p1
 %patch1 -p1
 %patch2 -p1
+%patch3 -p1
 
 %build
+export CFLAGS="%{optflags}"
 %if %{have_snappy}
 export USESNAPPY=on
 %endif
 export USELZO=on
 export LINKTYPE=dynamic
-make %{?_smp_mflags} COPTFLAGS="%{optflags}" 
LDFLAGS="-Wl,-rpath,%{_libdir}/%{name}-%{version}"
-make %{?_smp_mflags} COPTFLAGS="%{optflags}" eppic_makedumpfile.so 
%{?ncurses_make_opts}
+make %{?_smp_mflags} LDFLAGS="-Wl,-rpath,%{_libdir}/%{name}-%{version}"
+make %{?_smp_mflags} eppic_makedumpfile.so %{?ncurses_make_opts}
 
 %install
 install -D -m 0755 makedumpfile %{buildroot}%{_bindir}/makedumpfile

++++++ makedumpfile-1.6.5.tar.gz -> makedumpfile-1.6.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/Makefile 
new/makedumpfile-1.6.6/Makefile
--- old/makedumpfile-1.6.5/Makefile     2018-12-04 21:21:52.000000000 +0100
+++ new/makedumpfile-1.6.6/Makefile     2019-06-27 14:42:40.000000000 +0200
@@ -1,18 +1,17 @@
 # makedumpfile
 
-VERSION=1.6.5
-DATE=5 Dec 2018
+VERSION=1.6.6
+DATE=27 Jun 2019
 
 # Honour the environment variable CC
 ifeq ($(strip $CC),)
 CC     = gcc
 endif
 
-CFLAGS = -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \
-         -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE \
-         -DVERSION='"$(VERSION)"' -DRELEASE_DATE='"$(DATE)"'
-CFLAGS_ARCH    = -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \
-                   -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+CFLAGS_BASE := $(CFLAGS) -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \
+               -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
+CFLAGS      := $(CFLAGS_BASE) -DVERSION='"$(VERSION)"' 
-DRELEASE_DATE='"$(DATE)"'
+CFLAGS_ARCH := $(CFLAGS_BASE)
 # LDFLAGS = -L/usr/local/lib -I/usr/local/include
 
 HOST_ARCH := $(shell uname -m)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/README 
new/makedumpfile-1.6.6/README
--- old/makedumpfile-1.6.5/README       2018-12-04 21:21:52.000000000 +0100
+++ new/makedumpfile-1.6.6/README       2019-06-27 14:42:40.000000000 +0200
@@ -127,6 +127,9 @@
   4.17   | OK | ** |    |    |    | ** |    | -- | OK | OK |    |    |
   4.18   | OK | ** |    |    |    | ** |    | -- | OK | OK |    |    |
   4.19   | OK | ** |    |    |    | ** |    | -- | OK | OK |    |    |
+  4.20   | OK | ** |    |    |    | ** |    | -- | OK | OK |    |    |
+  5.0    | OK | ** |    |    |    | ** |    | -- | OK | OK |    |    |
+  5.1    | OK | ** |    |    |    | ** |    | -- | OK | OK |    |    |
 
   OK    : Support.
   --    : Not support.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/arch/ppc64.c 
new/makedumpfile-1.6.6/arch/ppc64.c
--- old/makedumpfile-1.6.5/arch/ppc64.c 2018-12-04 21:21:52.000000000 +0100
+++ new/makedumpfile-1.6.6/arch/ppc64.c 2019-06-27 14:42:40.000000000 +0200
@@ -486,6 +486,11 @@
                || (array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT())))
                return TRUE;
 
+       info->max_physmem_bits  = _MAX_PHYSMEM_BITS_4_20;
+       if ((array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT_EXTREME()))
+               || (array_len == (NR_MEM_SECTIONS() / _SECTIONS_PER_ROOT())))
+               return TRUE;
+
        return FALSE;
 }
 
@@ -652,7 +657,7 @@
                return FALSE;
        }
        fpb = fopen(f_crashbase, "r");
-       if (!fp) {
+       if (!fpb) {
                ERRMSG("Cannot open %s\n", f_crashbase);
                fclose(fp);
                return FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/arch/x86_64.c 
new/makedumpfile-1.6.6/arch/x86_64.c
--- old/makedumpfile-1.6.5/arch/x86_64.c        2018-12-04 21:21:52.000000000 
+0100
+++ new/makedumpfile-1.6.6/arch/x86_64.c        2019-06-27 14:42:40.000000000 
+0200
@@ -48,6 +48,7 @@
 {
        unsigned int i;
        char buf[BUFSIZE_FGETS], *endp;
+       unsigned long kernel_image_size;
 
        if (!info->kaslr_offset && info->file_vmcoreinfo) {
                if (fseek(info->file_vmcoreinfo, 0, SEEK_SET) < 0) {
@@ -68,8 +69,16 @@
                                        
strtoul(buf+strlen(STR_KERNELOFFSET),&endp,16);
                }
        }
+       if (!info->kaslr_offset)
+               return 0;
+
+       if (NUMBER(KERNEL_IMAGE_SIZE) != NOT_FOUND_NUMBER)
+               kernel_image_size = NUMBER(KERNEL_IMAGE_SIZE);
+       else
+               kernel_image_size = KERNEL_IMAGE_SIZE_KASLR_ORIG;
+
        if (vaddr >= __START_KERNEL_map &&
-                       vaddr < __START_KERNEL_map + info->kaslr_offset)
+                       vaddr < __START_KERNEL_map + kernel_image_size)
                return info->kaslr_offset;
        else
                /*
@@ -149,6 +158,8 @@
        info->phys_base = 0; /* default/traditional */
        if (NUMBER(phys_base) != NOT_FOUND_NUMBER) {
                info->phys_base = NUMBER(phys_base);
+               DEBUG_MSG("phys_base    : %lx (vmcoreinfo)\n",
+                       info->phys_base);
                return TRUE;
        }
 
@@ -156,6 +167,8 @@
        if (!has_vmcoreinfo() && info->name_vmlinux) {
                SYMBOL_INIT(phys_base, "phys_base");
                if (SYMBOL(phys_base) == NOT_FOUND_SYMBOL) {
+                       DEBUG_MSG("phys_base    : %lx (no phys_base)\n",
+                               info->phys_base);
                        return TRUE;
                }
        }
@@ -167,6 +180,8 @@
                        info->phys_base = phys_start -
                            (virt_start & ~(__START_KERNEL_map));
 
+                       DEBUG_MSG("phys_base    : %lx (pt_load)\n",
+                               info->phys_base);
                        break;
                }
        }
@@ -291,6 +306,7 @@
        unsigned long page_dir, pgd, pud_paddr, pud_pte, pmd_paddr, pmd_pte;
        unsigned long pte_paddr, pte;
        unsigned long p4d_paddr, p4d_pte;
+       unsigned long entry_mask = ENTRY_MASK;
 
        /*
         * Get PGD.
@@ -302,6 +318,9 @@
                        return NOT_PADDR;
        }
 
+       if (NUMBER(sme_mask) != NOT_FOUND_NUMBER)
+               entry_mask &= ~(NUMBER(sme_mask));
+
        if (check_5level_paging()) {
                page_dir += pgd5_index(vaddr) * sizeof(unsigned long);
                if (!readmem(PADDR, page_dir, &pgd, sizeof pgd)) {
@@ -318,7 +337,7 @@
                /*
                 * Get P4D.
                 */
-               p4d_paddr  = pgd & ENTRY_MASK;
+               p4d_paddr = pgd & entry_mask;
                p4d_paddr += p4d_index(vaddr) * sizeof(unsigned long);
                if (!readmem(PADDR, p4d_paddr, &p4d_pte, sizeof p4d_pte)) {
                        ERRMSG("Can't get p4d_pte (p4d_paddr:%lx).\n", 
p4d_paddr);
@@ -331,7 +350,7 @@
                        ERRMSG("Can't get a valid p4d_pte.\n");
                        return NOT_PADDR;
                }
-               pud_paddr  = p4d_pte & ENTRY_MASK;
+               pud_paddr = p4d_pte & entry_mask;
        }else {
                page_dir += pgd_index(vaddr) * sizeof(unsigned long);
                if (!readmem(PADDR, page_dir, &pgd, sizeof pgd)) {
@@ -345,7 +364,7 @@
                        ERRMSG("Can't get a valid pgd.\n");
                        return NOT_PADDR;
                }
-               pud_paddr  = pgd & ENTRY_MASK;
+               pud_paddr = pgd & entry_mask;
        }
 
        /*
@@ -364,13 +383,13 @@
                return NOT_PADDR;
        }
        if (pud_pte & _PAGE_PSE)        /* 1GB pages */
-               return (pud_pte & ENTRY_MASK & PUD_MASK) +
+               return (pud_pte & entry_mask & PUD_MASK) +
                        (vaddr & ~PUD_MASK);
 
        /*
         * Get PMD.
         */
-       pmd_paddr  = pud_pte & ENTRY_MASK;
+       pmd_paddr = pud_pte & entry_mask;
        pmd_paddr += pmd_index(vaddr) * sizeof(unsigned long);
        if (!readmem(PADDR, pmd_paddr, &pmd_pte, sizeof pmd_pte)) {
                ERRMSG("Can't get pmd_pte (pmd_paddr:%lx).\n", pmd_paddr);
@@ -384,13 +403,13 @@
                return NOT_PADDR;
        }
        if (pmd_pte & _PAGE_PSE)        /* 2MB pages */
-               return (pmd_pte & ENTRY_MASK & PMD_MASK) +
+               return (pmd_pte & entry_mask & PMD_MASK) +
                        (vaddr & ~PMD_MASK);
 
        /*
         * Get PTE.
         */
-       pte_paddr  = pmd_pte & ENTRY_MASK;
+       pte_paddr = pmd_pte & entry_mask;
        pte_paddr += pte_index(vaddr) * sizeof(unsigned long);
        if (!readmem(PADDR, pte_paddr, &pte, sizeof pte)) {
                ERRMSG("Can't get pte (pte_paddr:%lx).\n", pte_paddr);
@@ -403,7 +422,7 @@
                ERRMSG("Can't get a valid pte.\n");
                return NOT_PADDR;
        }
-       return (pte & ENTRY_MASK) + PAGEOFFSET(vaddr);
+       return (pte & entry_mask) + PAGEOFFSET(vaddr);
 }
 
 unsigned long long
@@ -636,6 +655,7 @@
        unsigned long pmd, tpfn;
        unsigned long pvaddr = 0;
        unsigned long data_addr = 0, last_data_addr = 0, start_data_addr = 0;
+       unsigned long pmask = PMASK;
        /*
         * data_addr is the paddr of the page holding the page structs.
         * We keep lists of contiguous pages and the pfn's that their
@@ -656,6 +676,9 @@
                return FAILED;
        }
 
+       if (NUMBER(sme_mask) != NOT_FOUND_NUMBER)
+               pmask &= ~(NUMBER(sme_mask));
+
        pagestructsize = size_table.page;
        hugepagesize = PTRS_PER_PMD * info->page_size;
        vaddr_base = info->vmemmap_start;
@@ -686,7 +709,7 @@
                }
 
                /* mask the pgd entry for the address of the pud page */
-               pud_addr &= PMASK;
+               pud_addr &= pmask;
                if (pud_addr == 0)
                          continue;
                /* read the entire pud page */
@@ -699,7 +722,7 @@
                /* pudp points to an entry in the pud page */
                for (pudp = (unsigned long *)pud_page, pudindex = 0;
                                        pudindex < PTRS_PER_PUD; pudindex++, 
pudp++) {
-                       pmd_addr = *pudp & PMASK;
+                       pmd_addr = *pudp & pmask;
                        /* read the entire pmd page */
                        if (pmd_addr == 0)
                                continue;
@@ -741,7 +764,7 @@
                                 * - we discontiguous page is a string of valids
                                 */
                                if (pmd) {
-                                       data_addr = (pmd & PMASK);
+                                       data_addr = (pmd & pmask);
                                        if (start_range) {
                                                /* first-time kludge */
                                                start_data_addr = data_addr;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/elf_info.c 
new/makedumpfile-1.6.6/elf_info.c
--- old/makedumpfile-1.6.5/elf_info.c   2018-12-04 21:21:52.000000000 +0100
+++ new/makedumpfile-1.6.6/elf_info.c   2019-06-27 14:42:40.000000000 +0200
@@ -169,11 +169,12 @@
        pls->file_offset = prog->p_offset;
        pls->file_size   = prog->p_filesz;
 
-       DEBUG_MSG("LOAD (%d)\n", num_load);
-       DEBUG_MSG("  phys_start : %llx\n", pls->phys_start);
-       DEBUG_MSG("  phys_end   : %llx\n", pls->phys_end);
-       DEBUG_MSG("  virt_start : %llx\n", pls->virt_start);
-       DEBUG_MSG("  virt_end   : %llx\n", pls->virt_end);
+       if (num_load == 0)
+               DEBUG_MSG("%8s %16s %16s %16s %16s\n", "",
+                       "phys_start", "phys_end", "virt_start", "virt_end");
+
+       DEBUG_MSG("LOAD[%2d] %16llx %16llx %16llx %16llx\n", num_load,
+               pls->phys_start, pls->phys_end, pls->virt_start, pls->virt_end);
 
        return TRUE;
 }
@@ -928,13 +929,13 @@
                                      p->file_offset + p->phys_end - 
p->phys_start);
        }
 
+       DEBUG_MSG("%8s %16s %16s %16s %16s\n", "",
+               "phys_start", "phys_end", "virt_start", "virt_end");
        for (i = 0; i < num_pt_loads; ++i) {
                struct pt_load_segment *p = &pt_loads[i];
-               DEBUG_MSG("LOAD (%d)\n", i);
-               DEBUG_MSG("  phys_start : %llx\n", p->phys_start);
-               DEBUG_MSG("  phys_end   : %llx\n", p->phys_end);
-               DEBUG_MSG("  virt_start : %llx\n", p->virt_start);
-               DEBUG_MSG("  virt_end   : %llx\n", p->virt_end);
+
+               DEBUG_MSG("LOAD[%2d] %16llx %16llx %16llx %16llx\n", i,
+                       p->phys_start, p->phys_end, p->virt_start, p->virt_end);
        }
 
        return TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/makedumpfile.8 
new/makedumpfile-1.6.6/makedumpfile.8
--- old/makedumpfile-1.6.5/makedumpfile.8       2018-12-04 21:21:52.000000000 
+0100
+++ new/makedumpfile-1.6.6/makedumpfile.8       2019-06-27 14:42:40.000000000 
+0200
@@ -1,4 +1,4 @@
-.TH MAKEDUMPFILE 8 "5 Dec 2018" "makedumpfile v1.6.5" "Linux System 
Administrator's Manual"
+.TH MAKEDUMPFILE 8 "27 Jun 2019" "makedumpfile v1.6.6" "Linux System 
Administrator's Manual"
 .SH NAME
 makedumpfile \- make a small dumpfile of kdump
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/makedumpfile.c 
new/makedumpfile-1.6.6/makedumpfile.c
--- old/makedumpfile-1.6.5/makedumpfile.c       2018-12-04 21:21:52.000000000 
+0100
+++ new/makedumpfile-1.6.6/makedumpfile.c       2019-06-27 14:42:40.000000000 
+0200
@@ -88,6 +88,7 @@
 mdf_pfn_t pfn_user;
 mdf_pfn_t pfn_free;
 mdf_pfn_t pfn_hwpoison;
+mdf_pfn_t pfn_offline;
 
 mdf_pfn_t num_dumped;
 
@@ -250,6 +251,21 @@
 }
 
 static int
+isOffline(unsigned long flags, unsigned int _mapcount)
+{
+       if (NUMBER(PAGE_OFFLINE_MAPCOUNT_VALUE) == NOT_FOUND_NUMBER)
+               return FALSE;
+
+       if (flags & (1UL << NUMBER(PG_slab)))
+               return FALSE;
+
+       if (_mapcount == (int)NUMBER(PAGE_OFFLINE_MAPCOUNT_VALUE))
+               return TRUE;
+
+       return FALSE;
+}
+
+static int
 is_cache_page(unsigned long flags)
 {
        if (isLRU(flags))
@@ -977,6 +993,8 @@
        read_size = MIN(info->page_size - PAGEOFFSET(paddr), size);
 
        pgaddr = PAGEBASE(paddr);
+       if (NUMBER(sme_mask) != NOT_FOUND_NUMBER)
+               pgaddr = pgaddr & ~(NUMBER(sme_mask));
        pgbuf = cache_search(pgaddr, read_size);
        if (!pgbuf) {
                ++cache_miss;
@@ -2276,6 +2294,7 @@
        WRITE_NUMBER("NR_FREE_PAGES", NR_FREE_PAGES);
        WRITE_NUMBER("N_ONLINE", N_ONLINE);
        WRITE_NUMBER("pgtable_l5_enabled", pgtable_l5_enabled);
+       WRITE_NUMBER("sme_mask", sme_mask);
 
        WRITE_NUMBER("PG_lru", PG_lru);
        WRITE_NUMBER("PG_private", PG_private);
@@ -2287,7 +2306,10 @@
        WRITE_NUMBER("PG_hwpoison", PG_hwpoison);
 
        WRITE_NUMBER("PAGE_BUDDY_MAPCOUNT_VALUE", PAGE_BUDDY_MAPCOUNT_VALUE);
+       WRITE_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE",
+                    PAGE_OFFLINE_MAPCOUNT_VALUE);
        WRITE_NUMBER("phys_base", phys_base);
+       WRITE_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
 
        WRITE_NUMBER("HUGETLB_PAGE_DTOR", HUGETLB_PAGE_DTOR);
 #ifdef __aarch64__
@@ -2362,12 +2384,15 @@
                return FALSE;
        }
 
+       DEBUG_MSG("VMCOREINFO   :\n");
        while (fgets(buf, BUFSIZE_FGETS, info->file_vmcoreinfo)) {
                i = strlen(buf);
                if (!i)
                        break;
                if (buf[i - 1] == '\n')
                        buf[i - 1] = '\0';
+
+               DEBUG_MSG("  %s\n", buf);
                if (strncmp(buf, STR_OSRELEASE, strlen(STR_OSRELEASE)) == 0) {
                        get_release = TRUE;
                        /* if the release have been stored, skip this time. */
@@ -2411,6 +2436,8 @@
                    strlen(STR_CONFIG_PGTABLE_4)) == 0)
                        vt.mem_flags |= MEMORY_PAGETABLE_4L;
        }
+       DEBUG_MSG("\n");
+
        if (!get_release || !info->page_size) {
                ERRMSG("Invalid format in %s", info->name_vmcoreinfo);
                return FALSE;
@@ -2672,6 +2699,7 @@
        READ_NUMBER("NR_FREE_PAGES", NR_FREE_PAGES);
        READ_NUMBER("N_ONLINE", N_ONLINE);
        READ_NUMBER("pgtable_l5_enabled", pgtable_l5_enabled);
+       READ_NUMBER("sme_mask", sme_mask);
 
        READ_NUMBER("PG_lru", PG_lru);
        READ_NUMBER("PG_private", PG_private);
@@ -2687,7 +2715,9 @@
        READ_SRCFILE("pud_t", pud_t);
 
        READ_NUMBER("PAGE_BUDDY_MAPCOUNT_VALUE", PAGE_BUDDY_MAPCOUNT_VALUE);
+       READ_NUMBER("PAGE_OFFLINE_MAPCOUNT_VALUE", PAGE_OFFLINE_MAPCOUNT_VALUE);
        READ_NUMBER("phys_base", phys_base);
+       READ_NUMBER("KERNEL_IMAGE_SIZE", KERNEL_IMAGE_SIZE);
 #ifdef __aarch64__
        READ_NUMBER("VA_BITS", VA_BITS);
        READ_NUMBER_UNSIGNED("PHYS_OFFSET", PHYS_OFFSET);
@@ -2836,9 +2866,7 @@
        if (!(vt.numnodes = get_nodes_online())) {
                vt.numnodes = 1;
        }
-       DEBUG_MSG("\n");
        DEBUG_MSG("num of NODEs : %d\n", vt.numnodes);
-       DEBUG_MSG("\n");
 
        return TRUE;
 }
@@ -2968,10 +2996,12 @@
        mmd->pfn_end   = pfn_end;
        mmd->mem_map   = mem_map;
 
-       DEBUG_MSG("mem_map (%d)\n", num_mm);
-       DEBUG_MSG("  mem_map    : %lx\n", mem_map);
-       DEBUG_MSG("  pfn_start  : %llx\n", pfn_start);
-       DEBUG_MSG("  pfn_end    : %llx\n", pfn_end);
+       if (num_mm == 0)
+               DEBUG_MSG("%13s %16s %16s %16s\n",
+                       "", "mem_map", "pfn_start", "pfn_end");
+
+       DEBUG_MSG("mem_map[%4d] %16lx %16llx %16llx\n",
+               num_mm, mem_map, pfn_start, pfn_end);
 
        return;
 }
@@ -3561,27 +3591,19 @@
 
        switch (get_mem_type()) {
        case SPARSEMEM:
-               DEBUG_MSG("\n");
-               DEBUG_MSG("Memory type  : SPARSEMEM\n");
-               DEBUG_MSG("\n");
+               DEBUG_MSG("Memory type  : SPARSEMEM\n\n");
                ret = get_mm_sparsemem();
                break;
        case SPARSEMEM_EX:
-               DEBUG_MSG("\n");
-               DEBUG_MSG("Memory type  : SPARSEMEM_EX\n");
-               DEBUG_MSG("\n");
+               DEBUG_MSG("Memory type  : SPARSEMEM_EX\n\n");
                ret = get_mm_sparsemem();
                break;
        case DISCONTIGMEM:
-               DEBUG_MSG("\n");
-               DEBUG_MSG("Memory type  : DISCONTIGMEM\n");
-               DEBUG_MSG("\n");
+               DEBUG_MSG("Memory type  : DISCONTIGMEM\n\n");
                ret = get_mm_discontigmem();
                break;
        case FLATMEM:
-               DEBUG_MSG("\n");
-               DEBUG_MSG("Memory type  : FLATMEM\n");
-               DEBUG_MSG("\n");
+               DEBUG_MSG("Memory type  : FLATMEM\n\n");
                ret = get_mm_flatmem();
                break;
        default:
@@ -6042,6 +6064,12 @@
                        pfn_counter = &pfn_hwpoison;
                }
                /*
+                * Exclude pages that are logically offline.
+                */
+               else if (isOffline(flags, _mapcount)) {
+                       pfn_counter = &pfn_offline;
+               }
+               /*
                 * Unexcludable page
                 */
                else
@@ -7522,7 +7550,7 @@
         */
        if (info->flag_cyclic) {
                pfn_zero = pfn_cache = pfn_cache_private = 0;
-               pfn_user = pfn_free = pfn_hwpoison = 0;
+               pfn_user = pfn_free = pfn_hwpoison = pfn_offline = 0;
                pfn_memhole = info->max_mapnr;
        }
 
@@ -8804,7 +8832,7 @@
                 * Reset counter for debug message.
                 */
                pfn_zero = pfn_cache = pfn_cache_private = 0;
-               pfn_user = pfn_free = pfn_hwpoison = 0;
+               pfn_user = pfn_free = pfn_hwpoison = pfn_offline = 0;
                pfn_memhole = info->max_mapnr;
 
                /*
@@ -9749,7 +9777,7 @@
        pfn_original = info->max_mapnr - pfn_memhole;
 
        pfn_excluded = pfn_zero + pfn_cache + pfn_cache_private
-           + pfn_user + pfn_free + pfn_hwpoison;
+           + pfn_user + pfn_free + pfn_hwpoison + pfn_offline;
        shrinking = (pfn_original - pfn_excluded) * 100;
        shrinking = shrinking / pfn_original;
 
@@ -9763,6 +9791,7 @@
        REPORT_MSG("    User process data pages : 0x%016llx\n", pfn_user);
        REPORT_MSG("    Free pages              : 0x%016llx\n", pfn_free);
        REPORT_MSG("    Hwpoison pages          : 0x%016llx\n", pfn_hwpoison);
+       REPORT_MSG("    Offline pages           : 0x%016llx\n", pfn_offline);
        REPORT_MSG("  Remaining pages  : 0x%016llx\n",
            pfn_original - pfn_excluded);
        REPORT_MSG("  (The number of pages is reduced to %lld%%.)\n",
@@ -9790,7 +9819,7 @@
        pfn_original = info->max_mapnr - pfn_memhole;
 
        pfn_excluded = pfn_zero + pfn_cache + pfn_cache_private
-           + pfn_user + pfn_free + pfn_hwpoison;
+           + pfn_user + pfn_free + pfn_hwpoison + pfn_offline;
        shrinking = (pfn_original - pfn_excluded) * 100;
        shrinking = shrinking / pfn_original;
        total_size = info->page_size * pfn_original;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/makedumpfile.conf.5 
new/makedumpfile-1.6.6/makedumpfile.conf.5
--- old/makedumpfile-1.6.5/makedumpfile.conf.5  2018-12-04 21:21:52.000000000 
+0100
+++ new/makedumpfile-1.6.6/makedumpfile.conf.5  2019-06-27 14:42:40.000000000 
+0200
@@ -1,4 +1,4 @@
-.TH MAKEDUMPFILE.CONF 5 "5 Dec 2018" "makedumpfile v1.6.5" "Linux System 
Administrator's Manual"
+.TH MAKEDUMPFILE.CONF 5 "27 Jun 2019" "makedumpfile v1.6.6" "Linux System 
Administrator's Manual"
 .SH NAME
 makedumpfile.conf \- The filter configuration file for makedumpfile(8).
 .SH DESCRIPTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/makedumpfile.h 
new/makedumpfile-1.6.6/makedumpfile.h
--- old/makedumpfile-1.6.5/makedumpfile.h       2018-12-04 21:21:52.000000000 
+0100
+++ new/makedumpfile-1.6.6/makedumpfile.h       2019-06-27 14:42:40.000000000 
+0200
@@ -495,7 +495,7 @@
 #define KVER_MIN_SHIFT 16
 #define KERNEL_VERSION(x,y,z) (((x) << KVER_MAJ_SHIFT) | ((y) << 
KVER_MIN_SHIFT) | (z))
 #define OLDEST_VERSION         KERNEL_VERSION(2, 6, 15) /* linux-2.6.15 */
-#define LATEST_VERSION         KERNEL_VERSION(4, 19, 4) /* linux-4.19.4 */
+#define LATEST_VERSION         KERNEL_VERSION(5, 1, 9) /* linux-5.1.9 */
 
 /*
  * vmcoreinfo in /proc/vmcore
@@ -617,6 +617,7 @@
 #define VMEMMAP_END_5LEVEL     (0xffd5ffffffffffff) /* 5-level page table */
 
 #define __START_KERNEL_map     (0xffffffff80000000)
+#define KERNEL_IMAGE_SIZE_KASLR_ORIG   (1024*1024*1024) /* 3.14, or later */
 #define KVBASE                 PAGE_OFFSET
 #define _SECTION_SIZE_BITS     (27)
 #define _MAX_PHYSMEM_BITS_ORIG         (40)
@@ -672,6 +673,7 @@
 #define _MAX_PHYSMEM_BITS_ORIG  (44)
 #define _MAX_PHYSMEM_BITS_3_7   (46)
 #define _MAX_PHYSMEM_BITS_4_19  (47)
+#define _MAX_PHYSMEM_BITS_4_20  (51)
 #define REGION_SHIFT            (60UL)
 #define VMEMMAP_REGION_ID       (0xfUL)
 
@@ -1912,6 +1914,7 @@
        long    NR_FREE_PAGES;
        long    N_ONLINE;
        long    pgtable_l5_enabled;
+       long    sme_mask;
 
        /*
        * Page flags
@@ -1927,10 +1930,12 @@
        long    PG_hwpoison;
 
        long    PAGE_BUDDY_MAPCOUNT_VALUE;
+       long    PAGE_OFFLINE_MAPCOUNT_VALUE;
        long    SECTION_SIZE_BITS;
        long    MAX_PHYSMEM_BITS;
        long    HUGETLB_PAGE_DTOR;
        long    phys_base;
+       long    KERNEL_IMAGE_SIZE;
 #ifdef __aarch64__
        long    VA_BITS;
        unsigned long   PHYS_OFFSET;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/makedumpfile-1.6.5/makedumpfile.spec 
new/makedumpfile-1.6.6/makedumpfile.spec
--- old/makedumpfile-1.6.5/makedumpfile.spec    2018-12-04 21:21:52.000000000 
+0100
+++ new/makedumpfile-1.6.6/makedumpfile.spec    2019-06-27 14:42:40.000000000 
+0200
@@ -1,6 +1,6 @@
 Name: makedumpfile
 Summary: makedumpfile package
-Version: 1.6.5
+Version: 1.6.6
 Release: 1
 Group: Applications/Text
 License: GPL

++++++ makedumpfile-Increase-SECTION_MAP_LAST_BIT-to-4.patch ++++++
>From 7bdb468c2c99dd780c9a5321f93c79cbfdce2527 Mon Sep 17 00:00:00 2001
From: Kazuhito Hagio <[email protected]>
Date: Tue, 23 Jul 2019 12:24:47 -0400
Subject: [PATCH] Increase SECTION_MAP_LAST_BIT to 4
References: bsc#1144708
Git-commit: 7bdb468c2c99dd780c9a5321f93c79cbfdce2527
Upstream: merged

kernel commit 326e1b8f83a4 ("mm/sparsemem: introduce a SECTION_IS_EARLY
flag") added the flag to mem_section->section_mem_map value, and it caused
makedumpfile an error like the following:

  readmem: Can't convert a virtual address(fffffc97d1000000) to physical 
address.
  readmem: type_addr: 0, addr:fffffc97d1000000, size:32768
  __exclude_unnecessary_pages: Can't read the buffer of struct page.
  create_2nd_bitmap: Can't exclude unnecessary pages.

To fix this, SECTION_MAP_LAST_BIT needs to be updated. The bit has not
been used until the addition, so we can just increase the value.

Signed-off-by: Kazuhito Hagio <[email protected]>
Acked-by: Petr Tesarik <[email protected]>
---
 makedumpfile.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -195,7 +195,7 @@ isAnon(unsigned long mapping)
  *  2. it has been verified that (1UL<<2) was never set, so it is
  *     safe to mask that bit off even in old kernels.
  */
-#define SECTION_MAP_LAST_BIT   (1UL<<3)
+#define SECTION_MAP_LAST_BIT   (1UL<<4)
 #define SECTION_MAP_MASK       (~(SECTION_MAP_LAST_BIT-1))
 #define NR_SECTION_ROOTS()     divideup(num_section, SECTIONS_PER_ROOT())
 #define SECTION_NR_TO_PFN(sec) ((sec) << PFN_SECTION_SHIFT())

Reply via email to