@@ -47,83 +47,6 @@ const struct kexec_file_ops * const kexec_file_loaders[] = {
47
47
NULL
48
48
};
49
49
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
-
127
50
/**
128
51
* __locate_mem_hole_top_down - Looks top down for a large enough memory hole
129
52
* 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,
322
245
}
323
246
324
247
#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
-
438
248
/**
439
249
* check_realloc_usable_mem - Reallocate buffer if it can't accommodate entries
440
250
* @um_info: Usable memory buffer and ranges info.
0 commit comments