[kexec-tools] Move counting pfn_memhole for cyclic mode.

WANG Chao wangchao at fedoraproject.org
Wed Jul 16 06:57:26 UTC 2014


commit 23d1c25fd5527e1be72c23d3b1f6ee596c787e64
Author: Baoquan He <bhe at redhat.com>
Date:   Tue Jul 15 15:50:24 2014 +0800

    Move counting pfn_memhole for cyclic mode.
    
    This is a backport of the following upstream commit.
    
    commit 2648a8f7caa63e3ec82fd4bce471cec0a895b704
    Author: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp>
    Date:   Mon Jun 9 17:48:30 2014 +0900
    
        [PATCH 2/3] Move counting pfn_memhole for cyclic mode.
    
        In cyclic mode, memory holes are checked in initialize_2nd_bitmap_cyclic()
        in both the kdump path and the ELF path, so pfn_memhole should be
        counted there.
    
        Signed-off-by: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp>
    
    Signed-off-by: Baoquan He <bhe at redhat.com>
    Acked-by: Vivek Goyal <vgoyal at redhat.com>

 ...Move-counting-pfn_memhole-for-cyclic-mode.patch |   97 ++++++++++++++++++++
 kexec-tools.spec                                   |    2 +
 2 files changed, 99 insertions(+), 0 deletions(-)
---
diff --git a/kexec-tools-2.0.4-makedumpfile-Move-counting-pfn_memhole-for-cyclic-mode.patch b/kexec-tools-2.0.4-makedumpfile-Move-counting-pfn_memhole-for-cyclic-mode.patch
new file mode 100644
index 0000000..fbed9df
--- /dev/null
+++ b/kexec-tools-2.0.4-makedumpfile-Move-counting-pfn_memhole-for-cyclic-mode.patch
@@ -0,0 +1,97 @@
+From 2648a8f7caa63e3ec82fd4bce471cec0a895b704 Mon Sep 17 00:00:00 2001
+From: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp>
+Date: Mon, 9 Jun 2014 17:48:30 +0900
+Subject: [PATCH] [PATCH 2/3] Move counting pfn_memhole for cyclic mode.
+
+In cyclic mode, memory holes are checked in initialize_2nd_bitmap_cyclic()
+in both the kdump path and the ELF path, so pfn_memhole should be
+counted there.
+
+Signed-off-by: Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp>
+Signed-off-by: Baoquan He <bhe at redhat.com>
+---
+ makedumpfile.c | 18 ++++++++----------
+ 1 file changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/makedumpfile.c b/makedumpfile.c
+index f62e94c..b8f1ec4 100644
+--- a/makedumpfile-1.5.6/makedumpfile.c
++++ b/makedumpfile-1.5.6/makedumpfile.c
+@@ -4450,7 +4450,7 @@ int
+ create_1st_bitmap_cyclic(struct cycle *cycle)
+ {
+ 	int i;
+-	mdf_pfn_t pfn, pfn_bitmap1;
++	mdf_pfn_t pfn;
+ 	unsigned long long phys_start, phys_end;
+ 	mdf_pfn_t pfn_start, pfn_end;
+ 	mdf_pfn_t pfn_start_roundup, pfn_end_round;
+@@ -4465,7 +4465,6 @@ create_1st_bitmap_cyclic(struct cycle *cycle)
+ 	 * If page is on memory hole, set bit on the 1st-bitmap.
+ 	 * (note that this is not done in cyclic mode)
+ 	 */
+-	pfn_bitmap1 = 0;
+ 	for (i = 0; get_pt_load(i, &phys_start, &phys_end, NULL, NULL); i++) {
+ 		pfn_start = MAX(paddr_to_pfn(phys_start), cycle->start_pfn);
+ 		pfn_end   = MIN(paddr_to_pfn(phys_end), cycle->end_pfn);
+@@ -4478,8 +4477,7 @@ create_1st_bitmap_cyclic(struct cycle *cycle)
+ 		pfn_end_round = MAX(round(pfn_end, BITPERBYTE), pfn_start);
+ 
+ 		for (pfn = pfn_start; pfn < pfn_start_roundup; pfn++) {
+-			if (set_bit_on_1st_bitmap(pfn, cycle))
+-				pfn_bitmap1++;
++			set_bit_on_1st_bitmap(pfn, cycle);
+ 		}
+ 
+ 		pfn_start_byte = (pfn_start_roundup - cycle->start_pfn) >> 3;
+@@ -4489,18 +4487,14 @@ create_1st_bitmap_cyclic(struct cycle *cycle)
+ 			memset(info->partial_bitmap1 + pfn_start_byte,
+ 			       0xff,
+ 			       pfn_end_byte - pfn_start_byte);
+-
+-			pfn_bitmap1 += (pfn_end_byte - pfn_start_byte) * BITPERBYTE;
+ 		}
+ 
+ 		if (pfn_end_round >= pfn_start) {
+ 			for (pfn = pfn_end_round; pfn < pfn_end; pfn++) {
+-				if (set_bit_on_1st_bitmap(pfn, cycle))
+-					pfn_bitmap1++;
++				set_bit_on_1st_bitmap(pfn, cycle);
+ 			}
+ 		}
+ 	}
+-	pfn_memhole -= pfn_bitmap1;
+ 
+ 	return TRUE;
+ }
+@@ -4589,9 +4583,11 @@ initialize_2nd_bitmap_cyclic(struct cycle *cycle)
+ 					pfn_end);
+ 		pfn_end_round = MAX(round(pfn_end, BITPERBYTE), pfn_start);
+ 
+-		for (pfn = pfn_start; pfn < pfn_start_roundup; ++pfn)
++		for (pfn = pfn_start; pfn < pfn_start_roundup; ++pfn) {
+ 			if (!set_bit_on_2nd_bitmap_for_kernel(pfn, cycle))
+ 				return FALSE;
++			pfn_memhole--;
++		}
+ 
+ 		pfn_start_byte = (pfn_start_roundup - cycle->start_pfn) >> 3;
+ 		pfn_end_byte = (pfn_end_round - cycle->start_pfn) >> 3;
+@@ -4600,12 +4596,14 @@ initialize_2nd_bitmap_cyclic(struct cycle *cycle)
+ 			memset(info->partial_bitmap2 + pfn_start_byte,
+ 			       0xff,
+ 			       pfn_end_byte - pfn_start_byte);
++			pfn_memhole -= (pfn_end_byte - pfn_start_byte) << 3;
+ 		}
+ 
+ 		if (pfn_end_round >= pfn_start) {
+ 			for (pfn = pfn_end_round; pfn < pfn_end; ++pfn) {
+ 				if (!set_bit_on_2nd_bitmap_for_kernel(pfn, cycle))
+ 					return FALSE;
++				pfn_memhole--;
+ 			}
+ 		}
+ 	}
+-- 
+1.8.5.3
+
diff --git a/kexec-tools.spec b/kexec-tools.spec
index cb3426d..114df4c 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -79,6 +79,7 @@ Patch602: kexec-tools-2.0.4-makedumpfile-Fix-Makefile-for-eppic_makedumpfile.so-
 Patch603: kexec-tools-2.0.4-makedumpfile-Introduce-the-mdf_pfn_t-type.patch
 Patch604: kexec-tools-2.0.4-makedumpfile-Fix-free-bitmap_buffer_cyclic-error.patch
 Patch605: kexec-tools-2.0.4-makedumpfile-Remove-the-1st-bitmap-buffer-from-the-ELF-.patch
+Patch606: kexec-tools-2.0.4-makedumpfile-Move-counting-pfn_memhole-for-cyclic-mode.patch
 
 %description
 kexec-tools provides /sbin/kexec binary that facilitates a new
@@ -119,6 +120,7 @@ tar -z -x -v -f %{SOURCE23}
 %patch603 -p1
 %patch604 -p1
 %patch605 -p1
+%patch606 -p1
 
 tar -z -x -v -f %{SOURCE13}
 


More information about the scm-commits mailing list