[PATCH v2] makedumpfile: Introduce the mdf_pfn_t type

Petr Tesarik ptesarik at suse.cz
Thu Apr 17 01:38:06 PDT 2014


On Thu, 17 Apr 2014 04:54:37 +0000
Atsushi Kumagai <kumagai-atsushi at mxc.nes.nec.co.jp> wrote:

> Hello Petr,
> 
> Could you repost this later for v1.5.7?
> In v1.5.6, is_on() will also use "unsigned long long" for pfn.

I guess it's the only option, anyway. ;-)

Yes, I agree, this is not an urgent patch, and since hugepage support
will apparently have to wait for v1.5.7, too, I can wait and send my
patches after v1.5.6 is out.

Petr T

> Thanks
> Atsushi Kumagai
> 
> >Replace unsigned long long with mdf_pfn_t where:
> >
> >  a. the variable denotes a PFN
> >  b. the variable is a number of pages
> >
> >The number of pages is converted to a mdf_pfn_t, because it is a result
> >of subtracting two PFNs or incremented in a loop over a range of PFNs,
> >so it can get as large as a PFN.
> >
> >Note: The mdf_ (i.e. makedumpfile) prefix is used to prevent possible
> >conflicts with other software that defines a pfn_t type.
> >
> >Signed-off-by: Petr Tesarik <ptesarik at suse.cz>
> >---
> > makedumpfile.c | 152 ++++++++++++++++++++++++++++++---------------------------
> > makedumpfile.h |  46 ++++++++---------
> > sadump_info.c  |  15 +++---
> > sadump_info.h  |   4 +-
> > 4 files changed, 114 insertions(+), 103 deletions(-)
> >
> >diff --git a/makedumpfile.c b/makedumpfile.c
> >index 75092a8..5609430 100644
> >--- a/makedumpfile.c
> >+++ b/makedumpfile.c
> >@@ -37,7 +37,7 @@ struct DumpInfo		*info = NULL;
> >
> > char filename_stdout[] = FILENAME_STDOUT;
> >
> >-static void first_cycle(unsigned long long start, unsigned long long max, struct cycle *cycle)
> >+static void first_cycle(mdf_pfn_t start, mdf_pfn_t max, struct cycle *cycle)
> > {
> > 	cycle->start_pfn = round(start, info->pfn_cyclic);
> > 	cycle->end_pfn = cycle->start_pfn + info->pfn_cyclic;
> >@@ -46,7 +46,7 @@ static void first_cycle(unsigned long long start, unsigned long long max, struct
> > 		cycle->end_pfn = max;
> > }
> >
> >-static void update_cycle(unsigned long long max, struct cycle *cycle)
> >+static void update_cycle(mdf_pfn_t max, struct cycle *cycle)
> > {
> > 	cycle->start_pfn= cycle->end_pfn;
> > 	cycle->end_pfn=  cycle->start_pfn + info->pfn_cyclic;
> >@@ -55,7 +55,7 @@ static void update_cycle(unsigned long long max, struct cycle *cycle)
> > 		cycle->end_pfn = max;
> > }
> >
> >-static int end_cycle(unsigned long long max, struct cycle *cycle)
> >+static int end_cycle(mdf_pfn_t max, struct cycle *cycle)
> > {
> > 	return (cycle->start_pfn >=  max)?TRUE:FALSE;
> > }
> >@@ -67,15 +67,15 @@ static int end_cycle(unsigned long long max, struct cycle *cycle)
> > /*
> >  * The numbers of the excluded pages
> >  */
> >-unsigned long long pfn_zero;
> >-unsigned long long pfn_memhole;
> >-unsigned long long pfn_cache;
> >-unsigned long long pfn_cache_private;
> >-unsigned long long pfn_user;
> >-unsigned long long pfn_free;
> >-unsigned long long pfn_hwpoison;
> >+mdf_pfn_t pfn_zero;
> >+mdf_pfn_t pfn_memhole;
> >+mdf_pfn_t pfn_cache;
> >+mdf_pfn_t pfn_cache_private;
> >+mdf_pfn_t pfn_user;
> >+mdf_pfn_t pfn_free;
> >+mdf_pfn_t pfn_hwpoison;
> >
> >-unsigned long long num_dumped;
> >+mdf_pfn_t num_dumped;
> >
> > int retcd = FAILED;	/* return code */
> >
> >@@ -122,7 +122,9 @@ unsigned long long
> > ptom_xen(unsigned long long paddr)
> > {
> > 	unsigned long mfn;
> >-	unsigned long long maddr, pfn, mfn_idx, frame_idx;
> >+	unsigned long long maddr;
> >+	mdf_pfn_t pfn;
> >+	unsigned long long mfn_idx, frame_idx;
> >
> > 	pfn = paddr_to_pfn(paddr);
> > 	mfn_idx   = pfn / MFNS_PER_FRAME;
> >@@ -226,12 +228,13 @@ is_in_same_page(unsigned long vaddr1, unsigned long vaddr2)
> > }
> >
> > #define BITMAP_SECT_LEN 4096
> >-static inline int is_dumpable(struct dump_bitmap *, unsigned long long);
> >-static inline int is_dumpable_cyclic(char *bitmap, unsigned long long, struct cycle *cycle);
> >+static inline int is_dumpable(struct dump_bitmap *, mdf_pfn_t);
> >+static inline int is_dumpable_cyclic(char *bitmap, mdf_pfn_t, struct cycle *cycle);
> > unsigned long
> >-pfn_to_pos(unsigned long long pfn)
> >+pfn_to_pos(mdf_pfn_t pfn)
> > {
> >-	unsigned long desc_pos, i;
> >+	unsigned long desc_pos;
> >+	mdf_pfn_t i;
> >
> > 	desc_pos = info->valid_pages[pfn / BITMAP_SECT_LEN];
> > 	for (i = round(pfn, BITMAP_SECT_LEN); i < pfn; i++)
> >@@ -246,7 +249,7 @@ read_page_desc(unsigned long long paddr, page_desc_t *pd)
> > {
> > 	struct disk_dump_header *dh;
> > 	unsigned long desc_pos;
> >-	unsigned long long pfn;
> >+	mdf_pfn_t pfn;
> > 	off_t offset;
> >
> > 	/*
> >@@ -2375,8 +2378,8 @@ pgdat4:
> > }
> >
> > void
> >-dump_mem_map(unsigned long long pfn_start,
> >-    unsigned long long pfn_end, unsigned long mem_map, int num_mm)
> >+dump_mem_map(mdf_pfn_t pfn_start, mdf_pfn_t pfn_end,
> >+    unsigned long mem_map, int num_mm)
> > {
> > 	struct mem_map_data *mmd;
> >
> >@@ -2802,7 +2805,7 @@ int
> > get_mm_sparsemem(void)
> > {
> > 	unsigned int section_nr, mem_section_size, num_section;
> >-	unsigned long long pfn_start, pfn_end;
> >+	mdf_pfn_t pfn_start, pfn_end;
> > 	unsigned long section, mem_map;
> > 	unsigned long *mem_sec = NULL;
> >
> >@@ -2886,7 +2889,7 @@ get_mem_map_without_mm(void)
> > int
> > get_mem_map(void)
> > {
> >-	unsigned long long max_pfn = 0;
> >+	mdf_pfn_t max_pfn = 0;
> > 	unsigned int i;
> > 	int ret;
> >
> >@@ -2944,7 +2947,7 @@ initialize_bitmap_memory(void)
> > 	struct dump_bitmap *bmp;
> > 	off_t bitmap_offset;
> > 	off_t bitmap_len, max_sect_len;
> >-	unsigned long pfn;
> >+	mdf_pfn_t pfn;
> > 	int i, j;
> > 	long block_size;
> >
> >@@ -3309,8 +3312,7 @@ initialize_2nd_bitmap(struct dump_bitmap *bitmap)
> > }
> >
> > int
> >-set_bitmap(struct dump_bitmap *bitmap, unsigned long long pfn,
> >-    int val)
> >+set_bitmap(struct dump_bitmap *bitmap, mdf_pfn_t pfn, int val)
> > {
> > 	int byte, bit;
> > 	off_t old_offset, new_offset;
> >@@ -3358,7 +3360,7 @@ set_bitmap(struct dump_bitmap *bitmap, unsigned long long pfn,
> > }
> >
> > int
> >-set_bitmap_cyclic(char *bitmap, unsigned long long pfn, int val, struct cycle *cycle)
> >+set_bitmap_cyclic(char *bitmap, mdf_pfn_t pfn, int val, struct cycle *cycle)
> > {
> > 	int byte, bit;
> >
> >@@ -3418,7 +3420,7 @@ sync_2nd_bitmap(void)
> > }
> >
> > int
> >-set_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle)
> >+set_bit_on_1st_bitmap(mdf_pfn_t pfn, struct cycle *cycle)
> > {
> > 	if (info->flag_cyclic) {
> > 		return set_bitmap_cyclic(info->partial_bitmap1, pfn, 1, cycle);
> >@@ -3428,7 +3430,7 @@ set_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle)
> > }
> >
> > int
> >-clear_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle)
> >+clear_bit_on_1st_bitmap(mdf_pfn_t pfn, struct cycle *cycle)
> > {
> > 	if (info->flag_cyclic) {
> > 		return set_bitmap_cyclic(info->partial_bitmap1, pfn, 0, cycle);
> >@@ -3438,7 +3440,7 @@ clear_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle)
> > }
> >
> > int
> >-clear_bit_on_2nd_bitmap(unsigned long long pfn, struct cycle *cycle)
> >+clear_bit_on_2nd_bitmap(mdf_pfn_t pfn, struct cycle *cycle)
> > {
> > 	if (info->flag_cyclic) {
> > 		return set_bitmap_cyclic(info->partial_bitmap2, pfn, 0, cycle);
> >@@ -3448,7 +3450,7 @@ clear_bit_on_2nd_bitmap(unsigned long long pfn, struct cycle *cycle)
> > }
> >
> > int
> >-clear_bit_on_2nd_bitmap_for_kernel(unsigned long long pfn, struct cycle *cycle)
> >+clear_bit_on_2nd_bitmap_for_kernel(mdf_pfn_t pfn, struct cycle *cycle)
> > {
> > 	unsigned long long maddr;
> >
> >@@ -3465,7 +3467,7 @@ clear_bit_on_2nd_bitmap_for_kernel(unsigned long long pfn, struct cycle *cycle)
> > }
> >
> > int
> >-set_bit_on_2nd_bitmap(unsigned long long pfn, struct cycle *cycle)
> >+set_bit_on_2nd_bitmap(mdf_pfn_t pfn, struct cycle *cycle)
> > {
> > 	if (info->flag_cyclic) {
> > 		return set_bitmap_cyclic(info->partial_bitmap2, pfn, 1, cycle);
> >@@ -3475,7 +3477,7 @@ set_bit_on_2nd_bitmap(unsigned long long pfn, struct cycle *cycle)
> > }
> >
> > int
> >-set_bit_on_2nd_bitmap_for_kernel(unsigned long long pfn, struct cycle *cycle)
> >+set_bit_on_2nd_bitmap_for_kernel(mdf_pfn_t pfn, struct cycle *cycle)
> > {
> > 	unsigned long long maddr;
> >
> >@@ -3786,11 +3788,11 @@ rearrange_dumpdata(void)
> > 	return TRUE;
> > }
> >
> >-unsigned long long
> >+mdf_pfn_t
> > page_to_pfn(unsigned long page)
> > {
> > 	unsigned int num;
> >-	unsigned long long pfn = ULONGLONG_MAX;
> >+	mdf_pfn_t pfn = ULONGLONG_MAX;
> > 	unsigned long long index = 0;
> > 	struct mem_map_data *mmd;
> >
> >@@ -3820,7 +3822,7 @@ reset_bitmap_of_free_pages(unsigned long node_zones, struct cycle *cycle)
> > 	int order, i, migrate_type, migrate_types;
> > 	unsigned long curr, previous, head, curr_page, curr_prev;
> > 	unsigned long addr_free_pages, free_pages = 0, found_free_pages = 0;
> >-	unsigned long long pfn, start_pfn;
> >+	mdf_pfn_t pfn, start_pfn;
> >
> > 	/*
> > 	 * On linux-2.6.24 or later, free_list is divided into the array.
> >@@ -4423,7 +4425,7 @@ create_1st_bitmap(void)
> > 	int i;
> > 	unsigned int num_pt_loads = get_num_pt_loads();
> >  	char buf[info->page_size];
> >-	unsigned long long pfn, pfn_start, pfn_end, pfn_bitmap1;
> >+	mdf_pfn_t pfn, pfn_start, pfn_end, pfn_bitmap1;
> > 	unsigned long long phys_start, phys_end;
> > 	struct timeval tv_start;
> > 	off_t offset_page;
> >@@ -4495,10 +4497,10 @@ int
> > create_1st_bitmap_cyclic(struct cycle *cycle)
> > {
> > 	int i;
> >-	unsigned long long pfn, pfn_bitmap1;
> >+	mdf_pfn_t pfn, pfn_bitmap1;
> > 	unsigned long long phys_start, phys_end;
> >-	unsigned long long pfn_start, pfn_end;
> >-	unsigned long long pfn_start_roundup, pfn_end_round;
> >+	mdf_pfn_t pfn_start, pfn_end;
> >+	mdf_pfn_t pfn_start_roundup, pfn_end_round;
> > 	unsigned long pfn_start_byte, pfn_end_byte;
> >
> > 	/*
> >@@ -4556,7 +4558,8 @@ create_1st_bitmap_cyclic(struct cycle *cycle)
> > int
> > exclude_zero_pages(void)
> > {
> >-	unsigned long long pfn, paddr;
> >+	mdf_pfn_t pfn;
> >+	unsigned long long paddr;
> > 	struct dump_bitmap bitmap2;
> > 	struct timeval tv_start;
> > 	unsigned char buf[info->page_size];
> >@@ -4608,10 +4611,10 @@ static int
> > initialize_2nd_bitmap_cyclic(struct cycle *cycle)
> > {
> > 	int i;
> >-	unsigned long long pfn;
> >+	mdf_pfn_t pfn;
> > 	unsigned long long phys_start, phys_end;
> >-	unsigned long long pfn_start, pfn_end;
> >-	unsigned long long pfn_start_roundup, pfn_end_round;
> >+	mdf_pfn_t pfn_start, pfn_end;
> >+	mdf_pfn_t pfn_start_roundup, pfn_end_round;
> > 	unsigned long pfn_start_byte, pfn_end_byte;
> >
> > 	/*
> >@@ -4659,10 +4662,12 @@ initialize_2nd_bitmap_cyclic(struct cycle *cycle)
> >
> > int
> > __exclude_unnecessary_pages(unsigned long mem_map,
> >-    unsigned long long pfn_start, unsigned long long pfn_end, struct cycle *cycle)
> >+    mdf_pfn_t pfn_start, mdf_pfn_t pfn_end, struct cycle *cycle)
> > {
> >-	unsigned long long pfn, pfn_mm, maddr;
> >-	unsigned long long pfn_read_start, pfn_read_end, index_pg;
> >+	mdf_pfn_t pfn;
> >+	unsigned long index_pg, pfn_mm;
> >+	unsigned long long maddr;
> >+	mdf_pfn_t pfn_read_start, pfn_read_end;
> > 	unsigned char page_cache[SIZE(page) * PGMM_CACHED];
> > 	unsigned char *pcache;
> > 	unsigned int _count, _mapcount = 0;
> >@@ -5162,7 +5167,7 @@ get_loads_dumpfile(void)
> > {
> > 	int i, phnum, num_new_load = 0;
> > 	long page_size = info->page_size;
> >-	unsigned long long pfn, pfn_start, pfn_end, num_excluded;
> >+	mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded;
> > 	unsigned long frac_head, frac_tail;
> > 	Elf64_Phdr load;
> > 	struct dump_bitmap bitmap2;
> >@@ -5612,10 +5617,10 @@ out:
> > 	return ret;
> > }
> >
> >-unsigned long long
> >+mdf_pfn_t
> > get_num_dumpable(void)
> > {
> >-	unsigned long long pfn, num_dumpable;
> >+	mdf_pfn_t pfn, num_dumpable;
> > 	struct dump_bitmap bitmap2;
> >
> > 	initialize_2nd_bitmap(&bitmap2);
> >@@ -5627,10 +5632,10 @@ get_num_dumpable(void)
> > 	return num_dumpable;
> > }
> >
> >-unsigned long long
> >+mdf_pfn_t
> > get_num_dumpable_cyclic(void)
> > {
> >-	unsigned long long pfn, num_dumpable=0;
> >+	mdf_pfn_t pfn, num_dumpable=0;
> > 	struct cycle cycle = {0};
> >
> > 	for_each_cycle(0, info->max_mapnr, &cycle)
> >@@ -5692,8 +5697,9 @@ write_elf_pages(struct cache_data *cd_header, struct cache_data *cd_page)
> > {
> > 	int i, phnum;
> > 	long page_size = info->page_size;
> >-	unsigned long long pfn, pfn_start, pfn_end, paddr, num_excluded;
> >-	unsigned long long num_dumpable, per;
> >+	mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded;
> >+	unsigned long long paddr;
> >+	mdf_pfn_t num_dumpable, per;
> > 	unsigned long long memsz, filesz;
> > 	unsigned long frac_head, frac_tail;
> > 	off_t off_seg_load, off_memory;
> >@@ -5878,7 +5884,7 @@ write_elf_pages(struct cache_data *cd_header, struct cache_data *cd_page)
> > }
> >
> > int
> >-read_pfn(unsigned long long pfn, unsigned char *buf)
> >+read_pfn(mdf_pfn_t pfn, unsigned char *buf)
> > {
> > 	unsigned long long paddr;
> >
> >@@ -5897,7 +5903,7 @@ get_loads_dumpfile_cyclic(void)
> > 	int i, phnum, num_new_load = 0;
> > 	long page_size = info->page_size;
> > 	unsigned char buf[info->page_size];
> >-	unsigned long long pfn, pfn_start, pfn_end, num_excluded;
> >+	mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded;
> > 	unsigned long frac_head, frac_tail;
> > 	Elf64_Phdr load;
> > 	struct cycle cycle = {0};
> >@@ -5969,8 +5975,8 @@ write_elf_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page)
> > 	int i, phnum;
> > 	long page_size = info->page_size;
> > 	unsigned char buf[info->page_size];
> >-	unsigned long long pfn, pfn_start, pfn_end, paddr, num_excluded;
> >-	unsigned long long num_dumpable, per;
> >+	mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded, num_dumpable, per;
> >+	unsigned long long paddr;
> > 	unsigned long long memsz, filesz;
> > 	unsigned long frac_head, frac_tail;
> > 	off_t off_seg_load, off_memory;
> >@@ -6190,8 +6196,8 @@ write_elf_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page)
> > int
> > write_kdump_pages(struct cache_data *cd_header, struct cache_data *cd_page)
> > {
> >- 	unsigned long long pfn, per, num_dumpable;
> >-	unsigned long long start_pfn, end_pfn;
> >+	mdf_pfn_t pfn, per, num_dumpable;
> >+	mdf_pfn_t start_pfn, end_pfn;
> > 	unsigned long size_out;
> > 	struct page_desc pd, pd_zero;
> > 	off_t offset_data = 0;
> >@@ -6397,8 +6403,8 @@ int
> > write_kdump_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page,
> > 			 struct page_desc *pd_zero, off_t *offset_data, struct cycle *cycle)
> > {
> >-	unsigned long long pfn, per;
> >-	unsigned long long start_pfn, end_pfn;
> >+	mdf_pfn_t pfn, per;
> >+	mdf_pfn_t start_pfn, end_pfn;
> > 	unsigned long size_out;
> > 	struct page_desc pd;
> > 	unsigned char buf[info->page_size], *buf_out = NULL;
> >@@ -7504,7 +7510,7 @@ read_vmcoreinfo_xen(void)
> > }
> >
> > int
> >-allocated_in_map(unsigned long long pfn)
> >+allocated_in_map(mdf_pfn_t pfn)
> > {
> > 	static unsigned long long cur_idx = -1;
> > 	static unsigned long cur_word;
> >@@ -7550,8 +7556,8 @@ exclude_xen3_user_domain(void)
> > 	unsigned int num_pt_loads = get_num_pt_loads();
> > 	unsigned long page_info_addr;
> > 	unsigned long long phys_start, phys_end;
> >-	unsigned long long pfn, pfn_end;
> >-	unsigned long long j, size;
> >+	mdf_pfn_t pfn, pfn_end;
> >+	mdf_pfn_t j, size;
> >
> > 	/*
> > 	 * NOTE: the first half of bitmap is not used for Xen extraction
> >@@ -7614,8 +7620,8 @@ exclude_xen4_user_domain(void)
> > 	unsigned int num_pt_loads = get_num_pt_loads();
> > 	unsigned long page_info_addr;
> > 	unsigned long long phys_start, phys_end;
> >-	unsigned long long pfn, pfn_end;
> >-	unsigned long long j, size;
> >+	mdf_pfn_t pfn, pfn_end;
> >+	mdf_pfn_t j, size;
> >
> > 	/*
> > 	 * NOTE: the first half of bitmap is not used for Xen extraction
> >@@ -7840,7 +7846,7 @@ print_vtop(void)
> > void
> > print_report(void)
> > {
> >-	unsigned long long pfn_original, pfn_excluded, shrinking;
> >+	mdf_pfn_t pfn_original, pfn_excluded, shrinking;
> >
> > 	/*
> > 	 * /proc/vmcore doesn't contain the memory hole area.
> >@@ -7945,9 +7951,9 @@ int
> > setup_splitting(void)
> > {
> > 	int i;
> >-	unsigned long long j, pfn_per_dumpfile;
> >-	unsigned long long start_pfn, end_pfn;
> >-	unsigned long long num_dumpable = get_num_dumpable();
> >+	mdf_pfn_t j, pfn_per_dumpfile;
> >+	mdf_pfn_t start_pfn, end_pfn;
> >+	mdf_pfn_t num_dumpable = get_num_dumpable();
> > 	struct dump_bitmap bitmap2;
> >
> > 	if (info->num_dumpfile <= 1)
> >@@ -8274,7 +8280,7 @@ void
> > sort_splitting_info(void)
> > {
> > 	int i, j;
> >-	unsigned long long start_pfn, end_pfn;
> >+	mdf_pfn_t start_pfn, end_pfn;
> > 	char *name_dumpfile;
> >
> > 	/*
> >@@ -8310,7 +8316,7 @@ int
> > check_splitting_info(void)
> > {
> > 	int i;
> >-	unsigned long long end_pfn;
> >+	mdf_pfn_t end_pfn;
> >
> > 	/*
> > 	 * Check whether there are not lack of /proc/vmcore.
> >@@ -8537,8 +8543,8 @@ reassemble_kdump_pages(void)
> > 	int i, fd = 0, ret = FALSE;
> > 	off_t offset_first_ph, offset_ph_org, offset_eraseinfo;
> > 	off_t offset_data_new, offset_zero_page = 0;
> >-	unsigned long long pfn, start_pfn, end_pfn;
> >-	unsigned long long num_dumpable;
> >+	mdf_pfn_t pfn, start_pfn, end_pfn;
> >+	mdf_pfn_t num_dumpable;
> > 	unsigned long size_eraseinfo;
> > 	struct dump_bitmap bitmap2;
> > 	struct disk_dump_header dh;
> >diff --git a/makedumpfile.h b/makedumpfile.h
> >index 951ed1b..a6a679b 100644
> >--- a/makedumpfile.h
> >+++ b/makedumpfile.h
> >@@ -767,13 +767,15 @@ unsigned long long vaddr_to_paddr_ia64(unsigned long vaddr);
> > #define VADDR_REGION(X)		(((unsigned long)(X)) >> REGION_SHIFT)
> > #endif          /* ia64 */
> >
> >+typedef unsigned long long mdf_pfn_t;
> >+
> > #ifndef ARCH_PFN_OFFSET
> > #define ARCH_PFN_OFFSET		0
> > #endif
> > #define paddr_to_pfn(X) \
> > 	(((unsigned long long)(X) >> PAGESHIFT()) - ARCH_PFN_OFFSET)
> > #define pfn_to_paddr(X) \
> >-	(((unsigned long long)(X) + ARCH_PFN_OFFSET) << PAGESHIFT())
> >+	(((mdf_pfn_t)(X) + ARCH_PFN_OFFSET) << PAGESHIFT())
> >
> > /* Format of Xen crash info ELF note */
> > typedef struct {
> >@@ -813,8 +815,8 @@ typedef struct {
> > } xen_crash_info_v2_t;
> >
> > struct mem_map_data {
> >-	unsigned long long	pfn_start;
> >-	unsigned long long	pfn_end;
> >+	mdf_pfn_t	pfn_start;
> >+	mdf_pfn_t	pfn_end;
> > 	unsigned long	mem_map;
> > };
> >
> >@@ -866,8 +868,8 @@ struct makedumpfile_data_header {
> > struct splitting_info {
> > 	char			*name_dumpfile;
> > 	int 			fd_bitmap;
> >-	unsigned long long	start_pfn;
> >-	unsigned long long	end_pfn;
> >+	mdf_pfn_t		start_pfn;
> >+	mdf_pfn_t		end_pfn;
> > 	off_t			offset_eraseinfo;
> > 	unsigned long		size_eraseinfo;
> > } splitting_info_t;
> >@@ -914,7 +916,7 @@ struct DumpInfo {
> > 	unsigned long	vaddr_for_vtop;      /* virtual address for debugging */
> > 	long		page_size;           /* size of page */
> > 	long		page_shift;
> >-	unsigned long long	max_mapnr;   /* number of page descriptor */
> >+	mdf_pfn_t	max_mapnr;   /* number of page descriptor */
> > 	unsigned long   page_offset;
> > 	unsigned long   section_size_bits;
> > 	unsigned long   max_physmem_bits;
> >@@ -1025,10 +1027,10 @@ struct DumpInfo {
> > 					 *   1 .. xen_crash_info_t
> > 					 *   2 .. xen_crash_info_v2_t */
> >
> >-	unsigned long long	dom0_mapnr;  /* The number of page in domain-0.
> >-					      * Different from max_mapnr.
> >-					      * max_mapnr is the number of page
> >-					      * in system. */
> >+	mdf_pfn_t	dom0_mapnr;	/* The number of page in domain-0.
> >+					 * Different from max_mapnr.
> >+					 * max_mapnr is the number of page
> >+					 * in system. */
> > 	unsigned long xen_phys_start;
> > 	unsigned long xen_heap_start;	/* start mfn of xen heap area */
> > 	unsigned long xen_heap_end;	/* end mfn(+1) of xen heap area */
> >@@ -1048,15 +1050,15 @@ struct DumpInfo {
> > 	/*
> > 	 * for splitting
> > 	 */
> >-	unsigned long long split_start_pfn;
> >-	unsigned long long split_end_pfn;
> >+	mdf_pfn_t split_start_pfn;
> >+	mdf_pfn_t split_end_pfn;
> >
> > 	/*
> > 	 * for cyclic processing
> > 	 */
> > 	char               *partial_bitmap1;
> > 	char               *partial_bitmap2;
> >-	unsigned long long num_dumpable;
> >+	mdf_pfn_t          num_dumpable;
> > 	unsigned long      bufsize_cyclic;
> > 	unsigned long      pfn_cyclic;
> >
> >@@ -1453,7 +1455,7 @@ int readmem(int type_addr, unsigned long long addr, void *bufptr, size_t size);
> > int get_str_osrelease_from_vmlinux(void);
> > int read_vmcoreinfo_xen(void);
> > int exclude_xen_user_domain(void);
> >-unsigned long long get_num_dumpable(void);
> >+mdf_pfn_t get_num_dumpable(void);
> > int __read_disk_dump_header(struct disk_dump_header *dh, char *filename);
> > int read_disk_dump_header(struct disk_dump_header *dh, char *filename);
> > int read_kdump_sub_header(struct kdump_sub_header *kh, char *filename);
> >@@ -1589,8 +1591,8 @@ int get_xen_info_ia64(void);
> > #endif	/* s390x */
> >
> > struct cycle {
> >-	unsigned long long start_pfn;
> >-	unsigned long long end_pfn;
> >+	mdf_pfn_t start_pfn;
> >+	mdf_pfn_t end_pfn;
> > };
> >
> > static inline int
> >@@ -1600,7 +1602,7 @@ is_on(char *bitmap, int i)
> > }
> >
> > static inline int
> >-is_dumpable(struct dump_bitmap *bitmap, unsigned long long pfn)
> >+is_dumpable(struct dump_bitmap *bitmap, mdf_pfn_t pfn)
> > {
> > 	off_t offset;
> > 	if (pfn == 0 || bitmap->no_block != pfn/PFN_BUFBITMAP) {
> >@@ -1616,7 +1618,7 @@ is_dumpable(struct dump_bitmap *bitmap, unsigned long long pfn)
> > }
> >
> > static inline int
> >-is_dumpable_cyclic(char *bitmap, unsigned long long pfn, struct cycle *cycle)
> >+is_dumpable_cyclic(char *bitmap, mdf_pfn_t pfn, struct cycle *cycle)
> > {
> > 	if (pfn < cycle->start_pfn || cycle->end_pfn <= pfn)
> > 		return FALSE;
> >@@ -1625,7 +1627,7 @@ is_dumpable_cyclic(char *bitmap, unsigned long long pfn, struct cycle *cycle)
> > }
> >
> > static inline int
> >-is_cyclic_region(unsigned long long pfn, struct cycle *cycle)
> >+is_cyclic_region(mdf_pfn_t pfn, struct cycle *cycle)
> > {
> > 	if (pfn < cycle->start_pfn || cycle->end_pfn <= pfn)
> > 		return FALSE;
> >@@ -1647,8 +1649,8 @@ is_zero_page(unsigned char *buf, long page_size)
> > }
> >
> > void write_vmcoreinfo_data(void);
> >-int set_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle);
> >-int clear_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle);
> >+int set_bit_on_1st_bitmap(mdf_pfn_t pfn, struct cycle *cycle);
> >+int clear_bit_on_1st_bitmap(mdf_pfn_t pfn, struct cycle *cycle);
> >
> > #ifdef __x86__
> >
> >@@ -1759,7 +1761,7 @@ struct elf_prstatus {
> > /*
> >  * Function Prototype.
> >  */
> >-unsigned long long get_num_dumpable_cyclic(void);
> >+mdf_pfn_t get_num_dumpable_cyclic(void);
> > int get_loads_dumpfile_cyclic(void);
> > int initial_xen(void);
> > unsigned long long get_free_memory_size(void);
> >diff --git a/sadump_info.c b/sadump_info.c
> >index f14ffc9..9434ff7 100644
> >--- a/sadump_info.c
> >+++ b/sadump_info.c
> >@@ -94,7 +94,7 @@ static int read_device_diskset(struct sadump_diskset_info *sdi, void *buf,
> > 			       size_t bytes, ulong *offset);
> > static int read_sadump_header(char *filename);
> > static int read_sadump_header_diskset(int diskid, struct sadump_diskset_info *sdi);
> >-static unsigned long long pfn_to_block(unsigned long long pfn);
> >+static unsigned long long pfn_to_block(mdf_pfn_t pfn);
> > static int lookup_diskset(unsigned long long whole_offset, int *diskid,
> > 			  unsigned long long *disk_offset);
> > static int max_mask_cpu(void);
> >@@ -202,7 +202,8 @@ sadump_copy_1st_bitmap_from_memory(void)
> > 	 * modify bitmap accordingly.
> > 	 */
> > 	if (si->kdump_backed_up) {
> >-		unsigned long long paddr, pfn, backup_src_pfn;
> >+		unsigned long long paddr;
> >+		mdf_pfn_t pfn, backup_src_pfn;
> >
> > 		for (paddr = si->backup_src_start;
> > 		     paddr < si->backup_src_start + si->backup_src_size;
> >@@ -754,7 +755,8 @@ sadump_initialize_bitmap_memory(void)
> > 	struct sadump_header *sh = si->sh_memory;
> > 	struct dump_bitmap *bmp;
> > 	unsigned long dumpable_bitmap_offset;
> >-	unsigned long long section, max_section, pfn;
> >+	unsigned long long section, max_section;
> >+	mdf_pfn_t pfn;
> > 	unsigned long long *block_table;
> >
> > 	dumpable_bitmap_offset =
> >@@ -901,7 +903,7 @@ sadump_set_timestamp(struct timeval *ts)
> > 	return TRUE;
> > }
> >
> >-unsigned long long
> >+mdf_pfn_t
> > sadump_get_max_mapnr(void)
> > {
> > 	return si->sh_memory->max_mapnr;
> >@@ -951,7 +953,8 @@ failed:
> > int
> > readpage_sadump(unsigned long long paddr, void *bufptr)
> > {
> >-	unsigned long long pfn, block, whole_offset, perdisk_offset;
> >+	mdf_pfn_t pfn;
> >+	unsigned long long block, whole_offset, perdisk_offset;
> > 	int fd_memory;
> >
> > 	if (si->kdump_backed_up &&
> >@@ -1117,7 +1120,7 @@ sadump_check_debug_info(void)
> > }
> >
> > static unsigned long long
> >-pfn_to_block(unsigned long long pfn)
> >+pfn_to_block(mdf_pfn_t pfn)
> > {
> > 	unsigned long long block, section, p;
> >
> >diff --git a/sadump_info.h b/sadump_info.h
> >index c0175dd..131687a 100644
> >--- a/sadump_info.h
> >+++ b/sadump_info.h
> >@@ -42,7 +42,7 @@ int sadump_copy_1st_bitmap_from_memory(void);
> > int sadump_initialize_bitmap_memory(void);
> > int sadump_num_online_cpus(void);
> > int sadump_set_timestamp(struct timeval *ts);
> >-unsigned long long sadump_get_max_mapnr(void);
> >+mdf_pfn_t sadump_get_max_mapnr(void);
> > int readpage_sadump(unsigned long long paddr, void *bufptr);
> > int sadump_check_debug_info(void);
> > int sadump_generate_vmcoreinfo_from_vmlinux(size_t *vmcoreinfo_size);
> >@@ -92,7 +92,7 @@ static inline int sadump_set_timestamp(struct timeval *ts)
> > 	return FALSE;
> > }
> >
> >-static inline unsigned long long sadump_get_max_mapnr(void)
> >+static inline mdf_pfn_t sadump_get_max_mapnr(void)
> > {
> > 	return 0;
> > }
> >--
> >1.8.4.5
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec




More information about the kexec mailing list