From f10055b3bcbfcb75586ae010da45d7a2acd40c26 Mon Sep 17 00:00:00 2001 From: zhangyu Date: Thu, 5 Jun 2025 11:05:19 +0800 Subject: [PATCH] kernel-rt udpate to 6.6.0-95.0.0.13 && Rpi-rt update to 6.6.0.95.0.6 --- 0001-raspberrypi-kernel-RT.patch | 217 +++++++++++++++---------------- kernel-rt.spec | 7 +- patch-6.6.0-6.0.0-rt20.patch | 55 ++++---- raspberrypi-kernel-rt.spec | 7 +- 4 files changed, 145 insertions(+), 141 deletions(-) diff --git a/0001-raspberrypi-kernel-RT.patch b/0001-raspberrypi-kernel-RT.patch index 3457bd2f..3b067a2f 100644 --- a/0001-raspberrypi-kernel-RT.patch +++ b/0001-raspberrypi-kernel-RT.patch @@ -1,7 +1,7 @@ -From ceef3924993b91eb237a5db8e7f2fa821c39805c Mon Sep 17 00:00:00 2001 +From 2ce515b9176f724036e964282d7bc801f6470d96 Mon Sep 17 00:00:00 2001 From: zhangyu -Date: Fri, 25 Apr 2025 16:22:56 +0800 -Subject: [PATCH] rt1 +Date: Thu, 5 Jun 2025 09:56:21 +0800 +Subject: [PATCH] rpi-rt1 --- arch/arm/Kconfig | 6 +- @@ -154,7 +154,7 @@ Subject: [PATCH] rt1 kernel/sched/core.c | 127 +- kernel/sched/debug.c | 19 + kernel/sched/fair.c | 49 +- - kernel/sched/features.h | 2 +- + kernel/sched/features.h | 1 + kernel/sched/idle.c | 3 +- kernel/sched/rt.c | 5 +- kernel/sched/sched.h | 1 + @@ -167,7 +167,7 @@ Subject: [PATCH] rt1 kernel/trace/trace_output.c | 16 +- net/core/dev.c | 39 +- net/core/skbuff.c | 7 +- - 163 files changed, 5008 insertions(+), 1498 deletions(-) + 163 files changed, 5008 insertions(+), 1497 deletions(-) create mode 100644 kernel/printk/nbcon.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig @@ -432,7 +432,7 @@ index a1ff693e4..adcc34042 100644 EXPORT_SYMBOL(kernel_neon_end); diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 0233c5628..6d433cf44 100644 +index 4526ce130..5bcf79856 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -103,6 +103,7 @@ config ARM64 @@ -1138,7 +1138,7 @@ index 8a5a038fd..68970d6cf 100644 DC_LOGGER_INIT(dc->ctx->logger); BW_VAL_TRACE_COUNT(); -@@ -2062,16 +2061,14 @@ static bool dcn20_validate_bandwidth_internal(struct dc *dc, struct dc_state *co +@@ -2062,16 +2061,14 @@ validate_fail: out = false; validate_out: @@ -1201,7 +1201,7 @@ index 8a5a038fd..68970d6cf 100644 DC_LOGGER_INIT(dc->ctx->logger); BW_VAL_TRACE_COUNT(); -@@ -2362,7 +2358,6 @@ bool dcn21_validate_bandwidth_fp(struct dc *dc, +@@ -2362,7 +2358,6 @@ validate_fail: out = false; validate_out: @@ -1372,7 +1372,7 @@ index 2065be5a1..73d815fc5 100644 return; /* leave this for another sibling */ } -@@ -1591,7 +1591,7 @@ static void execlists_dequeue(struct intel_engine_cs *engine) +@@ -1591,7 +1591,7 @@ done: */ sched_engine->queue_priority_hint = queue_prio(sched_engine); i915_sched_engine_reset_on_empty(sched_engine); @@ -1381,7 +1381,7 @@ index 2065be5a1..73d815fc5 100644 /* * We can skip poking the HW if we ended up with exactly the same set -@@ -1617,13 +1617,6 @@ static void execlists_dequeue(struct intel_engine_cs *engine) +@@ -1617,13 +1617,6 @@ done: } } @@ -3315,7 +3315,7 @@ index bcca5627a..5a3f2fc47 100644 port->read_status_mask = ATMEL_US_OVRE; if (termios->c_iflag & INPCK) -@@ -2377,22 +2377,22 @@ static void atmel_set_termios(struct uart_port *port, +@@ -2377,22 +2377,22 @@ gclk_fail: else atmel_disable_ms(port); @@ -3873,7 +3873,7 @@ index 8bd0f8e45..58c2c460c 100644 while (!(readb(sport->port.membase + UARTSFIFO) & UARTSFIFO_RXEMPT)) { flg = TTY_NORMAL; -@@ -956,9 +956,9 @@ static void lpuart_rxint(struct lpuart_port *sport) +@@ -956,9 +956,9 @@ out: static void lpuart32_txint(struct lpuart_port *sport) { @@ -3909,7 +3909,7 @@ index 8bd0f8e45..58c2c460c 100644 return; } -@@ -1244,7 +1244,7 @@ static void lpuart_copy_rx_to_tty(struct lpuart_port *sport) +@@ -1244,7 +1244,7 @@ exit: dma_sync_sg_for_device(chan->device->dev, &sport->rx_sgl, 1, DMA_FROM_DEVICE); @@ -7868,7 +7868,7 @@ index 4350a69d9..9f8e224e1 100644 #ifdef CONFIG_SERIAL_SH_SCI_DMA if (s->chan_rx_saved) { -@@ -2551,7 +2551,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios, +@@ -2551,7 +2551,7 @@ done: serial_port_out(port, SCCKS, sccks); } @@ -7877,7 +7877,7 @@ index 4350a69d9..9f8e224e1 100644 sci_reset(port); -@@ -2673,7 +2673,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios, +@@ -2673,7 +2673,7 @@ done: if ((termios->c_cflag & CREAD) != 0) sci_start_rx(port); @@ -9869,10 +9869,10 @@ index e4878bb58..ebebc32e7 100644 #ifdef CONFIG_SMP diff --git a/include/linux/sched.h b/include/linux/sched.h -index a694cc11d..1d6148e22 100644 +index 3979c34e9..f586b8b60 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -946,6 +946,9 @@ struct task_struct { +@@ -951,6 +951,9 @@ struct task_struct { * ->sched_remote_wakeup gets used, so it can be in this word. */ unsigned sched_remote_wakeup:1; @@ -9882,7 +9882,7 @@ index a694cc11d..1d6148e22 100644 /* Bit to tell LSMs we're in execve(): */ unsigned in_execve:1; -@@ -1992,6 +1995,7 @@ static inline int dl_task_check_affinity(struct task_struct *p, const struct cpu +@@ -2001,6 +2004,7 @@ static inline int dl_task_check_affinity(struct task_struct *p, const struct cpu } #endif @@ -9890,7 +9890,7 @@ index a694cc11d..1d6148e22 100644 extern int yield_to(struct task_struct *p, bool preempt); extern void set_user_nice(struct task_struct *p, long nice); extern int task_prio(const struct task_struct *p); -@@ -2143,17 +2147,17 @@ static inline void update_tsk_thread_flag(struct task_struct *tsk, int flag, +@@ -2152,17 +2156,17 @@ static inline void update_tsk_thread_flag(struct task_struct *tsk, int flag, update_ti_thread_flag(task_thread_info(tsk), flag, value); } @@ -9911,7 +9911,7 @@ index a694cc11d..1d6148e22 100644 { return test_ti_thread_flag(task_thread_info(tsk), flag); } -@@ -2166,9 +2170,11 @@ static inline void set_tsk_need_resched(struct task_struct *tsk) +@@ -2175,9 +2179,11 @@ static inline void set_tsk_need_resched(struct task_struct *tsk) static inline void clear_tsk_need_resched(struct task_struct *tsk) { clear_tsk_thread_flag(tsk,TIF_NEED_RESCHED); @@ -9924,7 +9924,7 @@ index a694cc11d..1d6148e22 100644 { return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } -@@ -2349,7 +2355,7 @@ static inline int rwlock_needbreak(rwlock_t *lock) +@@ -2358,7 +2364,7 @@ static inline int rwlock_needbreak(rwlock_t *lock) static __always_inline bool need_resched(void) { @@ -10205,10 +10205,10 @@ index 74d9fe360..0be63993d 100644 #ifndef CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h -index 3f10e29df..37bb8e247 100644 +index 6d91ba4eb..c337945b1 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h -@@ -179,8 +179,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status); +@@ -183,8 +183,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status); enum trace_flag_type { TRACE_FLAG_IRQS_OFF = 0x01, @@ -10219,7 +10219,7 @@ index 3f10e29df..37bb8e247 100644 TRACE_FLAG_HARDIRQ = 0x08, TRACE_FLAG_SOFTIRQ = 0x10, TRACE_FLAG_PREEMPT_RESCHED = 0x20, -@@ -206,11 +206,11 @@ static inline unsigned int tracing_gen_ctx(void) +@@ -210,11 +210,11 @@ static inline unsigned int tracing_gen_ctx(void) static inline unsigned int tracing_gen_ctx_flags(unsigned long irqflags) { @@ -10358,7 +10358,7 @@ index ce2889f12..d636a1bbd 100644 new_owner = top_waiter->task; /* -@@ -1002,6 +990,12 @@ int futex_lock_pi(u32 __user *uaddr, unsigned int flags, ktime_t *time, int tryl +@@ -1002,6 +990,12 @@ retry_private: goto no_block; } @@ -10371,7 +10371,7 @@ index ce2889f12..d636a1bbd 100644 rt_mutex_init_waiter(&rt_waiter); /* -@@ -1039,19 +1033,37 @@ int futex_lock_pi(u32 __user *uaddr, unsigned int flags, ktime_t *time, int tryl +@@ -1039,19 +1033,37 @@ retry_private: ret = rt_mutex_wait_proxy_lock(&q.pi_state->pi_mutex, to, &rt_waiter); cleanup: @@ -10415,7 +10415,7 @@ index ce2889f12..d636a1bbd 100644 no_block: /* * Fixup the pi_state owner and possibly acquire the lock if we -@@ -1132,6 +1144,7 @@ int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -1132,6 +1144,7 @@ retry: top_waiter = futex_top_waiter(hb, &key); if (top_waiter) { struct futex_pi_state *pi_state = top_waiter->pi_state; @@ -10423,7 +10423,7 @@ index ce2889f12..d636a1bbd 100644 ret = -EINVAL; if (!pi_state) -@@ -1144,22 +1157,39 @@ int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -1144,22 +1157,39 @@ retry: if (pi_state->owner != current) goto out_unlock; @@ -10469,7 +10469,7 @@ index ce2889f12..d636a1bbd 100644 put_pi_state(pi_state); -@@ -1187,6 +1217,7 @@ int futex_unlock_pi(u32 __user *uaddr, unsigned int flags) +@@ -1187,6 +1217,7 @@ retry: return ret; } @@ -12670,7 +12670,7 @@ index 000000000..b53d93585 +} +device_initcall(printk_init_ops); diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index 4386683f9..be1c6cb3a 100644 +index de9f3fc6e..dd327dd48 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -102,12 +102,6 @@ DEFINE_STATIC_SRCU(console_srcu); @@ -12775,7 +12775,7 @@ index 4386683f9..be1c6cb3a 100644 /* * We cannot access per-CPU data (e.g. per-CPU flush irq_work) before -@@ -698,9 +742,6 @@ static ssize_t msg_print_ext_body(char *buf, size_t size, +@@ -698,9 +742,6 @@ out: return len; } @@ -12794,7 +12794,7 @@ index 4386683f9..be1c6cb3a 100644 { /* * Do not use spinning in panic(). The panic CPU wants to keep the lock. -@@ -1887,7 +1928,7 @@ static void console_lock_spinning_enable(void) +@@ -1887,7 +1928,7 @@ lockdep: * * Return: 1 if the lock rights were passed, 0 otherwise. */ @@ -12803,7 +12803,7 @@ index 4386683f9..be1c6cb3a 100644 { int waiter; -@@ -2305,54 +2346,123 @@ int vprintk_store(int facility, int level, +@@ -2313,54 +2354,123 @@ out: return ret; } @@ -12941,7 +12941,7 @@ index 4386683f9..be1c6cb3a 100644 return printed_len; } -@@ -2380,6 +2490,14 @@ EXPORT_SYMBOL(_printk); +@@ -2388,6 +2498,14 @@ EXPORT_SYMBOL(_printk); static bool pr_flush(int timeout_ms, bool reset_on_progress); static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress); @@ -12956,7 +12956,7 @@ index 4386683f9..be1c6cb3a 100644 #else /* CONFIG_PRINTK */ #define printk_time false -@@ -2390,25 +2508,11 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre +@@ -2398,25 +2516,11 @@ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progre static u64 syslog_seq; @@ -12984,7 +12984,7 @@ index 4386683f9..be1c6cb3a 100644 #endif /* CONFIG_PRINTK */ #ifdef CONFIG_EARLY_PRINTK -@@ -2616,6 +2720,8 @@ void suspend_console(void) +@@ -2624,6 +2728,8 @@ void suspend_console(void) void resume_console(void) { struct console *con; @@ -12993,7 +12993,7 @@ index 4386683f9..be1c6cb3a 100644 if (!console_suspend_enabled) return; -@@ -2632,6 +2738,20 @@ void resume_console(void) +@@ -2640,6 +2746,20 @@ void resume_console(void) */ synchronize_srcu(&console_srcu); @@ -13014,7 +13014,7 @@ index 4386683f9..be1c6cb3a 100644 pr_flush(1000, true); } -@@ -2646,7 +2766,8 @@ void resume_console(void) +@@ -2654,7 +2774,8 @@ void resume_console(void) */ static int console_cpu_notify(unsigned int cpu) { @@ -13024,7 +13024,7 @@ index 4386683f9..be1c6cb3a 100644 /* If trylock fails, someone else is doing the printing */ if (console_trylock()) console_unlock(); -@@ -2654,26 +2775,6 @@ static int console_cpu_notify(unsigned int cpu) +@@ -2662,26 +2783,6 @@ static int console_cpu_notify(unsigned int cpu) return 0; } @@ -13051,7 +13051,7 @@ index 4386683f9..be1c6cb3a 100644 /** * console_lock - block the console subsystem from printing * -@@ -2723,42 +2824,16 @@ int is_console_locked(void) +@@ -2731,42 +2832,16 @@ int is_console_locked(void) } EXPORT_SYMBOL(is_console_locked); @@ -13098,7 +13098,7 @@ index 4386683f9..be1c6cb3a 100644 /* * Prepend the message in @pmsg->pbufs->outbuf with a "dropped message". This * is achieved by shifting the existing message over and inserting the dropped -@@ -2773,8 +2848,7 @@ static void __console_unlock(void) +@@ -2781,8 +2856,7 @@ static void __console_unlock(void) * * If @pmsg->pbufs->outbuf is modified, @pmsg->outbuf_len is updated. */ @@ -13108,7 +13108,7 @@ index 4386683f9..be1c6cb3a 100644 { struct printk_buffers *pbufs = pmsg->pbufs; const size_t scratchbuf_sz = sizeof(pbufs->scratchbuf); -@@ -2805,9 +2879,6 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d +@@ -2813,9 +2887,6 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d memcpy(outbuf, scratchbuf, len); pmsg->outbuf_len += len; } @@ -13118,7 +13118,7 @@ index 4386683f9..be1c6cb3a 100644 /* * Read and format the specified record (or a later record if the specified -@@ -2828,11 +2899,9 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d +@@ -2836,11 +2907,9 @@ static void console_prepend_dropped(struct printk_message *pmsg, unsigned long d * of @pmsg are valid. (See the documentation of struct printk_message * for information about the @pmsg fields.) */ @@ -13132,7 +13132,7 @@ index 4386683f9..be1c6cb3a 100644 struct printk_buffers *pbufs = pmsg->pbufs; const size_t scratchbuf_sz = sizeof(pbufs->scratchbuf); const size_t outbuf_sz = sizeof(pbufs->outbuf); -@@ -2860,17 +2929,6 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, +@@ -2868,17 +2937,6 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, pmsg->seq = r.info->seq; pmsg->dropped = r.info->seq - seq; @@ -13150,7 +13150,7 @@ index 4386683f9..be1c6cb3a 100644 /* Skip record that has level above the console loglevel. */ if (may_suppress && suppress_message_printing(r.info->level)) goto out; -@@ -2887,6 +2945,13 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, +@@ -2895,6 +2953,13 @@ out: return true; } @@ -13164,7 +13164,7 @@ index 4386683f9..be1c6cb3a 100644 /* * Print one record for the given console. The record printed is whatever * record is the next available record for the given console. -@@ -2904,12 +2969,10 @@ static bool printk_get_next_message(struct printk_message *pmsg, u64 seq, +@@ -2912,12 +2977,10 @@ out: */ static bool console_emit_next_record(struct console *con, bool *handover, int cookie) { @@ -13179,7 +13179,7 @@ index 4386683f9..be1c6cb3a 100644 }; unsigned long flags; -@@ -2931,35 +2994,59 @@ static bool console_emit_next_record(struct console *con, bool *handover, int co +@@ -2939,35 +3002,59 @@ static bool console_emit_next_record(struct console *con, bool *handover, int co con->dropped = 0; } @@ -13259,7 +13259,7 @@ index 4386683f9..be1c6cb3a 100644 /* * Print out all remaining records to all consoles. * -@@ -2998,13 +3085,33 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove +@@ -3006,13 +3093,33 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove cookie = console_srcu_read_lock(); for_each_console_srcu(con) { @@ -13295,7 +13295,7 @@ index 4386683f9..be1c6cb3a 100644 /* * If a handover has occurred, the SRCU read lock -@@ -3014,8 +3121,8 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove +@@ -3022,8 +3129,8 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove return false; /* Track the next of the highest seq flushed. */ @@ -13306,7 +13306,7 @@ index 4386683f9..be1c6cb3a 100644 if (!progress) continue; -@@ -3038,19 +3145,7 @@ static bool console_flush_all(bool do_cond_resched, u64 *next_seq, bool *handove +@@ -3046,19 +3153,7 @@ abandon: return false; } @@ -13327,7 +13327,7 @@ index 4386683f9..be1c6cb3a 100644 { bool do_cond_resched; bool handover; -@@ -3094,6 +3189,32 @@ void console_unlock(void) +@@ -3102,6 +3197,32 @@ void console_unlock(void) */ } while (prb_read_valid(prb, next_seq, NULL) && console_trylock()); } @@ -13360,7 +13360,7 @@ index 4386683f9..be1c6cb3a 100644 EXPORT_SYMBOL(console_unlock); /** -@@ -3204,6 +3325,7 @@ void console_flush_on_panic(enum con_flush_mode mode) +@@ -3212,6 +3333,7 @@ void console_flush_on_panic(enum con_flush_mode mode) if (mode == CONSOLE_REPLAY_ALL) { struct console *c; @@ -13368,7 +13368,7 @@ index 4386683f9..be1c6cb3a 100644 int cookie; u64 seq; -@@ -3211,16 +3333,25 @@ void console_flush_on_panic(enum con_flush_mode mode) +@@ -3219,16 +3341,25 @@ void console_flush_on_panic(enum con_flush_mode mode) cookie = console_srcu_read_lock(); for_each_console_srcu(c) { @@ -13400,7 +13400,7 @@ index 4386683f9..be1c6cb3a 100644 } /* -@@ -3277,13 +3408,122 @@ EXPORT_SYMBOL(console_stop); +@@ -3285,13 +3416,122 @@ EXPORT_SYMBOL(console_stop); void console_start(struct console *console) { @@ -13523,7 +13523,7 @@ index 4386683f9..be1c6cb3a 100644 static int __read_mostly keep_bootcon; static int __init keep_bootcon_setup(char *str) -@@ -3382,11 +3622,6 @@ static void try_enable_default_console(struct console *newcon) +@@ -3390,11 +3630,6 @@ static void try_enable_default_console(struct console *newcon) newcon->flags |= CON_CONSDEV; } @@ -13535,7 +13535,7 @@ index 4386683f9..be1c6cb3a 100644 static void console_init_seq(struct console *newcon, bool bootcon_registered) { struct console *con; -@@ -3435,11 +3670,20 @@ static void console_init_seq(struct console *newcon, bool bootcon_registered) +@@ -3443,11 +3678,20 @@ static void console_init_seq(struct console *newcon, bool bootcon_registered) newcon->seq = prb_next_seq(prb); for_each_console(con) { @@ -13560,7 +13560,7 @@ index 4386683f9..be1c6cb3a 100644 } } -@@ -3500,6 +3744,15 @@ void register_console(struct console *newcon) +@@ -3508,6 +3752,15 @@ void register_console(struct console *newcon) goto unlock; } @@ -13576,7 +13576,7 @@ index 4386683f9..be1c6cb3a 100644 /* * See if we want to enable this console driver by default. * -@@ -3527,8 +3780,11 @@ void register_console(struct console *newcon) +@@ -3535,8 +3788,11 @@ void register_console(struct console *newcon) err = try_enable_preferred_console(newcon, false); /* printk() messages are not printed to the Braille console. */ @@ -13589,7 +13589,7 @@ index 4386683f9..be1c6cb3a 100644 /* * If we have a bootconsole, and are switching to a real console, -@@ -3544,6 +3800,17 @@ void register_console(struct console *newcon) +@@ -3552,6 +3808,17 @@ void register_console(struct console *newcon) newcon->dropped = 0; console_init_seq(newcon, bootcon_registered); @@ -13607,7 +13607,7 @@ index 4386683f9..be1c6cb3a 100644 /* * Put this console in the list - keep the * preferred driver at the head of the list. -@@ -3596,6 +3863,11 @@ EXPORT_SYMBOL(register_console); +@@ -3604,6 +3871,11 @@ EXPORT_SYMBOL(register_console); /* Must be called under console_list_lock(). */ static int unregister_console_locked(struct console *console) { @@ -13619,7 +13619,7 @@ index 4386683f9..be1c6cb3a 100644 int res; lockdep_assert_console_list_lock_held(); -@@ -3635,11 +3907,50 @@ static int unregister_console_locked(struct console *console) +@@ -3643,11 +3915,50 @@ static int unregister_console_locked(struct console *console) */ synchronize_srcu(&console_srcu); @@ -13670,7 +13670,7 @@ index 4386683f9..be1c6cb3a 100644 return res; } -@@ -3784,69 +4095,94 @@ late_initcall(printk_late_init); +@@ -3792,69 +4103,94 @@ late_initcall(printk_late_init); /* If @con is specified, only wait for that console. Otherwise wait for all. */ static bool __pr_flush(struct console *con, int timeout_ms, bool reset_on_progress) { @@ -13792,7 +13792,7 @@ index 4386683f9..be1c6cb3a 100644 last_diff = diff; } -@@ -3887,9 +4223,16 @@ static void wake_up_klogd_work_func(struct irq_work *irq_work) +@@ -3895,9 +4231,16 @@ static void wake_up_klogd_work_func(struct irq_work *irq_work) int pending = this_cpu_xchg(printk_pending, 0); if (pending & PRINTK_PENDING_OUTPUT) { @@ -13812,7 +13812,7 @@ index 4386683f9..be1c6cb3a 100644 } if (pending & PRINTK_PENDING_WAKEUP) -@@ -3957,11 +4300,16 @@ void defer_console_output(void) +@@ -3965,11 +4308,16 @@ void defer_console_output(void) * New messages may have been added directly to the ringbuffer * using vprintk_store(), so wake any waiters as well. */ @@ -13889,7 +13889,7 @@ index fde338606..e7b808b82 100644 return NULL; } -@@ -1441,20 +1457,118 @@ bool prb_reserve_in_last(struct prb_reserved_entry *e, struct printk_ringbuffer +@@ -1441,20 +1457,118 @@ fail_reopen: return false; } @@ -14507,10 +14507,10 @@ index 11a1fac3a..6f085a159 100644 static void print_cpu_stall(unsigned long gps) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 7dc4ceebd..75951b77c 100644 +index fa8c8e585..c6a8b3e9b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c -@@ -903,14 +903,15 @@ static inline void hrtick_rq_init(struct rq *rq) +@@ -906,14 +906,15 @@ static inline void hrtick_rq_init(struct rq *rq) #if defined(CONFIG_SMP) && defined(TIF_POLLING_NRFLAG) /* @@ -14529,7 +14529,7 @@ index 7dc4ceebd..75951b77c 100644 } /* -@@ -927,7 +928,7 @@ static bool set_nr_if_polling(struct task_struct *p) +@@ -930,7 +931,7 @@ static bool set_nr_if_polling(struct task_struct *p) for (;;) { if (!(val & _TIF_POLLING_NRFLAG)) return false; @@ -14538,7 +14538,7 @@ index 7dc4ceebd..75951b77c 100644 return true; if (try_cmpxchg(&ti->flags, &val, val | _TIF_NEED_RESCHED)) break; -@@ -936,9 +937,9 @@ static bool set_nr_if_polling(struct task_struct *p) +@@ -939,9 +940,9 @@ static bool set_nr_if_polling(struct task_struct *p) } #else @@ -14550,7 +14550,7 @@ index 7dc4ceebd..75951b77c 100644 return true; } -@@ -1043,28 +1044,47 @@ void wake_up_q(struct wake_q_head *head) +@@ -1046,28 +1047,47 @@ void wake_up_q(struct wake_q_head *head) * might also involve a cross-CPU call to trigger the scheduler on * the target CPU. */ @@ -14606,7 +14606,7 @@ index 7dc4ceebd..75951b77c 100644 } void resched_cpu(int cpu) -@@ -1137,7 +1157,7 @@ static void wake_up_idle_cpu(int cpu) +@@ -1140,7 +1160,7 @@ static void wake_up_idle_cpu(int cpu) if (cpu == smp_processor_id()) return; @@ -14615,7 +14615,7 @@ index 7dc4ceebd..75951b77c 100644 smp_send_reschedule(cpu); else trace_sched_wake_idle_without_ipi(cpu); -@@ -6778,10 +6798,14 @@ void __noreturn do_task_dead(void) +@@ -6792,10 +6812,14 @@ void __noreturn do_task_dead(void) static inline void sched_submit_work(struct task_struct *tsk) { @@ -14632,7 +14632,7 @@ index 7dc4ceebd..75951b77c 100644 task_flags = tsk->flags; /* -@@ -6807,6 +6831,8 @@ static inline void sched_submit_work(struct task_struct *tsk) +@@ -6821,6 +6845,8 @@ static inline void sched_submit_work(struct task_struct *tsk) * make sure to submit it to avoid deadlocks. */ blk_flush_plug(tsk->plug, true); @@ -14641,7 +14641,7 @@ index 7dc4ceebd..75951b77c 100644 } static void sched_update_worker(struct task_struct *tsk) -@@ -6821,16 +6847,26 @@ static void sched_update_worker(struct task_struct *tsk) +@@ -6835,16 +6861,26 @@ static void sched_update_worker(struct task_struct *tsk) } } @@ -14673,7 +14673,7 @@ index 7dc4ceebd..75951b77c 100644 sched_update_worker(tsk); } EXPORT_SYMBOL(schedule); -@@ -6894,11 +6930,7 @@ void __sched schedule_preempt_disabled(void) +@@ -6908,11 +6944,7 @@ void __sched schedule_preempt_disabled(void) #ifdef CONFIG_PREEMPT_RT void __sched notrace schedule_rtlock(void) { @@ -14686,7 +14686,7 @@ index 7dc4ceebd..75951b77c 100644 } NOKPROBE_SYMBOL(schedule_rtlock); #endif -@@ -7094,6 +7126,32 @@ static void __setscheduler_prio(struct task_struct *p, int prio) +@@ -7108,6 +7140,32 @@ static void __setscheduler_prio(struct task_struct *p, int prio) #ifdef CONFIG_RT_MUTEXES @@ -14719,7 +14719,7 @@ index 7dc4ceebd..75951b77c 100644 static inline int __rt_effective_prio(struct task_struct *pi_task, int prio) { if (pi_task) -@@ -8956,6 +9014,21 @@ static inline void preempt_dynamic_init(void) { } +@@ -8970,6 +9028,21 @@ static inline void preempt_dynamic_init(void) { } #endif /* #ifdef CONFIG_PREEMPT_DYNAMIC */ @@ -14779,10 +14779,10 @@ index 8b3063398..76530c8b3 100644 } late_initcall(sched_init_debug); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index c530d501b..6595ad6fe 100644 +index 21bd2ca41..b804ca83a 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c -@@ -1170,8 +1170,10 @@ static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se); +@@ -1173,8 +1173,10 @@ static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se); * XXX: strictly: vd_i += N*r_i/w_i such that: vd_i > ve_i * this is probably good enough. */ @@ -14794,7 +14794,7 @@ index c530d501b..6595ad6fe 100644 if ((s64)(se->vruntime - se->deadline) < 0) return; -@@ -1190,10 +1192,19 @@ static void update_deadline(struct cfs_rq *cfs_rq, struct sched_entity *se) +@@ -1193,10 +1195,19 @@ static void update_deadline(struct cfs_rq *cfs_rq, struct sched_entity *se) /* * The task has consumed its request, reschedule. */ @@ -14817,7 +14817,7 @@ index c530d501b..6595ad6fe 100644 } #include "pelt.h" -@@ -1301,7 +1312,7 @@ static void update_tg_load_avg(struct cfs_rq *cfs_rq) +@@ -1304,7 +1315,7 @@ static void update_tg_load_avg(struct cfs_rq *cfs_rq) /* * Update the current task's runtime statistics. */ @@ -14826,7 +14826,7 @@ index c530d501b..6595ad6fe 100644 { struct sched_entity *curr = cfs_rq->curr; u64 now = rq_clock_task(rq_of(cfs_rq)); -@@ -1328,7 +1339,7 @@ static void update_curr(struct cfs_rq *cfs_rq) +@@ -1331,7 +1342,7 @@ static void update_curr(struct cfs_rq *cfs_rq) schedstat_add(cfs_rq->exec_clock, delta_exec); curr->vruntime += calc_delta_fair(delta_exec, curr); @@ -14835,7 +14835,7 @@ index c530d501b..6595ad6fe 100644 update_min_vruntime(cfs_rq); if (entity_is_task(curr)) { -@@ -1342,6 +1353,11 @@ static void update_curr(struct cfs_rq *cfs_rq) +@@ -1345,6 +1356,11 @@ static void update_curr(struct cfs_rq *cfs_rq) account_cfs_rq_runtime(cfs_rq, delta_exec); } @@ -14847,7 +14847,7 @@ index c530d501b..6595ad6fe 100644 static void update_curr_fair(struct rq *rq) { update_curr(cfs_rq_of(&rq->curr->se)); -@@ -5656,7 +5672,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -5676,7 +5692,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) /* * Update run-time statistics of the 'current'. */ @@ -14856,7 +14856,7 @@ index c530d501b..6595ad6fe 100644 /* * Ensure that runnable average is periodically updated. -@@ -5670,7 +5686,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -5690,7 +5706,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) * validating it and just reschedule. */ if (queued) { @@ -14865,7 +14865,7 @@ index c530d501b..6595ad6fe 100644 return; } /* -@@ -5816,7 +5832,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) +@@ -5836,7 +5852,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) * hierarchy can be throttled */ if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr)) @@ -14874,7 +14874,7 @@ index c530d501b..6595ad6fe 100644 } static __always_inline -@@ -6115,7 +6131,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) +@@ -6139,7 +6155,7 @@ unthrottle_throttle: /* Determine whether we need to wake up potentially idle CPU: */ if (rq->curr == rq->idle && rq->cfs.nr_running) @@ -14883,7 +14883,7 @@ index c530d501b..6595ad6fe 100644 } #ifdef CONFIG_SMP -@@ -7357,7 +7373,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) +@@ -7381,7 +7397,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) if (delta < 0) { if (task_current(rq, p)) @@ -14892,7 +14892,7 @@ index c530d501b..6595ad6fe 100644 return; } hrtick_start(rq, delta); -@@ -9341,7 +9357,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -9428,7 +9444,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ * prevents us from potentially nominating it as a false LAST_BUDDY * below. */ @@ -14901,7 +14901,7 @@ index c530d501b..6595ad6fe 100644 return; if (!sched_feat(WAKEUP_PREEMPTION)) -@@ -9384,7 +9400,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -9471,7 +9487,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ return; preempt: @@ -14910,7 +14910,7 @@ index c530d501b..6595ad6fe 100644 } #ifdef CONFIG_QOS_SCHED -@@ -9873,8 +9889,7 @@ static bool _qos_smt_check_need_resched(int this_cpu, struct rq *rq) +@@ -9960,8 +9976,7 @@ static bool _qos_smt_check_need_resched(int this_cpu, struct rq *rq) /* * There are two cases rely on the set need_resched to drive away @@ -14920,7 +14920,7 @@ index c530d501b..6595ad6fe 100644 * b) The qos_smt_status of siblings cpu is offline, the task of curr cpu is idle, * and current cpu only has SCHED_IDLE tasks enqueued. */ -@@ -14248,7 +14263,7 @@ static inline void task_tick_core(struct rq *rq, struct task_struct *curr) +@@ -14344,7 +14359,7 @@ static inline void task_tick_core(struct rq *rq, struct task_struct *curr) */ if (rq->core->core_forceidle_count && rq->cfs.nr_running == 1 && __entity_slice_used(&curr->se, MIN_NR_TASKS_DURING_FORCEIDLE)) @@ -14929,7 +14929,7 @@ index c530d501b..6595ad6fe 100644 } /* -@@ -14564,7 +14579,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) +@@ -14662,7 +14677,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) */ if (task_current(rq, p)) { if (p->prio > oldprio) @@ -14939,18 +14939,17 @@ index c530d501b..6595ad6fe 100644 check_preempt_curr(rq, p, 0); } diff --git a/kernel/sched/features.h b/kernel/sched/features.h -index 26b1a03bd..a08f2fcd7 100644 +index ea7ba7481..ebb168b1e 100644 --- a/kernel/sched/features.h +++ b/kernel/sched/features.h -@@ -98,7 +98,7 @@ SCHED_FEAT(UTIL_EST_FASTUP, true) - SCHED_FEAT(LATENCY_WARN, false) +@@ -99,6 +99,7 @@ SCHED_FEAT(LATENCY_WARN, false) SCHED_FEAT(HZ_BW, true) -- + SCHED_FEAT(IRQ_AVG, false) +SCHED_FEAT(FORCE_NEED_RESCHED, false) + #ifdef CONFIG_QOS_SCHED_DYNAMIC_AFFINITY /* - * Use util_avg of bottom-Level taskgroup diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 5007b25c5..95e1b3df1 100644 --- a/kernel/sched/idle.c @@ -14966,7 +14965,7 @@ index 5007b25c5..95e1b3df1 100644 raw_local_irq_disable(); diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c -index 77bb7ee8c..6dedad4f4 100644 +index e2eaa8ffd..d9cd30932 100644 --- a/kernel/sched/rt.c +++ b/kernel/sched/rt.c @@ -2256,8 +2256,11 @@ static int rto_next_cpu(struct root_domain *rd) @@ -14983,10 +14982,10 @@ index 77bb7ee8c..6dedad4f4 100644 rd->rto_cpu = -1; diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index 761870540..f9918a975 100644 +index 6b8aa7827..3f98c2cce 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h -@@ -2601,6 +2601,7 @@ extern void init_sched_fair_class(void); +@@ -2624,6 +2624,7 @@ extern void init_sched_fair_class(void); extern void reweight_task(struct task_struct *p, const struct load_weight *lw); extern void resched_curr(struct rq *rq); @@ -14995,10 +14994,10 @@ index 761870540..f9918a975 100644 extern struct rt_bandwidth def_rt_bandwidth; diff --git a/kernel/signal.c b/kernel/signal.c -index c73873d67..aef5dcf43 100644 +index 50aa72d6f..8b26894c2 100644 --- a/kernel/signal.c +++ b/kernel/signal.c -@@ -2334,15 +2334,35 @@ static int ptrace_stop(int exit_code, int why, unsigned long message, +@@ -2332,15 +2332,35 @@ static int ptrace_stop(int exit_code, int why, unsigned long message, do_notify_parent_cldstop(current, false, why); /* @@ -15043,7 +15042,7 @@ diff --git a/kernel/softirq.c b/kernel/softirq.c index f8cf88cc4..13f919072 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c -@@ -247,6 +247,19 @@ void __local_bh_enable_ip(unsigned long ip, unsigned int cnt) +@@ -247,6 +247,19 @@ out: } EXPORT_SYMBOL(__local_bh_enable_ip); @@ -15175,7 +15174,7 @@ diff --git a/kernel/time/hrtimer.c b/kernel/time/hrtimer.c index 359ffa38a..bcddc8c44 100644 --- a/kernel/time/hrtimer.c +++ b/kernel/time/hrtimer.c -@@ -1873,7 +1873,7 @@ void hrtimer_interrupt(struct clock_event_device *dev) +@@ -1873,7 +1873,7 @@ retry: if (!ktime_before(now, cpu_base->softirq_expires_next)) { cpu_base->softirq_expires_next = KTIME_MAX; cpu_base->softirq_activated = 1; @@ -15238,10 +15237,10 @@ index 63a8ce717..b3fbe97d1 100644 /* diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c -index 2412c0a46..939d67174 100644 +index ab67908a3..5cb4ce318 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c -@@ -2706,6 +2706,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status) +@@ -2727,6 +2727,8 @@ unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status) if (tif_need_resched()) trace_flags |= TRACE_FLAG_NEED_RESCHED; @@ -15251,7 +15250,7 @@ index 2412c0a46..939d67174 100644 trace_flags |= TRACE_FLAG_PREEMPT_RESCHED; return (trace_flags << 16) | (min_t(unsigned int, pc & 0xff, 0xf)) | diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c -index 2b948d35f..959f09ab8 100644 +index 70ba85714..64a96c2d5 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -464,17 +464,29 @@ int trace_print_lat_fmt(struct trace_seq *s, struct trace_entry *entry) @@ -15371,5 +15370,5 @@ index 514c2e002..9ac003233 100644 static void skb_splice_csum_page(struct sk_buff *skb, struct page *page, -- -2.25.1 +2.41.0 diff --git a/kernel-rt.spec b/kernel-rt.spec index 06dd5984..081ebe02 100644 --- a/kernel-rt.spec +++ b/kernel-rt.spec @@ -41,9 +41,9 @@ rm -f test_openEuler_sign.ko test_openEuler_sign.ko.sig %global upstream_version 6.6 %global upstream_sublevel 0 -%global devel_release 93 +%global devel_release 95 %global maintenance_release .0.0 -%global pkg_release .12 +%global pkg_release .13 %global rt_release .rt47 %define with_debuginfo 1 @@ -1058,6 +1058,9 @@ fi %endif %changelog +* Thu Jun 05 2025 zhangyu - 6.6.0-95.0.0.13 +- update kernel-rt version to 6.6.0-95.0.0.13 + * Thu May 29 2025 zhangyu - 6.6.0-93.0.0.12 - update kernel-rt version to 6.6.0-93.0.0.12 diff --git a/patch-6.6.0-6.0.0-rt20.patch b/patch-6.6.0-6.0.0-rt20.patch index b600c93b..f1189a7d 100644 --- a/patch-6.6.0-6.0.0-rt20.patch +++ b/patch-6.6.0-6.0.0-rt20.patch @@ -1,7 +1,7 @@ -From 706ceb4b4f46c7b1c8274fbad5c9231bcf25d605 Mon Sep 17 00:00:00 2001 +From 30dc6318d635b255370eb1de5e41c11a2e3698ea Mon Sep 17 00:00:00 2001 From: zhangyu -Date: Thu, 29 May 2025 11:03:24 +0800 -Subject: [PATCH] reee +Date: Thu, 5 Jun 2025 09:52:02 +0800 +Subject: [PATCH] rt1 --- arch/arm/Kconfig | 6 +- @@ -158,7 +158,7 @@ Subject: [PATCH] reee kernel/sched/core.c | 127 +- kernel/sched/debug.c | 19 + kernel/sched/fair.c | 49 +- - kernel/sched/features.h | 2 +- + kernel/sched/features.h | 1 + kernel/sched/idle.c | 3 +- kernel/sched/rt.c | 5 +- kernel/sched/sched.h | 1 + @@ -171,7 +171,7 @@ Subject: [PATCH] reee kernel/trace/trace_output.c | 16 +- net/core/dev.c | 39 +- net/core/skbuff.c | 7 +- - 167 files changed, 5014 insertions(+), 1509 deletions(-) + 167 files changed, 5014 insertions(+), 1508 deletions(-) create mode 100644 kernel/printk/nbcon.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig @@ -14572,7 +14572,7 @@ index 11a1fac3a..6f085a159 100644 static void print_cpu_stall(unsigned long gps) diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 917b62588..62c2dfc67 100644 +index fa8c8e585..c6a8b3e9b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -906,14 +906,15 @@ static inline void hrtick_rq_init(struct rq *rq) @@ -14680,7 +14680,7 @@ index 917b62588..62c2dfc67 100644 smp_send_reschedule(cpu); else trace_sched_wake_idle_without_ipi(cpu); -@@ -6787,10 +6807,14 @@ void __noreturn do_task_dead(void) +@@ -6792,10 +6812,14 @@ void __noreturn do_task_dead(void) static inline void sched_submit_work(struct task_struct *tsk) { @@ -14697,7 +14697,7 @@ index 917b62588..62c2dfc67 100644 task_flags = tsk->flags; /* -@@ -6816,6 +6840,8 @@ static inline void sched_submit_work(struct task_struct *tsk) +@@ -6821,6 +6845,8 @@ static inline void sched_submit_work(struct task_struct *tsk) * make sure to submit it to avoid deadlocks. */ blk_flush_plug(tsk->plug, true); @@ -14706,7 +14706,7 @@ index 917b62588..62c2dfc67 100644 } static void sched_update_worker(struct task_struct *tsk) -@@ -6830,16 +6856,26 @@ static void sched_update_worker(struct task_struct *tsk) +@@ -6835,16 +6861,26 @@ static void sched_update_worker(struct task_struct *tsk) } } @@ -14738,7 +14738,7 @@ index 917b62588..62c2dfc67 100644 sched_update_worker(tsk); } EXPORT_SYMBOL(schedule); -@@ -6903,11 +6939,7 @@ void __sched schedule_preempt_disabled(void) +@@ -6908,11 +6944,7 @@ void __sched schedule_preempt_disabled(void) #ifdef CONFIG_PREEMPT_RT void __sched notrace schedule_rtlock(void) { @@ -14751,7 +14751,7 @@ index 917b62588..62c2dfc67 100644 } NOKPROBE_SYMBOL(schedule_rtlock); #endif -@@ -7103,6 +7135,32 @@ static void __setscheduler_prio(struct task_struct *p, int prio) +@@ -7108,6 +7140,32 @@ static void __setscheduler_prio(struct task_struct *p, int prio) #ifdef CONFIG_RT_MUTEXES @@ -14784,7 +14784,7 @@ index 917b62588..62c2dfc67 100644 static inline int __rt_effective_prio(struct task_struct *pi_task, int prio) { if (pi_task) -@@ -8965,6 +9023,21 @@ static inline void preempt_dynamic_init(void) { } +@@ -8970,6 +9028,21 @@ static inline void preempt_dynamic_init(void) { } #endif /* #ifdef CONFIG_PREEMPT_DYNAMIC */ @@ -14844,7 +14844,7 @@ index 8b3063398..76530c8b3 100644 } late_initcall(sched_init_debug); diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index bd2c45048..44abbcc86 100644 +index 21bd2ca41..b804ca83a 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -1173,8 +1173,10 @@ static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se); @@ -14912,7 +14912,7 @@ index bd2c45048..44abbcc86 100644 static void update_curr_fair(struct rq *rq) { update_curr(cfs_rq_of(&rq->curr->se)); -@@ -5673,7 +5689,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -5676,7 +5692,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) /* * Update run-time statistics of the 'current'. */ @@ -14921,7 +14921,7 @@ index bd2c45048..44abbcc86 100644 /* * Ensure that runnable average is periodically updated. -@@ -5687,7 +5703,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) +@@ -5690,7 +5706,7 @@ entity_tick(struct cfs_rq *cfs_rq, struct sched_entity *curr, int queued) * validating it and just reschedule. */ if (queued) { @@ -14930,7 +14930,7 @@ index bd2c45048..44abbcc86 100644 return; } /* -@@ -5833,7 +5849,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) +@@ -5836,7 +5852,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) * hierarchy can be throttled */ if (!assign_cfs_rq_runtime(cfs_rq) && likely(cfs_rq->curr)) @@ -14939,7 +14939,7 @@ index bd2c45048..44abbcc86 100644 } static __always_inline -@@ -6136,7 +6152,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) +@@ -6139,7 +6155,7 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) /* Determine whether we need to wake up potentially idle CPU: */ if (rq->curr == rq->idle && rq->cfs.nr_running) @@ -14948,7 +14948,7 @@ index bd2c45048..44abbcc86 100644 } #ifdef CONFIG_SMP -@@ -7378,7 +7394,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) +@@ -7381,7 +7397,7 @@ static void hrtick_start_fair(struct rq *rq, struct task_struct *p) if (delta < 0) { if (task_current(rq, p)) @@ -14957,7 +14957,7 @@ index bd2c45048..44abbcc86 100644 return; } hrtick_start(rq, delta); -@@ -9425,7 +9441,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -9428,7 +9444,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ * prevents us from potentially nominating it as a false LAST_BUDDY * below. */ @@ -14966,7 +14966,7 @@ index bd2c45048..44abbcc86 100644 return; if (!sched_feat(WAKEUP_PREEMPTION)) -@@ -9468,7 +9484,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ +@@ -9471,7 +9487,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ return; preempt: @@ -14975,7 +14975,7 @@ index bd2c45048..44abbcc86 100644 } #ifdef CONFIG_QOS_SCHED -@@ -9957,8 +9973,7 @@ static bool _qos_smt_check_need_resched(int this_cpu, struct rq *rq) +@@ -9960,8 +9976,7 @@ static bool _qos_smt_check_need_resched(int this_cpu, struct rq *rq) /* * There are two cases rely on the set need_resched to drive away @@ -14985,7 +14985,7 @@ index bd2c45048..44abbcc86 100644 * b) The qos_smt_status of siblings cpu is offline, the task of curr cpu is idle, * and current cpu only has SCHED_IDLE tasks enqueued. */ -@@ -14341,7 +14356,7 @@ static inline void task_tick_core(struct rq *rq, struct task_struct *curr) +@@ -14344,7 +14359,7 @@ static inline void task_tick_core(struct rq *rq, struct task_struct *curr) */ if (rq->core->core_forceidle_count && rq->cfs.nr_running == 1 && __entity_slice_used(&curr->se, MIN_NR_TASKS_DURING_FORCEIDLE)) @@ -14994,7 +14994,7 @@ index bd2c45048..44abbcc86 100644 } /* -@@ -14659,7 +14674,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) +@@ -14662,7 +14677,7 @@ prio_changed_fair(struct rq *rq, struct task_struct *p, int oldprio) */ if (task_current(rq, p)) { if (p->prio > oldprio) @@ -15004,18 +15004,17 @@ index bd2c45048..44abbcc86 100644 check_preempt_curr(rq, p, 0); } diff --git a/kernel/sched/features.h b/kernel/sched/features.h -index 02577ddf1..6769c9053 100644 +index ea7ba7481..ebb168b1e 100644 --- a/kernel/sched/features.h +++ b/kernel/sched/features.h -@@ -98,7 +98,7 @@ SCHED_FEAT(UTIL_EST_FASTUP, true) - SCHED_FEAT(LATENCY_WARN, false) +@@ -99,6 +99,7 @@ SCHED_FEAT(LATENCY_WARN, false) SCHED_FEAT(HZ_BW, true) -- + SCHED_FEAT(IRQ_AVG, false) +SCHED_FEAT(FORCE_NEED_RESCHED, false) + #ifdef CONFIG_QOS_SCHED_DYNAMIC_AFFINITY /* - * Use util_avg of bottom-Level taskgroup diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 5007b25c5..95e1b3df1 100644 --- a/kernel/sched/idle.c diff --git a/raspberrypi-kernel-rt.spec b/raspberrypi-kernel-rt.spec index 3f22ffd3..4a1197bd 100644 --- a/raspberrypi-kernel-rt.spec +++ b/raspberrypi-kernel-rt.spec @@ -2,13 +2,13 @@ %global KernelVer %{version}-%{release}.raspi.%{_target_cpu} -%global hulkrelease 88.0.0 +%global hulkrelease 95.0.0 %global debug_package %{nil} Name: raspberrypi-kernel-rt Version: 6.6.0 -Release: %{hulkrelease}.rt47.5 +Release: %{hulkrelease}.rt47.6 Summary: Linux Kernel License: GPLv2 URL: http://www.kernel.org/ @@ -265,6 +265,9 @@ fi %changelog +* Thu Jun 05 2025 zhangyu - 6.6.0.95.0.6 +- - update Rpi:preempt-RT to openEuler 6.6.0.95.6.0 + * Fri Apr 25 2025 zhangyu - 6.6.0.88.0.5 - - update Rpi:preempt-RT to openEuler 6.6.0.88.5.0 -- Gitee