From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935458AbdCVPne (ORCPT ); Wed, 22 Mar 2017 11:43:34 -0400 Received: from mx2.suse.de ([195.135.220.15]:59305 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759825AbdCVPna (ORCPT ); Wed, 22 Mar 2017 11:43:30 -0400 Date: Wed, 22 Mar 2017 16:43:27 +0100 From: Petr Mladek To: Sergey Senozhatsky Cc: Steven Rostedt , Andrew Morton , Linus Torvalds , Peter Zijlstra , "Rafael J . Wysocki" , linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: Re: [RFC][PATCH 4/4] printk: enable printk offloading Message-ID: <20170322154327.GD4008@pathway.suse.cz> References: <20170306124554.828-1-sergey.senozhatsky@gmail.com> <20170306124554.828-5-sergey.senozhatsky@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170306124554.828-5-sergey.senozhatsky@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon 2017-03-06 21:45:54, Sergey Senozhatsky wrote: > Initialize the kernel printing thread and enable printk() > offloading. The patch looks fine to me. But it might get more complicated if we decide to have a global option to avoid the kthread. Let's discuss this in the 3rd patch first. Best Regards, Petr > Signed-off-by: Sergey Senozhatsky > --- > kernel/printk/printk.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > index 6e00073a7331..601a9ef6db89 100644 > --- a/kernel/printk/printk.c > +++ b/kernel/printk/printk.c > @@ -2779,6 +2779,25 @@ static int printk_kthread_func(void *data) > return 0; > } > > +/* > + * Init printk kthread at late_initcall stage, after core/arch/device/etc. > + * initialization. > + */ > +static int __init init_printk_kthread(void) > +{ > + struct task_struct *thread; > + > + thread = kthread_run(printk_kthread_func, NULL, "printk"); > + if (IS_ERR(thread)) { > + pr_err("printk: unable to create printing thread\n"); > + return PTR_ERR(thread); > + } > + > + printk_kthread = thread; > + return 0; > +} > +late_initcall(init_printk_kthread); > + > void wake_up_klogd(void) > { > preempt_disable(); > -- > 2.12.0 >