kernel/0001-modify-openeuler_defconfig-for-rt62.patch

173 lines
5.2 KiB
Diff

From 1a753f6f04e78dcf92670a255eb99360b3dc0337 Mon Sep 17 00:00:00 2001
From: zhangyu <zhangyu4@kylinos.cn>
Date: Tue, 19 Nov 2024 19:02:54 +0800
Subject: [PATCH] rt-config
---
arch/arm64/configs/openeuler_defconfig | 7 ++++---
arch/arm64/kernel/fpsimd.c | 4 ++--
arch/x86/configs/openeuler_defconfig | 8 ++++----
arch/x86/include/asm/preempt.h | 16 +++++++++++++---
include/linux/printk.h | 2 +-
kernel/printk/printk.c | 2 +-
6 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/arch/arm64/configs/openeuler_defconfig b/arch/arm64/configs/openeuler_defconfig
index 4c117f2f5..2d90b4f5e 100644
--- a/arch/arm64/configs/openeuler_defconfig
+++ b/arch/arm64/configs/openeuler_defconfig
@@ -87,6 +87,7 @@ CONFIG_HIGH_RES_TIMERS=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT_RT=y
#
# CPU/Task time and stats accounting
@@ -774,7 +775,7 @@ CONFIG_ACPI_PPTT=y
CONFIG_ACPI_PCC=y
# CONFIG_PMIC_OPREGION is not set
CONFIG_IRQ_BYPASS_MANAGER=y
-CONFIG_VIRTUALIZATION=y
+# CONFIG_VIRTUALIZATION is not set
CONFIG_KVM=y
CONFIG_CVM_HOST=y
CONFIG_CVM_GUEST=y
@@ -1177,7 +1178,7 @@ CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
# CONFIG_GUP_BENCHMARK is not set
# CONFIG_READ_ONLY_THP_FOR_FS is not set
CONFIG_ARCH_HAS_PTE_SPECIAL=y
-CONFIG_PIN_MEMORY=y
+# CONFIG_PIN_MEMORY is not set
CONFIG_PID_RESERVE=y
CONFIG_MEMORY_RELIABLE=y
# CONFIG_CLEAR_FREELIST_PAGE is not set
@@ -6121,7 +6122,7 @@ CONFIG_HISI_HBMDEV=m
CONFIG_HISI_HBMCACHE=m
CONFIG_HISI_HBMDEV_ACLS=y
CONFIG_HISI_L3T=m
-CONFIG_HISI_L0=m
+#CONFIG_HISI_L0 is not set
CONFIG_HISI_MEM_RAS=m
# end of Hisilicon SoC drivers
# end of SOC (System On Chip) specific Drivers
diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
index 131b2dda3..992c11f2c 100644
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@ -234,7 +234,7 @@ static void __get_cpu_fpsimd_context(void)
*/
static void get_cpu_fpsimd_context(void)
{
- local_bh_disable();
+ preempt_disable();
__get_cpu_fpsimd_context();
}
@@ -255,7 +255,7 @@ static void __put_cpu_fpsimd_context(void)
static void put_cpu_fpsimd_context(void)
{
__put_cpu_fpsimd_context();
- local_bh_enable();
+ preempt_enable();
}
static bool have_cpu_fpsimd_context(void)
diff --git a/arch/x86/configs/openeuler_defconfig b/arch/x86/configs/openeuler_defconfig
index bfaadb4b2..7f5b8e327 100644
--- a/arch/x86/configs/openeuler_defconfig
+++ b/arch/x86/configs/openeuler_defconfig
@@ -89,10 +89,10 @@ CONFIG_HIGH_RES_TIMERS=y
CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
# end of Timers subsystem
-CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
-
+CONFIG_PREEMPT_RT=y
#
# CPU/Task time and stats accounting
#
@@ -218,7 +218,7 @@ CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BPF=y
-# CONFIG_EXPERT is not set
+CONFIG_EXPERT=y
CONFIG_UID16=y
CONFIG_MULTIUSER=y
CONFIG_SGETMASK_SYSCALL=y
@@ -760,7 +760,7 @@ CONFIG_KVM_COMPAT=y
CONFIG_HAVE_KVM_IRQ_BYPASS=y
CONFIG_HAVE_KVM_NO_POLL=y
CONFIG_KVM_XFER_TO_GUEST_WORK=y
-CONFIG_VIRTUALIZATION=y
+# CONFIG_VIRTUALIZATION is not set
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_X86_SGX_KVM=y
diff --git a/arch/x86/include/asm/preempt.h b/arch/x86/include/asm/preempt.h
index a3b73de27..dda9ec24f 100644
--- a/arch/x86/include/asm/preempt.h
+++ b/arch/x86/include/asm/preempt.h
@@ -134,10 +134,8 @@ static __always_inline bool should_resched(int preempt_offset)
#endif
}
+#ifndef CONFIG_PREEMPT_RT
#ifdef CONFIG_PREEMPTION
-#ifdef CONFIG_PREEMPT_RT
- extern void preempt_schedule_lock(void);
-#endif
extern asmlinkage void preempt_schedule(void);
extern asmlinkage void preempt_schedule_thunk(void);
@@ -166,4 +164,16 @@ do { \
#endif
+#else
+#ifdef CONFIG_PREEMPTION
+#ifdef CONFIG_PREEMPT_RT
+extern void preempt_schedule_lock(void);
+#endif
+extern asmlinkage void preempt_schedule(void);
+#define __preempt_schedule() preempt_schedule()
+extern asmlinkage void preempt_schedule_notrace(void);
+#define __preempt_schedule_notrace() preempt_schedule_notrace()
+#endif /* CONFIG_PREEMPTION */
+#endif
+
#endif /* __ASM_PREEMPT_H */
diff --git a/include/linux/printk.h b/include/linux/printk.h
index 26c70fd11..c82c971e8 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -241,7 +241,7 @@ __printf(1, 2) void dump_stack_set_arch_desc(const char *fmt, ...);
void dump_stack_print_info(const char *log_lvl);
void show_regs_print_info(const char *log_lvl);
extern asmlinkage void dump_stack(void) __cold;
-#if defined(CONFIG_X86) || defined(CONFIG_ARM64_PSEUDO_NMI)
+#if (defined(CONFIG_X86) || defined(CONFIG_ARM64_PSEUDO_NMI)) && !defined(CONFIG_PREEMPT_RT)
extern void zap_locks(void);
#else
static inline void zap_locks(void) { }
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 88a877fdc..331762a96 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -1826,7 +1826,7 @@ static void print_sync_until(struct console *con, u64 seq)
}
-#if defined(CONFIG_X86) || defined(CONFIG_ARM64_PSEUDO_NMI)
+#if 0 //defined(CONFIG_X86) || defined(CONFIG_ARM64_PSEUDO_NMI)
void zap_locks(void)
{
// if (raw_spin_is_locked(&logbuf_lock)) {
--
2.41.0