2020-05-21 01:54:33

by Yi Wang

[permalink] [raw]
Subject: [PATCH] [PATCH]Fixed: line break of pr_cont not take effect in linux-rt

From: 汪勇10269566 <[email protected]>

Line break of pr_cont not take effect.
Use several pr_cont to print continuous paragraph, it is expected to
have line break when line ends up with '\n', however the paragraph
does not have line break
-printk_kthread_func will not print info before log_store insert msg
into printk_rb, and pr_cont calls cont_add to keep data in buffer.
cont_add only when the following conditions are met insert msg to
printk_rb
1.cpu != c->cpu_owner || !(flags & LOG_CONT)
2.c->len + len > sizeof(c->buf)

Signed-off-by: 汪勇10269566 <[email protected]>
---
kernel/printk/printk.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 0605a74..d898f50 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -1871,6 +1871,7 @@ static void cont_add(int ctx, int cpu, u32 caller_id, int facility, int level,
// but later continuations can add a newline.
if (flags & LOG_NEWLINE) {
c->flags |= LOG_NEWLINE;
+ cont_flush(ctx);
}
}

--
2.15.2


2020-05-22 10:17:53

by Petr Mladek

[permalink] [raw]
Subject: Re: [PATCH] [PATCH]Fixed: line break of pr_cont not take effect in linux-rt

On Thu 2020-05-21 09:37:44, root wrote:
> From: 汪勇10269566 <[email protected]>
>
> Line break of pr_cont not take effect.
> Use several pr_cont to print continuous paragraph, it is expected to
> have line break when line ends up with '\n', however the paragraph
> does not have line break
> -printk_kthread_func will not print info before log_store insert msg
> into printk_rb, and pr_cont calls cont_add to keep data in buffer.
> cont_add only when the following conditions are met insert msg to
> printk_rb
> 1.cpu != c->cpu_owner || !(flags & LOG_CONT)
> 2.c->len + len > sizeof(c->buf)
>
> Signed-off-by: 汪勇10269566 <[email protected]>
> ---
> kernel/printk/printk.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> index 0605a74..d898f50 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1871,6 +1871,7 @@ static void cont_add(int ctx, int cpu, u32 caller_id, int facility, int level,
> // but later continuations can add a newline.
> if (flags & LOG_NEWLINE) {
> c->flags |= LOG_NEWLINE;
> + cont_flush(ctx);

What kernel sources is this patch against, please?

The console_flush() call is in the current Linus' tree. It does not
have any parameter there. And there is no printk_kthread_func.

Is this against RT patchset?

Best Regards,
Petr