1 Star 0 Fork 275

qiaojijun/src_openeuler_kernel

forked from src-openEuler/kernel 
Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
文件
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
0001-kernel-rt62-modify-defconfig.patch 4.46 KB
Copy Edit Raw Blame History
diff --git a/arch/arm64/configs/openeuler_defconfig b/arch/arm64/configs/openeuler_defconfig
index b8d554996..b84cc0bb1 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
@@ -730,7 +731,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
@@ -1114,7 +1115,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 dbe196f38..da2413218 100644
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@ -244,7 +244,7 @@ static void *sve_free_atomic(struct task_struct *task)
*/
static void get_cpu_fpsimd_context(void)
{
- local_bh_disable();
+ preempt_disable();
__get_cpu_fpsimd_context();
}
@@ -265,7 +265,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 c5a878851..1ed51d9f6 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
@@ -726,7 +727,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 9331b131b..23946f482 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 7859f42a6..d1a472283 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)) {
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/kylin-qiaojijun/src_openeuler_kernel.git
git@gitee.com:kylin-qiaojijun/src_openeuler_kernel.git
kylin-qiaojijun
src_openeuler_kernel
src_openeuler_kernel
openEuler-22.09-release

Search