Hi.

This patch fixes the problem that the range of pfn is 32bit on
64bit system(ia64, x86_64). This problem was reported by Tokunaga-san.

Thanks
Ken'ichi Ohmichi


diff -puN makedumpfile.org/makedumpfile.c makedumpfile/makedumpfile.c
--- makedumpfile.org/makedumpfile.c     2006-10-26 16:55:16.000000000 +0900
+++ makedumpfile/makedumpfile.c 2006-10-26 16:41:08.000000000 +0900
@@ -91,7 +91,7 @@ vaddr_to_offset_general(struct DumpInfo 
 /*
  * Get the number of the page descriptors from the ELF info.
  */
-unsigned int
+unsigned long
 get_max_mapnr(struct DumpInfo *info)
 {
        int i;
@@ -1437,7 +1437,7 @@ initial(struct DumpInfo *info)
 }
 
 static inline void
-set_bitmap(char *bitmap, unsigned int pfn, int val)
+set_bitmap(char *bitmap, unsigned long pfn, int val)
 {
        int byte, bit;
 
@@ -1457,7 +1457,7 @@ is_on(char *bitmap, int i)
 }
 
 static inline int
-is_dumpable(struct dump_bitmap *bitmap, unsigned int pfn)
+is_dumpable(struct dump_bitmap *bitmap, unsigned long pfn)
 {
        off_t offset;
        if (pfn == 0 || bitmap->no_block != pfn/PFN_BUFBITMAP) {
@@ -1473,7 +1473,7 @@ is_dumpable(struct dump_bitmap *bitmap, 
 }
 
 static inline int
-is_memory_hole(struct dump_bitmap *bitmap, unsigned int pfn)
+is_memory_hole(struct dump_bitmap *bitmap, unsigned long pfn)
 {
        return !is_dumpable(bitmap, pfn);
 }
@@ -1571,8 +1571,9 @@ write_cache_bufsz(struct cache_data *cd)
 int
 create_contig_bitmap(struct DumpInfo *info)
 {
-       unsigned int i, pfn, remain_size, last_pfn, contig_exclude;
+       unsigned int i, remain_size, contig_exclude;
        unsigned int num_load_dumpfile;
+       unsigned long pfn, last_pfn;
        int lastpage_mhole;
        struct cache_data bm2;
        struct dump_bitmap bitmap1, bitmap2;
@@ -2075,8 +2076,8 @@ int
 create_dump_bitmap(struct DumpInfo *info)
 {
        int val, not_found_mem_map;
-       unsigned int i, mm, pfn, remain_size;
-       unsigned long addr_mem_map, paddr;
+       unsigned int i, mm, remain_size;
+       unsigned long pfn, addr_mem_map, paddr;
        unsigned char *page_cache = NULL, *buf = NULL, *pcache;
        unsigned int _count;
        unsigned long flags, mapping;
@@ -2304,7 +2305,7 @@ write_elf_header(struct DumpInfo *info)
 {
        int i, lastpage_dumpable;
        size_t size_hdr_memory, size_Ehdr, size_Phdr, size_note;
-       unsigned int pfn, pfn_start, pfn_end, num_file, num_mem;
+       unsigned long pfn, pfn_start, pfn_end, num_file, num_mem;
        loff_t offset_seg, offset_note_memory, offset_note_dumpfile;
        unsigned long long  vaddr_seg, paddr_seg;
        unsigned char *header_memory = NULL;
@@ -2650,7 +2651,7 @@ write_dump_header(struct DumpInfo *info)
 }
 
 void
-print_progress(int current, int end)
+print_progress(unsigned long current, unsigned long end)
 {
        int progress;
        time_t tm;
@@ -2672,7 +2673,7 @@ print_progress(int current, int end)
 int
 write_pages(struct DumpInfo *info)
 {
-       unsigned int pfn, num_dump, per = info->max_mapnr/100;
+       unsigned long pfn, num_dump, per = info->max_mapnr/100;
        unsigned int flag_change_bitmap = 0;
        unsigned long size_out;
        struct page_desc pd;
diff -puN makedumpfile.org/makedumpfile.h makedumpfile/makedumpfile.h
--- makedumpfile.org/makedumpfile.h     2006-10-26 16:55:16.000000000 +0900
+++ makedumpfile/makedumpfile.h 2006-10-26 16:40:28.000000000 +0900
@@ -421,7 +421,7 @@ struct DumpInfo {
        int             flag_exclude_free;   /* flag of excluding free page */
        int             flag_show_version;   /* flag of showing version */
        size_t          page_size;           /* size of page */
-       unsigned int    max_mapnr;           /* number of page descriptor */
+       unsigned long   max_mapnr;           /* number of page descriptor */
        unsigned long   section_size_bits;
        unsigned long   sections_per_root;
        unsigned long   phys_base;
_
_______________________________________________
fastboot mailing list
[email protected]
https://lists.osdl.org/mailman/listinfo/fastboot

Reply via email to