@@ -47,83 +47,6 @@ const struct kexec_file_ops * const kexec_file_loaders[] = {
4747 NULL
4848};
4949
50- /**
51- * get_exclude_memory_ranges - Get exclude memory ranges. This list includes
52- * regions like opal/rtas, tce-table, initrd,
53- * kernel, htab which should be avoided while
54- * setting up kexec load segments.
55- * @mem_ranges: Range list to add the memory ranges to.
56- *
57- * Returns 0 on success, negative errno on error.
58- */
59- static int get_exclude_memory_ranges (struct crash_mem * * mem_ranges )
60- {
61- int ret ;
62-
63- ret = add_tce_mem_ranges (mem_ranges );
64- if (ret )
65- goto out ;
66-
67- ret = add_initrd_mem_range (mem_ranges );
68- if (ret )
69- goto out ;
70-
71- ret = add_htab_mem_range (mem_ranges );
72- if (ret )
73- goto out ;
74-
75- ret = add_kernel_mem_range (mem_ranges );
76- if (ret )
77- goto out ;
78-
79- ret = add_rtas_mem_range (mem_ranges );
80- if (ret )
81- goto out ;
82-
83- ret = add_opal_mem_range (mem_ranges );
84- if (ret )
85- goto out ;
86-
87- ret = add_reserved_mem_ranges (mem_ranges );
88- if (ret )
89- goto out ;
90-
91- /* exclude memory ranges should be sorted for easy lookup */
92- sort_memory_ranges (* mem_ranges , true);
93- out :
94- if (ret )
95- pr_err ("Failed to setup exclude memory ranges\n" );
96- return ret ;
97- }
98-
99- /**
100- * get_reserved_memory_ranges - Get reserve memory ranges. This list includes
101- * memory regions that should be added to the
102- * memory reserve map to ensure the region is
103- * protected from any mischief.
104- * @mem_ranges: Range list to add the memory ranges to.
105- *
106- * Returns 0 on success, negative errno on error.
107- */
108- static int get_reserved_memory_ranges (struct crash_mem * * mem_ranges )
109- {
110- int ret ;
111-
112- ret = add_rtas_mem_range (mem_ranges );
113- if (ret )
114- goto out ;
115-
116- ret = add_tce_mem_ranges (mem_ranges );
117- if (ret )
118- goto out ;
119-
120- ret = add_reserved_mem_ranges (mem_ranges );
121- out :
122- if (ret )
123- pr_err ("Failed to setup reserved memory ranges\n" );
124- return ret ;
125- }
126-
12750/**
12851 * __locate_mem_hole_top_down - Looks top down for a large enough memory hole
12952 * in the memory regions between buf_min & buf_max
@@ -322,119 +245,6 @@ static int locate_mem_hole_bottom_up_ppc64(struct kexec_buf *kbuf,
322245}
323246
324247#ifdef CONFIG_CRASH_DUMP
325- /**
326- * get_usable_memory_ranges - Get usable memory ranges. This list includes
327- * regions like crashkernel, opal/rtas & tce-table,
328- * that kdump kernel could use.
329- * @mem_ranges: Range list to add the memory ranges to.
330- *
331- * Returns 0 on success, negative errno on error.
332- */
333- static int get_usable_memory_ranges (struct crash_mem * * mem_ranges )
334- {
335- int ret ;
336-
337- /*
338- * Early boot failure observed on guests when low memory (first memory
339- * block?) is not added to usable memory. So, add [0, crashk_res.end]
340- * instead of [crashk_res.start, crashk_res.end] to workaround it.
341- * Also, crashed kernel's memory must be added to reserve map to
342- * avoid kdump kernel from using it.
343- */
344- ret = add_mem_range (mem_ranges , 0 , crashk_res .end + 1 );
345- if (ret )
346- goto out ;
347-
348- ret = add_rtas_mem_range (mem_ranges );
349- if (ret )
350- goto out ;
351-
352- ret = add_opal_mem_range (mem_ranges );
353- if (ret )
354- goto out ;
355-
356- ret = add_tce_mem_ranges (mem_ranges );
357- out :
358- if (ret )
359- pr_err ("Failed to setup usable memory ranges\n" );
360- return ret ;
361- }
362-
363- /**
364- * get_crash_memory_ranges - Get crash memory ranges. This list includes
365- * first/crashing kernel's memory regions that
366- * would be exported via an elfcore.
367- * @mem_ranges: Range list to add the memory ranges to.
368- *
369- * Returns 0 on success, negative errno on error.
370- */
371- static int get_crash_memory_ranges (struct crash_mem * * mem_ranges )
372- {
373- phys_addr_t base , end ;
374- struct crash_mem * tmem ;
375- u64 i ;
376- int ret ;
377-
378- for_each_mem_range (i , & base , & end ) {
379- u64 size = end - base ;
380-
381- /* Skip backup memory region, which needs a separate entry */
382- if (base == BACKUP_SRC_START ) {
383- if (size > BACKUP_SRC_SIZE ) {
384- base = BACKUP_SRC_END + 1 ;
385- size -= BACKUP_SRC_SIZE ;
386- } else
387- continue ;
388- }
389-
390- ret = add_mem_range (mem_ranges , base , size );
391- if (ret )
392- goto out ;
393-
394- /* Try merging adjacent ranges before reallocation attempt */
395- if ((* mem_ranges )-> nr_ranges == (* mem_ranges )-> max_nr_ranges )
396- sort_memory_ranges (* mem_ranges , true);
397- }
398-
399- /* Reallocate memory ranges if there is no space to split ranges */
400- tmem = * mem_ranges ;
401- if (tmem && (tmem -> nr_ranges == tmem -> max_nr_ranges )) {
402- tmem = realloc_mem_ranges (mem_ranges );
403- if (!tmem )
404- goto out ;
405- }
406-
407- /* Exclude crashkernel region */
408- ret = crash_exclude_mem_range (tmem , crashk_res .start , crashk_res .end );
409- if (ret )
410- goto out ;
411-
412- /*
413- * FIXME: For now, stay in parity with kexec-tools but if RTAS/OPAL
414- * regions are exported to save their context at the time of
415- * crash, they should actually be backed up just like the
416- * first 64K bytes of memory.
417- */
418- ret = add_rtas_mem_range (mem_ranges );
419- if (ret )
420- goto out ;
421-
422- ret = add_opal_mem_range (mem_ranges );
423- if (ret )
424- goto out ;
425-
426- /* create a separate program header for the backup region */
427- ret = add_mem_range (mem_ranges , BACKUP_SRC_START , BACKUP_SRC_SIZE );
428- if (ret )
429- goto out ;
430-
431- sort_memory_ranges (* mem_ranges , false);
432- out :
433- if (ret )
434- pr_err ("Failed to setup crash memory ranges\n" );
435- return ret ;
436- }
437-
438248/**
439249 * check_realloc_usable_mem - Reallocate buffer if it can't accommodate entries
440250 * @um_info: Usable memory buffer and ranges info.
0 commit comments