Subject: [ANNOUNCE] 5.10.180-rt88

Hello RT-list!

I'm pleased to announce the 5.10.180-rt88 stable release.

This release is an update to the new stable 5.10.180 version, with one
RT-specific change required to fix a build error due to the lack of
support for deferred printing in v5.10-rt.

Support for deferred printing was removed in v5.10-rc1-rt1 by commit
9153e3c5cb0c9 ("printk: remove deferred printing").

You can get this release via the git tree at:

git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git

branch: v5.10-rt
Head SHA1: 442a576e3b9afa5272c3d0a996a0d1a260f259b8

Or to build 5.10.180-rt88 directly, the following patches should be applied:

https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.tar.xz

https://www.kernel.org/pub/linux/kernel/v5.x/patch-5.10.180.xz

https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patch-5.10.180-rt88.patch.xz

Signing key fingerprint:

9354 0649 9972 8D31 D464 D140 F394 A423 F8E6 7C26

All keys used for the above files and repositories can be found on the
following git repository:

git://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git

Enjoy!
Luis
---
include/linux/printk.h | 4 ++--
mm/page_alloc.c | 2 --
2 files changed, 2 insertions(+), 4 deletions(-)

---
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);
}

--
2.40.1



Subject: Re: [ANNOUNCE] 5.10.180-rt88

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

Subject: Re: [ANNOUNCE] 5.10.180-rt88

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---