kernel/0001-modify-openeuler_defconfig-for-rt62.patch
2022-11-29 19:30:18 +08:00

163 lines
5.0 KiB
Diff

From 430ab8c58ebcf6305676db654c0711f9cf0e1d94 Mon Sep 17 00:00:00 2001
From: ryan <ryan@ex.com>
Date: Tue, 29 Nov 2022 15:23:28 +0800
Subject: [PATCH 2/2] modify-openeuler_defconfig-for-rt62
---
arch/arm64/configs/openeuler_defconfig | 5 +++--
arch/arm64/kernel/fpsimd.c | 4 ++--
arch/x86/configs/openeuler_defconfig | 7 ++++---
arch/x86/include/asm/preempt.h | 16 +++++++++++++---
include/linux/printk.h | 2 +-
kernel/printk/printk.c | 2 +-
6 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/arch/arm64/configs/openeuler_defconfig b/arch/arm64/configs/openeuler_defconfig
index a96c3ae85a19..ad870eabf021 100644
--- a/arch/arm64/configs/openeuler_defconfig
+++ b/arch/arm64/configs/openeuler_defconfig
@@ -73,6 +73,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
@@ -729,7 +730,7 @@ CONFIG_ACPI_MPAM=y
CONFIG_ACPI_PPTT=y
# CONFIG_PMIC_OPREGION is not set
CONFIG_IRQ_BYPASS_MANAGER=y
-CONFIG_VIRTUALIZATION=y
+# CONFIG_VIRTUALIZATION is not set
CONFIG_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_IRQFD=y
@@ -1116,7 +1117,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
diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
index 84520f11667d..aa631771e0dc 100644
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@ -180,7 +180,7 @@ static void __get_cpu_fpsimd_context(void)
*/
static void get_cpu_fpsimd_context(void)
{
- local_bh_disable();
+ preempt_disable();
__get_cpu_fpsimd_context();
}
@@ -201,7 +201,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 e5a68009ed20..8a8b42b4cb59 100644
--- a/arch/x86/configs/openeuler_defconfig
+++ b/arch/x86/configs/openeuler_defconfig
@@ -88,9 +88,10 @@ CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=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
@@ -205,7 +206,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
@@ -725,7 +726,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 a3b73de276c3..dda9ec24fdc1 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 9331b131ba25..23946f4828b2 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 e95b00f24c75..59bd804e662a 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -1813,7 +1813,7 @@ static void print_sync_until(struct console *con, u64 seq)
console_atomic_unlock(flags);
}
-#if defined(CONFIG_X86) || defined(CONFIG_ARM64_PSEUDO_NMI)
+#if (defined(CONFIG_X86) || defined(CONFIG_ARM64_PSEUDO_NMI)) && !defined(CONFIG_PREEMPT_RT)
void zap_locks(void)
{
// if (raw_spin_is_locked(&logbuf_lock)) {
--
2.25.1