Message ID | ZHZSlJFnTK1IpXeg@uudg.org |
---|---|
State | New |
Headers | show |
Series | [ANNOUNCE] 5.10.180-rt88 | expand |
On 2023-05-30 16:46:28 [-0300], Luis Claudio R. Goncalves wrote: > Hello RT-list! Hi, > Support for deferred printing was removed in v5.10-rc1-rt1 by commit > 9153e3c5cb0c9 ("printk: remove deferred printing"). Sorry for not getting back to earlier, where you proposed the change. > diff --git a/include/linux/printk.h b/include/linux/printk.h > index 83c7734e98025..92e0656841128 100644 > --- a/include/linux/printk.h > +++ b/include/linux/printk.h > @@ -609,7 +609,7 @@ static inline void print_hex_dump_debug(const char *prefix_str, int prefix_type, > #define print_hex_dump_bytes(prefix_str, prefix_type, buf, len) \ > print_hex_dump_debug(prefix_str, prefix_type, 16, 1, buf, len, true) > > -#ifdef CONFIG_PRINTK > +#if defined(CONFIG_PRINTK) && !defined(CONFIG_PREEMPT_RT) > extern void __printk_safe_enter(void); > extern void __printk_safe_exit(void); This needs to go entirely. The "new" printk code does not need this safe functions also for !RT. > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 5f1c50a6bebc5..7e65e3ef16e3a 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -6057,7 +6057,6 @@ static void __build_all_zonelists(void *data) > * tty_insert_flip_string_and_push_buffer() on other CPU might be > * calling kmalloc(GFP_ATOMIC | __GFP_NOWARN) with port->lock held. > */ > - printk_deferred_enter(); That is okay. However the commit, that introduced this a992c387b4118 ("mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock") also added a local_irq_safe a little higher up and it has to go, too. The code as-is should produce warnings once it enters this path. > write_seqlock(&zonelist_update_seq); > > #ifdef CONFIG_NUMA Sebastian
On Tue, Jun 06, 2023 at 11:48:55AM +0200, Sebastian Andrzej Siewior wrote: > On 2023-05-30 16:46:28 [-0300], Luis Claudio R. Goncalves wrote: > > Hello RT-list! > Hi, > > > Support for deferred printing was removed in v5.10-rc1-rt1 by commit > > 9153e3c5cb0c9 ("printk: remove deferred printing"). > > Sorry for not getting back to earlier, where you proposed the change. No problems at all. I will create an rt-only release with the changes you mentioned and then restart testing with 5.10.181 and 5.10.182with these changes. Thank you again! Luis > > diff --git a/include/linux/printk.h b/include/linux/printk.h > > index 83c7734e98025..92e0656841128 100644 > > --- a/include/linux/printk.h > > +++ b/include/linux/printk.h > > @@ -609,7 +609,7 @@ static inline void print_hex_dump_debug(const char *prefix_str, int prefix_type, > > #define print_hex_dump_bytes(prefix_str, prefix_type, buf, len) \ > > print_hex_dump_debug(prefix_str, prefix_type, 16, 1, buf, len, true) > > > > -#ifdef CONFIG_PRINTK > > +#if defined(CONFIG_PRINTK) && !defined(CONFIG_PREEMPT_RT) > > extern void __printk_safe_enter(void); > > extern void __printk_safe_exit(void); > > This needs to go entirely. The "new" printk code does not need this safe > functions also for !RT. > > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > > index 5f1c50a6bebc5..7e65e3ef16e3a 100644 > > --- a/mm/page_alloc.c > > +++ b/mm/page_alloc.c > > @@ -6057,7 +6057,6 @@ static void __build_all_zonelists(void *data) > > * tty_insert_flip_string_and_push_buffer() on other CPU might be > > * calling kmalloc(GFP_ATOMIC | __GFP_NOWARN) with port->lock held. > > */ > > - printk_deferred_enter(); > > That is okay. However the commit, that introduced this > a992c387b4118 ("mm/page_alloc: fix potential deadlock on zonelist_update_seq seqlock") > > also added a local_irq_safe a little higher up and it has to go, too. > The code as-is should produce warnings once it enters this path. > > > write_seqlock(&zonelist_update_seq); > > > > #ifdef CONFIG_NUMA > > Sebastian > ---end quoted text---
diff --git a/include/linux/printk.h b/include/linux/printk.h index 83c7734e98025..92e0656841128 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -609,7 +609,7 @@ static inline void print_hex_dump_debug(const char *prefix_str, int prefix_type, #define print_hex_dump_bytes(prefix_str, prefix_type, buf, len) \ print_hex_dump_debug(prefix_str, prefix_type, 16, 1, buf, len, true) -#ifdef CONFIG_PRINTK +#if defined(CONFIG_PRINTK) && !defined(CONFIG_PREEMPT_RT) extern void __printk_safe_enter(void); extern void __printk_safe_exit(void); /* @@ -619,7 +619,7 @@ extern void __printk_safe_exit(void); */ #define printk_deferred_enter __printk_safe_enter #define printk_deferred_exit __printk_safe_exit -#else +#else /* defined(CONFIG_PRINTK) && !defined(CONFIG_PREEMPT_RT) */ static inline void printk_deferred_enter(void) { } diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 5f1c50a6bebc5..7e65e3ef16e3a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -6057,7 +6057,6 @@ static void __build_all_zonelists(void *data) * tty_insert_flip_string_and_push_buffer() on other CPU might be * calling kmalloc(GFP_ATOMIC | __GFP_NOWARN) with port->lock held. */ - printk_deferred_enter(); write_seqlock(&zonelist_update_seq); #ifdef CONFIG_NUMA @@ -6092,7 +6091,6 @@ static void __build_all_zonelists(void *data) } write_sequnlock(&zonelist_update_seq); - printk_deferred_exit(); local_irq_restore(flags); }