Commit ef281410 authored by Wang Yuanheng's avatar Wang Yuanheng Committed by guzitao
Browse files

sw64: redesign run mode setup method

Sunway inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IB73UR



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

For C4, run mode is determined by the lower two bits of
sunway_boot_magic passed in by firmware.

Signed-off-by: default avatarWang Yuanheng <wangyuanheng@wxiat.com>
Reviewed-by: default avatarHe Sheng <hesheng@wxiat.com>
Signed-off-by: default avatarGu Zitao <guzitao@wxiat.com>
parent b985c99d
Loading
Loading
Loading
Loading
+25 −1
Original line number Diff line number Diff line
@@ -701,9 +701,10 @@ static void __init setup_cpu_info(void)
	}
}

#ifdef CONFIG_SUBARCH_C3B
static void __init setup_run_mode(void)
{
	if (rvpcr() >> VPCR_SHIFT) {
	if (*(unsigned long *)MMSIZE) {
		static_branch_disable(&run_mode_host_key);
		if (*(unsigned long *)MM_SIZE & EMUL_FLAG) {
			pr_info("run mode: emul\n");
@@ -722,6 +723,29 @@ static void __init setup_run_mode(void)
		static_branch_disable(&run_mode_emul_key);
	}
}
#elif CONFIG_SUBARCH_C4
static void __init setup_run_mode(void)
{
	if (rvpcr() >> VPCR_SHIFT) {
		pr_info("run mode: guest\n");
		static_branch_disable(&run_mode_host_key);
		static_branch_disable(&run_mode_emul_key);
		static_branch_enable(&run_mode_guest_key);
	} else if (sunway_boot_magic == 0xA2024) {
		pr_info("run mode: emul\n");
		static_branch_disable(&run_mode_host_key);
		static_branch_disable(&run_mode_guest_key);
		static_branch_enable(&run_mode_emul_key);
		sunway_boot_magic = 0xDEED2024;
	} else {
		pr_info("run mode: host\n");
		static_branch_disable(&run_mode_guest_key);
		static_branch_disable(&run_mode_emul_key);
		static_branch_enable(&run_mode_host_key);
	}

}
#endif

static void __init setup_socket_info(void)
{