Commit 11187703 authored by Ritesh Harjani (IBM)'s avatar Ritesh Harjani (IBM) Committed by Liao Chen
Browse files

powerpc/fadump: Refactor and prepare fadump_cma_init for late init

stable inclusion
from stable-v6.6.64
commit 92f7cc84c3dbbfb71a453d5de21e00f1b31a49b0
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBEDPC

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=92f7cc84c3dbbfb71a453d5de21e00f1b31a49b0



--------------------------------

[ Upstream commit adfaec30ffaceecd565e06adae367aa944acc3c9 ]

We anyway don't use any return values from fadump_cma_init(). Since
fadump_reserve_mem() from where fadump_cma_init() gets called today,
already has the required checks.
This patch makes this function return type as void. Let's also handle
extra cases like return if fadump_supported is false or dump_active, so
that in later patches we can call fadump_cma_init() separately from
setup_arch().

Acked-by: default avatarHari Bathini <hbathini@linux.ibm.com>
Reviewed-by: default avatarMadhavan Srinivasan <maddy@linux.ibm.com>
Signed-off-by: default avatarRitesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://patch.msgid.link/a2afc3d6481a87a305e89cfc4a3f3d2a0b8ceab3.1729146153.git.ritesh.list@gmail.com


Stable-dep-of: 05b94cae1c47 ("powerpc/fadump: Move fadump_cma_init to setup_arch() after initmem_init()")
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarZhangPeng <zhangpeng362@huawei.com>
Signed-off-by: default avatarLiao Chen <liaochen4@huawei.com>
parent 0799fce5
Loading
Loading
Loading
Loading
+9 −14
Original line number Diff line number Diff line
@@ -80,27 +80,23 @@ static struct cma *fadump_cma;
 * But for some reason even if it fails we still have the memory reservation
 * with us and we can still continue doing fadump.
 */
static int __init fadump_cma_init(void)
static void __init fadump_cma_init(void)
{
	unsigned long long base, size;
	int rc;

	if (!fw_dump.fadump_enabled)
		return 0;

	if (!fw_dump.fadump_supported || !fw_dump.fadump_enabled ||
			fw_dump.dump_active)
		return;
	/*
	 * Do not use CMA if user has provided fadump=nocma kernel parameter.
	 * Return 1 to continue with fadump old behaviour.
	 */
	if (fw_dump.nocma)
		return 1;
	if (fw_dump.nocma || !fw_dump.boot_memory_size)
		return;

	base = fw_dump.reserve_dump_area_start;
	size = fw_dump.boot_memory_size;

	if (!size)
		return 0;

	rc = cma_init_reserved_mem(base, size, 0, "fadump_cma", &fadump_cma);
	if (rc) {
		pr_err("Failed to init cma area for firmware-assisted dump,%d\n", rc);
@@ -110,7 +106,7 @@ static int __init fadump_cma_init(void)
		 * blocked from production system usage.  Hence return 1,
		 * so that we can continue with fadump.
		 */
		return 1;
		return;
	}

	/*
@@ -127,10 +123,9 @@ static int __init fadump_cma_init(void)
		cma_get_size(fadump_cma),
		(unsigned long)cma_get_base(fadump_cma) >> 20,
		fw_dump.reserve_dump_area_size);
	return 1;
}
#else
static int __init fadump_cma_init(void) { return 1; }
static void __init fadump_cma_init(void) { }
#endif /* CONFIG_CMA */

/* Scan the Firmware Assisted dump configuration details. */
@@ -648,7 +643,7 @@ int __init fadump_reserve_mem(void)
		pr_info("Reserved %lldMB of memory at %#016llx (System RAM: %lldMB)\n",
			(size >> 20), base, (memblock_phys_mem_size() >> 20));

		ret = fadump_cma_init();
		fadump_cma_init();
	}

	return ret;