From: Itsuro O. <od...@us...> - 2006-01-05 23:26:11
|
Update of /cvsroot/mkdump/mkexecpatch/2.0/debian/2.6.8/arch/x86_64/kernel In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30627/arch/x86_64/kernel Modified Files: minik_dump.c Removed Files: setup.c Log Message: for mkdump 2.0 update 1 Index: minik_dump.c =================================================================== RCS file: /cvsroot/mkdump/mkexecpatch/2.0/debian/2.6.8/arch/x86_64/kernel/minik_dump.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** minik_dump.c 9 Dec 2005 12:39:31 -0000 1.3 --- minik_dump.c 5 Jan 2006 23:26:03 -0000 1.4 *************** *** 53,60 **** #define MODULE_PARAM_PREFIX "" - struct crashmem *crashmem_dma, *crashmem_main; ! EXPORT_SYMBOL(crashmem_dma); ! EXPORT_SYMBOL(crashmem_main); static void __init crashmem_free(struct crashmem *crashmem) --- 53,63 ---- #define MODULE_PARAM_PREFIX "" struct crashmem *crashmem_dma, *crashmem_main; ! ! struct crashmem *crashmem_get(int isdma) ! { ! return isdma ? crashmem_dma : crashmem_main; ! } ! EXPORT_SYMBOL(crashmem_get); static void __init crashmem_free(struct crashmem *crashmem) *************** *** 108,112 **** crashmem->base_pa = __pa(base_va); crashmem->size_bytes = val_ul; - crashmem->pages_ro = 0; *crashmem_pointer = crashmem; printk("mkexec: Allocated 0x%lx of %s memory @0x%lx\n", --- 111,114 ---- *************** *** 119,225 **** module_param_call(crashmain, crashmem_set, NULL, &crashmem_main, 0); - - /* - * Initialize 'mkexecpatch_mem_seg'. - */ - - struct mem_seg mkexecpatch_mem_seg; - - static int seg_list_compar(const struct mem_seg_list *a, const struct mem_seg_list *b) - { - return (b->seg_start_pfn < a->seg_start_pfn) - - (b->seg_start_pfn > a->seg_start_pfn); - } - - static void mem_seg_merge(struct mem_seg *mem_seg) - { - struct mem_seg_list *mem_seg_list; - - sort(mem_seg->seg_list, mem_seg->seg_num, sizeof(*mem_seg->seg_list), - (int (*)(const void *, const void *))seg_list_compar, NULL); - for (mem_seg_list = mem_seg->seg_list; - mem_seg_list < mem_seg->seg_list + mem_seg->seg_num - 1; - mem_seg_list++) { - if (mem_seg_list[0].seg_start_pfn + mem_seg_list[0].seg_size_pfn - != mem_seg_list[1].seg_start_pfn) - continue; - /* Merge mem_seg_list[1] into mem_seg_list[0]. */ - mem_seg_list[0].seg_size_pfn += mem_seg_list[1].seg_size_pfn; - /* Shift the rest 'from mem_seg_list[2] upwards' downwards. */ - memmove(mem_seg_list + 1, mem_seg_list + 2, - (u8 *)(mem_seg->seg_list + mem_seg->seg_num) - - (u8 *)(mem_seg_list + 2)); - mem_seg_list--; - } - } - - /* Returns: success */ - static int mem_seg_list_pfn_extend_try(struct mem_seg_list *mem_seg_list, unsigned long pfn) - { - if (pfn == mem_seg_list->seg_start_pfn + mem_seg_list->seg_size_pfn) { - mem_seg_list->seg_size_pfn++; - return 1; - } - return 0; - } - - /* Append 'NODE_DATA(nodeid)->bdata' to: mkexecpatch_mem_seg */ - void mkexecpatch_mem_seg_append(int nodeid) - { - struct pglist_data *pglist_data; - struct mem_seg_list *mem_seg_list_cache = NULL; - struct mem_seg *mem_seg; - unsigned long pfn; - struct bootmem_data *bdata; - - pglist_data = NODE_DATA(nodeid); - bdata = pglist_data->bdata; - mem_seg = &mkexecpatch_mem_seg; - - mem_seg->page_size = PAGE_SIZE; - /* Assume initial: mem_seg->seg_num = 0; */ - - for (pfn = bdata->node_boot_start / PAGE_SIZE; - pfn < bdata->node_low_pfn; - pfn++) { - if (test_bit(pfn - (bdata->node_boot_start / PAGE_SIZE), - bdata->node_bootmem_map)) - continue; - - if (mem_seg_list_cache - && mem_seg_list_pfn_extend_try(mem_seg_list_cache, pfn)) - continue; - for (mem_seg_list_cache = mem_seg->seg_list; - mem_seg_list_cache < mem_seg->seg_list + mem_seg->seg_num; - mem_seg_list_cache++) - if (mem_seg_list_pfn_extend_try(mem_seg_list_cache, pfn)) - continue; - mem_seg_list_cache = NULL; /* It became invalid here! */ - if (mem_seg->seg_num >= ARRAY_SIZE(mem_seg->seg_list)) { - printk(KERN_ERR "mkexec: Ignoring memory above pfn 0x%lx" - ", MAX_MEM_SEG exceeded!\n", pfn); - break; - } - /* 'mem_seg_list_cache' caching is just sideeffect here. */ - mem_seg_list_cache = mem_seg->seg_list + mem_seg->seg_num; - mem_seg_list_cache->seg_start_pfn = pfn; - mem_seg_list_cache->seg_size_pfn = 1; - mem_seg->seg_num++; - } - mem_seg_merge(mem_seg); - #if 0 /* 'mem_seg_list' debug dump */ - { - struct mem_seg_list *mem_seg_list; - - for (mem_seg_list = mem_seg->seg_list; - mem_seg_list < mem_seg->seg_list + mem_seg->seg_num; - mem_seg_list++) - printk(KERN_INFO "mem_seg_list: pfn 0x%lx .. pfn 0x%lx (- 1)\n", - (unsigned long)(mem_seg_list->seg_start_pfn), - (unsigned long)(mem_seg_list->seg_start_pfn + mem_seg_list->seg_size_pfn)); - } - #endif - } - /* * Export Symbols for mkexec (x86_64 specific) --- 121,124 ---- *************** *** 238,242 **** EXPORT_SYMBOL(end_pfn); EXPORT_SYMBOL(saved_command_line); - EXPORT_SYMBOL(mkexecpatch_mem_seg); #ifdef CONFIG_SMP --- 137,140 ---- --- setup.c DELETED --- |