Hi Petr, Thank you for your V2 patch. I will merge it into V1.6.4. Thanks Tachibana > -----Original Message----- > From: kexec [mailto:kexec-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Petr Tesarik > Sent: Tuesday, March 20, 2018 6:31 PM > To: Tachibana Masaki() <mas-tachibana@xxxxxxxxxxxxx> > Cc: kexec mailing list <kexec@xxxxxxxxxxxxxxxxxxx> > Subject: [makedumpfile PATCH v2] Always use bigger SECTION_MAP_MASK > > It is not necessary to distinguish between different kernel > versions. Kernel commit 2d070eab2e82 merely reuses a previously > unused bit (see clarification in kernel commit def9b71ee651a). The > bit was always zero even before that commit, so it is safe to mask > it off even for kernel versions before 4.13, removing some of the > complexity. > > More importantly, makedumpfile fails on kernels which backport the > patch on top of an older version (for example SLES15). > > Signed-off-by: Petr Tesarik <ptesarik@xxxxxxxx> > --- > makedumpfile.c | 5 +---- > makedumpfile.h | 9 ++++++++- > 2 files changed, 9 insertions(+), 5 deletions(-) > > diff --git a/makedumpfile.c b/makedumpfile.c > index ed138d3..b180eb3 100644 > --- a/makedumpfile.c > +++ b/makedumpfile.c > @@ -3337,10 +3337,7 @@ section_mem_map_addr(unsigned long addr) > return NOT_KV_ADDR; > } > map = ULONG(mem_section + OFFSET(mem_section.section_mem_map)); > - if (info->kernel_version < KERNEL_VERSION(4, 13, 0)) > - map &= SECTION_MAP_MASK_4_12; > - else > - map &= SECTION_MAP_MASK; > + map &= SECTION_MAP_MASK; > free(mem_section); > > return map; > diff --git a/makedumpfile.h b/makedumpfile.h > index 01eece2..8491025 100644 > --- a/makedumpfile.h > +++ b/makedumpfile.h > @@ -185,8 +185,15 @@ isAnon(unsigned long mapping) > #define SECTION_ROOT_MASK() (SECTIONS_PER_ROOT() - 1) > #define SECTION_NR_TO_ROOT(sec) ((sec) / SECTIONS_PER_ROOT()) > #define SECTION_IS_ONLINE (1UL<<2) > +/* > + * SECTION_MAP_LAST_BIT was 1UL<<2 before Linux 4.13.0. > + * However, we always use the higher value, because: > + * 1. at least one distributor backported commit 2d070eab2e82 to kernel > + * version 4.12, > + * 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_MASK_4_12 (~(SECTION_IS_ONLINE-1)) > #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()) > -- > 2.13.6 > > _______________________________________________ > kexec mailing list > kexec@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/kexec _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec