From: Cong Wang This commit introduces: * Configuration infrastructure (kernel/multikernel/Kconfig) that adds CONFIG_MULTIKERNEL option depending on KEXEC_CORE, it will provide kernfs interface for multikernel instance management, device tree based resource management, physical memory pool allocation, and kexec integration. * Core initialization module (kernel/multikernel/core.c) that provides basic subsystem initialization using subsys_initcall() to ensure multikernel support is initialized after core kernel subsystems. This foundational commit establishes the basic framework that subsequent patches will build upon to implement the full multikernel functionality. Signed-off-by: Cong Wang --- kernel/Kconfig.kexec | 2 ++ kernel/Makefile | 1 + kernel/multikernel/Kconfig | 20 ++++++++++++++++++++ kernel/multikernel/Makefile | 6 ++++++ kernel/multikernel/core.c | 17 +++++++++++++++++ 5 files changed, 46 insertions(+) create mode 100644 kernel/multikernel/Kconfig create mode 100644 kernel/multikernel/Makefile create mode 100644 kernel/multikernel/core.c diff --git a/kernel/Kconfig.kexec b/kernel/Kconfig.kexec index 422270d64820..e0fbd7e9af43 100644 --- a/kernel/Kconfig.kexec +++ b/kernel/Kconfig.kexec @@ -194,4 +194,6 @@ config CRASH_MAX_MEMORY_RANGES the computation behind the value provided through the /sys/kernel/crash_elfcorehdr_size attribute. +source "kernel/multikernel/Kconfig" + endmenu diff --git a/kernel/Makefile b/kernel/Makefile index df3dd8291bb6..017ed567f86a 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -56,6 +56,7 @@ obj-y += dma/ obj-y += entry/ obj-y += unwind/ obj-$(CONFIG_MODULES) += module/ +obj-$(CONFIG_MULTIKERNEL) += multikernel/ obj-$(CONFIG_KCMP) += kcmp.o obj-$(CONFIG_FREEZER) += freezer.o diff --git a/kernel/multikernel/Kconfig b/kernel/multikernel/Kconfig new file mode 100644 index 000000000000..0e61fd2e505a --- /dev/null +++ b/kernel/multikernel/Kconfig @@ -0,0 +1,20 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# Multikernel configuration +# + +config MULTIKERNEL + bool "Multikernel support" + depends on KEXEC_CORE + help + Enable multikernel support, which allows running multiple kernel + instances simultaneously with resource isolation and inter-kernel + communication capabilities. + + This feature provides: + - Sysfs interface for multikernel instance management + - Device tree based resource specification + - Memory pool management for kernel instances + - Integration with kexec for kernel loading + + If unsure, say N. diff --git a/kernel/multikernel/Makefile b/kernel/multikernel/Makefile new file mode 100644 index 000000000000..950bace927a0 --- /dev/null +++ b/kernel/multikernel/Makefile @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0-only +# +# Makefile for multikernel support +# + +obj-y += core.o diff --git a/kernel/multikernel/core.c b/kernel/multikernel/core.c new file mode 100644 index 000000000000..218424d59cc3 --- /dev/null +++ b/kernel/multikernel/core.c @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (C) 2025 Multikernel Technologies, Inc. All rights reserved + */ +#include +#include +#include +#include + +static int __init multikernel_init(void) +{ + pr_info("Multikernel support initialized\n"); + return 0; +} + +/* Initialize multikernel after core kernel subsystems are ready */ +subsys_initcall(multikernel_init); -- 2.34.1