Unverified Commit 10c2d19f authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!866 arm64: kdump: Avoid reserving low memory repeatedly

parents 9bb3163d e5c9d379
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -440,6 +440,13 @@ static void __init free_reserved_high_mem(void)
	memblock_free(crashk_res_high.start, resource_size(&crashk_res_high));
}

static bool __init within_low_mem(unsigned long long crash_base,
				  unsigned long long crash_size)
{
	return crash_base < CRASH_ADDR_LOW_MAX &&
		CRASH_ADDR_LOW_MAX - crash_base >= crash_size;
}

/*
 * reserve_crashkernel() - reserves memory for crash kernel
 *
@@ -469,6 +476,8 @@ void __init reserve_crashkernel(void)

		if (crash_high_mem_reserved) {
			take_reserved_high_mem(&crash_base, &crash_size);
			if (within_low_mem(crash_base, crash_size))
				goto reserve_ok;
			goto reserve_low;
		}
	}
@@ -490,6 +499,8 @@ void __init reserve_crashkernel(void)
					CRASH_ALIGN);
			if (!crash_base && crash_high_mem_reserved) {
				take_reserved_high_mem(&crash_base, &crash_size);
				if (within_low_mem(crash_base, crash_size))
					goto reserve_ok;
				goto reserve_low;
			}
		}
@@ -539,6 +550,7 @@ void __init reserve_crashkernel(void)
		free_reserved_high_mem();
	}

reserve_ok:
	pr_info("Reserving %ldMB of memory at %ldMB for crashkernel (System RAM: %ldMB)\n",
		(unsigned long)(crash_size >> 20),
		(unsigned long)(crash_base >> 20),