Move counting pfn_memhole for cyclic mode.

This is a backport of the following upstream commit.

commit 2648a8f7caa63e3ec82fd4bce471cec0a895b704
Author: Atsushi Kumagai <kumagai-atsushi@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@mxc.nes.nec.co.jp>

Signed-off-by: Baoquan He <bhe@redhat.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
This commit is contained in:
Baoquan He 2014-07-15 15:50:24 +08:00 committed by WANG Chao
parent 0bb00b495b
commit 23d1c25fd5
2 changed files with 99 additions and 0 deletions

View File

@ -0,0 +1,97 @@
From 2648a8f7caa63e3ec82fd4bce471cec0a895b704 Mon Sep 17 00:00:00 2001
From: Atsushi Kumagai <kumagai-atsushi@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@mxc.nes.nec.co.jp>
Signed-off-by: Baoquan He <bhe@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

View File

@ -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}