[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20171103071824.1cf629ee@vmware.local.home>
Date: Fri, 3 Nov 2017 07:18:24 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: Jan Kara <jack@...e.cz>
Cc: Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>,
akpm@...ux-foundation.org, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, Cong Wang <xiyou.wangcong@...il.com>,
Dave Hansen <dave.hansen@...el.com>,
Johannes Weiner <hannes@...xchg.org>,
Mel Gorman <mgorman@...e.de>, Michal Hocko <mhocko@...nel.org>,
Petr Mladek <pmladek@...e.com>,
Sergey Senozhatsky <sergey.senozhatsky@...il.com>,
Vlastimil Babka <vbabka@...e.cz>,
"yuwang.yuwang" <yuwang.yuwang@...baba-inc.com>,
Peter Zijlstra <peterz@...radead.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
Subject: Re: [PATCH v2] printk: Add console owner and waiter logic to load
balance console writes
On Fri, 3 Nov 2017 11:19:53 +0100
Jan Kara <jack@...e.cz> wrote:
> Hi,
>
> On Thu 02-11-17 13:06:05, Steven Rostedt wrote:
> > + if (spin) {
> > + /* We spin waiting for the owner to release us */
> > + spin_acquire(&console_owner_dep_map, 0, 0, _THIS_IP_);
> > + /* Owner will clear console_waiter on hand off */
> > + while (!READ_ONCE(console_waiter))
> > + cpu_relax();
>
> Hum, what prevents us from rescheduling here? And what if the process
> stored in console_owner is scheduled out? Both seem to be possible with
> CONFIG_PREEMPT kernel? Unless I'm missing something you will need to
> disable preemption in some places...
Yes you are missing something ;-)
>
> Other than that I like the simplicity of your approach.
>
> Honza
>
> > +
> > + spin_release(&console_owner_dep_map, 1, _THIS_IP_);
> > + printk_safe_exit_irqrestore(flags);
The above line re-enables interrupts. And is done for both the
console_owner and the console_waiter. These are only held with
interrupts disabled. Nothing will preempt it. In fact, if it could,
lockdep would complain (it did in when I screwed it up at first ;-)
-- Steve
Powered by blists - more mailing lists