All of lore.kernel.org
 help / color / mirror / Atom feed
From: Byungchul Park <byungchul.park@lge.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Petr Mladek <pmladek@suse.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	akpm@linux-foundation.org, linux-mm@kvack.org,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Dave Hansen <dave.hansen@intel.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Mel Gorman <mgorman@suse.de>, Michal Hocko <mhocko@kernel.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	Peter Zijlstra <peterz@infradead.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Jan Kara <jack@suse.cz>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
	rostedt@rostedt.homelinux.com,
	Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
	Tejun Heo <tj@kernel.org>, Pavel Machek <pavel@ucw.cz>,
	linux-kernel@vger.kernel.org, kernel-team@lge.com
Subject: Re: [PATCH v5 1/2] printk: Add console owner and waiter logic to load balance console writes
Date: Mon, 22 Jan 2018 11:31:57 +0900	[thread overview]
Message-ID: <438c325f-eff4-960e-7c6b-56c7a4579050@lge.com> (raw)
In-Reply-To: <20180118222753.3e3932be@vmware.local.home>

On 1/19/2018 12:27 PM, Steven Rostedt wrote:
> On Fri, 19 Jan 2018 11:37:13 +0900
> Byungchul Park <byungchul.park@lge.com> wrote:
> 
>> On 1/19/2018 12:21 AM, Steven Rostedt wrote:
>>> On Thu, 18 Jan 2018 13:01:46 +0900
>>> Byungchul Park <byungchul.park@lge.com> wrote:
>>>    
>>>>> I disagree. It is like a spinlock. You can say a spinlock() that is
>>>>> blocked is also waiting for an event. That event being the owner does a
>>>>> spin_unlock().
>>>>
>>>> That's exactly what I was saying. Excuse me but, I don't understand
>>>> what you want to say. Could you explain more? What do you disagree?
>>>
>>> I guess I'm confused at what you are asking for then.
>>
>> Sorry for not enough explanation. What I asked you for is:
>>
>>      1. Relocate acquire()s/release()s.
>>      2. So make it simpler and remove unnecessary one.
>>      3. So make it look like the following form,
>>         because it's a thing simulating "wait and event".
>>
>>         A context
>>         ---------
>>         lock_map_acquire(wait); /* Or lock_map_acquire_read(wait) */
>>                                 /* "Read" one is better though..    */
> 
> why? I'm assuming you are talking about adding this to the current

It was about console_unlock()'s body that is:

+        /* The waiter may spin on us after setting console_owner */
+        spin_acquire(&console_owner_dep_map, 0, 0, _THIS_IP_);
          ^^^^^^^^^^^^
+
          stop_critical_timings();    /* don't trace print latency */
          call_console_drivers(ext_text, ext_len, text, len);
          start_critical_timings();
+
+        raw_spin_lock(&console_owner_lock);
+        waiter = READ_ONCE(console_waiter);
+        console_owner = NULL;
+        raw_spin_unlock(&console_owner_lock);
+
+        /*
+         * If there is a waiter waiting for us, then pass the
+         * rest of the work load over to that waiter.
+         */
+        if (waiter)
+            break;
+
+        /* There was no waiter, and nothing will spin on us here */
+        spin_release(&console_owner_dep_map, 1, _THIS_IP_);
          ^^^^^^^^^^^^ I recommand to move this over the "if" statament.
+
          printk_safe_exit_irqrestore(flags);
          if (do_cond_resched)
              cond_resched();
      }
+
+    /*
+     * If there is an active waiter waiting on the console_lock.
+     * Pass off the printing to the waiter, and the waiter
+     * will continue printing on its CPU, and when all writing
+     * has finished, the last printer will wake up klogd.
+     */
+    if (waiter) {
+        WRITE_ONCE(console_waiter, false);
+        /* The waiter is now free to continue */
+        spin_release(&console_owner_dep_map, 1, _THIS_IP_);
          ^^^^^^^^^^^^ I recommand to remove this.

> owner off the console_owner? This is a mutually exclusive section, no
> parallel access. Why the Read?

Not much matter whether to use the read version or not.

Let me explain it more since you asked. (I don't stongly insist to use
the read version tho.) For example:

       A context (context A)
       ---------------------
       lock_map_acquire(wait); /* Or lock_map_acquire_read(wait) */
                               /* "Read" one is better though..    */

       /* A section, we suspect a wait for the event might happen. */
       ...

       lock_map_release(wait);
       trigger the event;

       The place actually doing the wait (context B)
       ---------------------------------------------
       lock_map_acquire(wait);
       lock_map_release(wait);

       wait_for_event(wait); /* Actually do the wait */

The acquire() in context A is not a real acquisition but only for
detecting if a wait is in the section, which means that should not
interact with another pseudo acqusition but only with real waits.

lock_map_acquire_read() makes it done as we expect. That's why I
said 'read' one is better. But it's ok to use normal(write) one.
(I'm not sure if Peterz finished making the 'read' work well, tho.)

>>
>>         /* A section, we suspect a wait for an event might happen. */
>>         ...
>>
>>         lock_map_release(wait);
>>
>>         The place actually doing the wait
>>         ---------------------------------
>>         lock_map_acquire(wait);
>>         lock_map_release(wait);
>>
>>         wait_for_event(wait); /* Actually do the wait */
>>
>> Honestly, you used acquire()s/release()s as if they are cross-
>> release stuff which mainly handles general waits and events,
>> not only things doing "acquire -> critical area -> release".
>> But that's not in the mainline at the moment.
> 
> Maybe it is more like that. Because, the thing I'm doing is passing off
> a semaphore ownership to the waiter.
> 
>  From a previous email:
> 
>>> +			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();
>>> +
>>> +				spin_release(&console_owner_dep_map, 1, _THIS_IP_);
>>
>> Why don't you move this over "while (READ_ONCE(console_waiter))" and
>> right after acquire()?
>>
>> As I said last time, only acquisitions between acquire() and release()
>> are meaningful. Are you taking care of acquisitions within cpu_relax()?
>> If so, leave it.
> 
> There is no acquisitions between acquire and release. To get to
> "if (spin)" the acquire had to already been done. If it was released,
> this spinner is now the new "owner". There's no race with anyone else.
> But it doesn't technically have it till console_waiter is set to NULL.
> Why would we call release() before that? Or maybe I'm missing something.
> 
> Or are you just saying that it doesn't matter if it is before or after
> the while() loop, to just put it before? Does it really matter?

It doesn't matter. As I said, there's logically no problem on it.
Leave the code if you want to locate those that way. I just started
to mention it becasue some lines can be removed with the code a bit
fixed.

> 
> -- Steve
> 

-- 
Thanks,
Byungchul

WARNING: multiple messages have this Message-ID (diff)
From: Byungchul Park <byungchul.park@lge.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Petr Mladek <pmladek@suse.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	akpm@linux-foundation.org, linux-mm@kvack.org,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Dave Hansen <dave.hansen@intel.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Mel Gorman <mgorman@suse.de>, Michal Hocko <mhocko@kernel.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	Peter Zijlstra <peterz@infradead.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Jan Kara <jack@suse.cz>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
	rostedt@home.goodmis.org,
	Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
	Tejun Heo <tj@kernel.org>, Pavel Machek <pavel@ucw.cz>,
	linux-kernel@vger.kernel.org, kernel-team@lge.com
Subject: Re: [PATCH v5 1/2] printk: Add console owner and waiter logic to load balance console writes
Date: Mon, 22 Jan 2018 11:31:57 +0900	[thread overview]
Message-ID: <438c325f-eff4-960e-7c6b-56c7a4579050@lge.com> (raw)
In-Reply-To: <20180118222753.3e3932be@vmware.local.home>

On 1/19/2018 12:27 PM, Steven Rostedt wrote:
> On Fri, 19 Jan 2018 11:37:13 +0900
> Byungchul Park <byungchul.park@lge.com> wrote:
> 
>> On 1/19/2018 12:21 AM, Steven Rostedt wrote:
>>> On Thu, 18 Jan 2018 13:01:46 +0900
>>> Byungchul Park <byungchul.park@lge.com> wrote:
>>>    
>>>>> I disagree. It is like a spinlock. You can say a spinlock() that is
>>>>> blocked is also waiting for an event. That event being the owner does a
>>>>> spin_unlock().
>>>>
>>>> That's exactly what I was saying. Excuse me but, I don't understand
>>>> what you want to say. Could you explain more? What do you disagree?
>>>
>>> I guess I'm confused at what you are asking for then.
>>
>> Sorry for not enough explanation. What I asked you for is:
>>
>>      1. Relocate acquire()s/release()s.
>>      2. So make it simpler and remove unnecessary one.
>>      3. So make it look like the following form,
>>         because it's a thing simulating "wait and event".
>>
>>         A context
>>         ---------
>>         lock_map_acquire(wait); /* Or lock_map_acquire_read(wait) */
>>                                 /* "Read" one is better though..    */
> 
> why? I'm assuming you are talking about adding this to the current

It was about console_unlock()'s body that is:

+        /* The waiter may spin on us after setting console_owner */
+        spin_acquire(&console_owner_dep_map, 0, 0, _THIS_IP_);
          ^^^^^^^^^^^^
+
          stop_critical_timings();    /* don't trace print latency */
          call_console_drivers(ext_text, ext_len, text, len);
          start_critical_timings();
+
+        raw_spin_lock(&console_owner_lock);
+        waiter = READ_ONCE(console_waiter);
+        console_owner = NULL;
+        raw_spin_unlock(&console_owner_lock);
+
+        /*
+         * If there is a waiter waiting for us, then pass the
+         * rest of the work load over to that waiter.
+         */
+        if (waiter)
+            break;
+
+        /* There was no waiter, and nothing will spin on us here */
+        spin_release(&console_owner_dep_map, 1, _THIS_IP_);
          ^^^^^^^^^^^^ I recommand to move this over the "if" statament.
+
          printk_safe_exit_irqrestore(flags);
          if (do_cond_resched)
              cond_resched();
      }
+
+    /*
+     * If there is an active waiter waiting on the console_lock.
+     * Pass off the printing to the waiter, and the waiter
+     * will continue printing on its CPU, and when all writing
+     * has finished, the last printer will wake up klogd.
+     */
+    if (waiter) {
+        WRITE_ONCE(console_waiter, false);
+        /* The waiter is now free to continue */
+        spin_release(&console_owner_dep_map, 1, _THIS_IP_);
          ^^^^^^^^^^^^ I recommand to remove this.

> owner off the console_owner? This is a mutually exclusive section, no
> parallel access. Why the Read?

Not much matter whether to use the read version or not.

Let me explain it more since you asked. (I don't stongly insist to use
the read version tho.) For example:

       A context (context A)
       ---------------------
       lock_map_acquire(wait); /* Or lock_map_acquire_read(wait) */
                               /* "Read" one is better though..    */

       /* A section, we suspect a wait for the event might happen. */
       ...

       lock_map_release(wait);
       trigger the event;

       The place actually doing the wait (context B)
       ---------------------------------------------
       lock_map_acquire(wait);
       lock_map_release(wait);

       wait_for_event(wait); /* Actually do the wait */

The acquire() in context A is not a real acquisition but only for
detecting if a wait is in the section, which means that should not
interact with another pseudo acqusition but only with real waits.

lock_map_acquire_read() makes it done as we expect. That's why I
said 'read' one is better. But it's ok to use normal(write) one.
(I'm not sure if Peterz finished making the 'read' work well, tho.)

>>
>>         /* A section, we suspect a wait for an event might happen. */
>>         ...
>>
>>         lock_map_release(wait);
>>
>>         The place actually doing the wait
>>         ---------------------------------
>>         lock_map_acquire(wait);
>>         lock_map_release(wait);
>>
>>         wait_for_event(wait); /* Actually do the wait */
>>
>> Honestly, you used acquire()s/release()s as if they are cross-
>> release stuff which mainly handles general waits and events,
>> not only things doing "acquire -> critical area -> release".
>> But that's not in the mainline at the moment.
> 
> Maybe it is more like that. Because, the thing I'm doing is passing off
> a semaphore ownership to the waiter.
> 
>  From a previous email:
> 
>>> +			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();
>>> +
>>> +				spin_release(&console_owner_dep_map, 1, _THIS_IP_);
>>
>> Why don't you move this over "while (READ_ONCE(console_waiter))" and
>> right after acquire()?
>>
>> As I said last time, only acquisitions between acquire() and release()
>> are meaningful. Are you taking care of acquisitions within cpu_relax()?
>> If so, leave it.
> 
> There is no acquisitions between acquire and release. To get to
> "if (spin)" the acquire had to already been done. If it was released,
> this spinner is now the new "owner". There's no race with anyone else.
> But it doesn't technically have it till console_waiter is set to NULL.
> Why would we call release() before that? Or maybe I'm missing something.
> 
> Or are you just saying that it doesn't matter if it is before or after
> the while() loop, to just put it before? Does it really matter?

It doesn't matter. As I said, there's logically no problem on it.
Leave the code if you want to locate those that way. I just started
to mention it becasue some lines can be removed with the code a bit
fixed.

> 
> -- Steve
> 

-- 
Thanks,
Byungchul

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2018-01-22  2:32 UTC|newest]

Thread overview: 280+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-10 13:24 [PATCH v5 0/2] printk: Console owner and waiter logic cleanup Petr Mladek
2018-01-10 13:24 ` Petr Mladek
2018-01-10 13:24 ` [PATCH v5 1/2] printk: Add console owner and waiter logic to load balance console writes Petr Mladek
2018-01-10 13:24   ` Petr Mladek
2018-01-10 16:50   ` Steven Rostedt
2018-01-10 16:50     ` Steven Rostedt
2018-01-12 16:54   ` Steven Rostedt
2018-01-12 16:54     ` Steven Rostedt
2018-01-12 17:11     ` Steven Rostedt
2018-01-12 17:11       ` Steven Rostedt
2018-01-17 19:13       ` Rasmus Villemoes
2018-01-17 19:13         ` Rasmus Villemoes
2018-01-17 19:33         ` Steven Rostedt
2018-01-17 19:33           ` Steven Rostedt
2018-01-19  9:51         ` Sergey Senozhatsky
2018-01-19  9:51           ` Sergey Senozhatsky
2018-01-18 22:03     ` Pavel Machek
2018-01-18 22:03       ` Pavel Machek
2018-01-19  0:20       ` Steven Rostedt
2018-01-19  0:20         ` Steven Rostedt
2018-01-17  2:19   ` Byungchul Park
2018-01-17  2:19     ` Byungchul Park
2018-01-17  4:54     ` Byungchul Park
2018-01-17  4:54       ` Byungchul Park
2018-01-17  7:34     ` Byungchul Park
2018-01-17  7:34       ` Byungchul Park
2018-01-17 12:04     ` Petr Mladek
2018-01-17 12:04       ` Petr Mladek
2018-01-18  1:53       ` Byungchul Park
2018-01-18  1:53         ` Byungchul Park
2018-01-18  1:57         ` Byungchul Park
2018-01-18  1:57           ` Byungchul Park
2018-01-18  2:19         ` Steven Rostedt
2018-01-18  2:19           ` Steven Rostedt
2018-01-18  4:01           ` Byungchul Park
2018-01-18  4:01             ` Byungchul Park
2018-01-18 15:21             ` Steven Rostedt
2018-01-18 15:21               ` Steven Rostedt
2018-01-19  2:37               ` Byungchul Park
2018-01-19  2:37                 ` Byungchul Park
2018-01-19  3:27                 ` Steven Rostedt
2018-01-19  3:27                   ` Steven Rostedt
2018-01-22  2:31                   ` Byungchul Park [this message]
2018-01-22  2:31                     ` Byungchul Park
2018-01-10 13:24 ` [PATCH v5 2/2] printk: Hide console waiter logic into helpers Petr Mladek
2018-01-10 13:24   ` Petr Mladek
2018-01-10 17:52   ` Steven Rostedt
2018-01-10 17:52     ` Steven Rostedt
2018-01-11 12:03     ` Petr Mladek
2018-01-11 12:03       ` Petr Mladek
2018-01-12 15:37       ` Steven Rostedt
2018-01-12 15:37         ` Steven Rostedt
2018-01-12 16:08         ` Petr Mladek
2018-01-12 16:08           ` Petr Mladek
2018-01-12 16:36           ` Steven Rostedt
2018-01-12 16:36             ` Steven Rostedt
2018-01-15 16:08             ` Petr Mladek
2018-01-15 16:08               ` Petr Mladek
2018-01-16  5:05               ` Sergey Senozhatsky
2018-01-16  5:05                 ` Sergey Senozhatsky
2018-01-10 14:05 ` [PATCH v5 0/2] printk: Console owner and waiter logic cleanup Tejun Heo
2018-01-10 14:05   ` Tejun Heo
2018-01-10 16:29   ` Petr Mladek
2018-01-10 16:29     ` Petr Mladek
2018-01-10 17:02     ` Tejun Heo
2018-01-10 17:02       ` Tejun Heo
2018-01-10 18:21       ` Peter Zijlstra
2018-01-10 18:21         ` Peter Zijlstra
2018-01-10 18:30         ` Tejun Heo
2018-01-10 18:30           ` Tejun Heo
2018-01-10 18:41           ` Peter Zijlstra
2018-01-10 18:41             ` Peter Zijlstra
2018-01-10 19:05             ` Tejun Heo
2018-01-10 19:05               ` Tejun Heo
2018-01-11  5:15         ` Sergey Senozhatsky
2018-01-11  5:15           ` Sergey Senozhatsky
2018-01-10 18:22       ` Steven Rostedt
2018-01-10 18:22         ` Steven Rostedt
2018-01-10 18:36         ` Tejun Heo
2018-01-10 18:36           ` Tejun Heo
2018-01-10 18:40       ` Mathieu Desnoyers
2018-01-10 18:40         ` Mathieu Desnoyers
2018-01-11  7:36         ` Sergey Senozhatsky
2018-01-11  7:36           ` Sergey Senozhatsky
2018-01-11 11:24           ` Petr Mladek
2018-01-11 11:24             ` Petr Mladek
2018-01-11 13:19             ` Sergey Senozhatsky
2018-01-11 13:19               ` Sergey Senozhatsky
2018-01-24  9:36       ` Peter Zijlstra
2018-01-24  9:36         ` Peter Zijlstra
2018-01-24 18:46         ` Tejun Heo
2018-01-24 18:46           ` Tejun Heo
2018-05-09  8:58       ` Sergey Senozhatsky
2018-05-09  8:58         ` Sergey Senozhatsky
2018-01-10 18:54     ` Steven Rostedt
2018-01-10 18:54       ` Steven Rostedt
2018-01-11  5:10     ` Sergey Senozhatsky
2018-01-11  5:10       ` Sergey Senozhatsky
2018-01-10 18:05   ` Steven Rostedt
2018-01-10 18:05     ` Steven Rostedt
2018-01-10 18:12     ` Tejun Heo
2018-01-10 18:12       ` Tejun Heo
2018-01-10 18:14       ` Tejun Heo
2018-01-10 18:14         ` Tejun Heo
2018-01-10 18:45         ` Steven Rostedt
2018-01-10 18:45           ` Steven Rostedt
2018-01-10 18:41       ` Steven Rostedt
2018-01-10 18:41         ` Steven Rostedt
2018-01-10 18:57         ` Tejun Heo
2018-01-10 18:57           ` Tejun Heo
2018-01-10 19:17           ` Steven Rostedt
2018-01-10 19:17             ` Steven Rostedt
2018-01-10 19:34             ` Tejun Heo
2018-01-10 19:34               ` Tejun Heo
2018-01-10 19:44               ` Steven Rostedt
2018-01-10 19:44                 ` Steven Rostedt
2018-01-10 22:44                 ` Tejun Heo
2018-01-10 22:44                   ` Tejun Heo
2018-01-11  5:35             ` Sergey Senozhatsky
2018-01-11  5:35               ` Sergey Senozhatsky
2018-01-11  4:58     ` Sergey Senozhatsky
2018-01-11  4:58       ` Sergey Senozhatsky
2018-01-11  9:34       ` Petr Mladek
2018-01-11  9:34         ` Petr Mladek
2018-01-11 10:38         ` Sergey Senozhatsky
2018-01-11 10:38           ` Sergey Senozhatsky
2018-01-11 11:50           ` Petr Mladek
2018-01-11 11:50             ` Petr Mladek
2018-01-11 16:29           ` Steven Rostedt
2018-01-11 16:29             ` Steven Rostedt
2018-01-12  1:30             ` Steven Rostedt
2018-01-12  1:30               ` Steven Rostedt
2018-01-12  2:55               ` Steven Rostedt
2018-01-12  2:55                 ` Steven Rostedt
2018-01-12  4:20                 ` Steven Rostedt
2018-01-12  4:20                   ` Steven Rostedt
2018-01-16 19:44                 ` Tejun Heo
2018-01-16 19:44                   ` Tejun Heo
2018-01-17  9:12                   ` Petr Mladek
2018-01-17  9:12                     ` Petr Mladek
2018-01-17 15:15                     ` Tejun Heo
2018-01-17 15:15                       ` Tejun Heo
2018-01-17 17:12                       ` Steven Rostedt
2018-01-17 17:12                         ` Steven Rostedt
2018-01-17 18:42                         ` Steven Rostedt
2018-01-17 18:42                           ` Steven Rostedt
2018-01-19 18:20                           ` Steven Rostedt
2018-01-19 18:20                             ` Steven Rostedt
2018-01-20  7:14                             ` Sergey Senozhatsky
2018-01-20  7:14                               ` Sergey Senozhatsky
2018-01-20 15:49                               ` Steven Rostedt
2018-01-20 15:49                                 ` Steven Rostedt
2018-01-21 14:15                                 ` Sergey Senozhatsky
2018-01-21 14:15                                   ` Sergey Senozhatsky
2018-01-21 21:04                                   ` Steven Rostedt
2018-01-21 21:04                                     ` Steven Rostedt
2018-01-22  8:56                                     ` Sergey Senozhatsky
2018-01-22  8:56                                       ` Sergey Senozhatsky
2018-01-22 10:28                                       ` Sergey Senozhatsky
2018-01-22 10:28                                         ` Sergey Senozhatsky
2018-01-22 10:36                                         ` Sergey Senozhatsky
2018-01-22 10:36                                           ` Sergey Senozhatsky
2018-01-23  6:40                                   ` Sergey Senozhatsky
2018-01-23  6:40                                     ` Sergey Senozhatsky
2018-01-23  7:05                                     ` Sergey Senozhatsky
2018-01-23  7:05                                       ` Sergey Senozhatsky
2018-01-23  7:31                                     ` Sergey Senozhatsky
2018-01-23  7:31                                       ` Sergey Senozhatsky
2018-01-23 14:56                                     ` Steven Rostedt
2018-01-23 14:56                                       ` Steven Rostedt
2018-01-23 15:21                                       ` Sergey Senozhatsky
2018-01-23 15:21                                         ` Sergey Senozhatsky
2018-01-23 15:41                                         ` Steven Rostedt
2018-01-23 15:41                                           ` Steven Rostedt
2018-01-23 15:43                                           ` Tejun Heo
2018-01-23 15:43                                             ` Tejun Heo
2018-01-23 16:12                                             ` Sergey Senozhatsky
2018-01-23 16:12                                               ` Sergey Senozhatsky
2018-01-23 16:13                                             ` Steven Rostedt
2018-01-23 16:13                                               ` Steven Rostedt
2018-01-23 17:21                                               ` Tejun Heo
2018-01-23 17:21                                                 ` Tejun Heo
2018-04-23  5:35                                             ` Sergey Senozhatsky
2018-04-23  5:35                                               ` Sergey Senozhatsky
2018-01-23 16:01                                           ` Sergey Senozhatsky
2018-01-23 16:01                                             ` Sergey Senozhatsky
2018-01-23 16:24                                             ` Steven Rostedt
2018-01-23 16:24                                               ` Steven Rostedt
2018-01-24  2:11                                               ` Sergey Senozhatsky
2018-01-24  2:11                                                 ` Sergey Senozhatsky
2018-01-24  2:52                                                 ` Steven Rostedt
2018-01-24  2:52                                                   ` Steven Rostedt
2018-01-24  4:44                                                   ` Sergey Senozhatsky
2018-01-24  4:44                                                     ` Sergey Senozhatsky
2018-01-23 17:22                                             ` Tejun Heo
2018-01-23 17:22                                               ` Tejun Heo
2018-01-20 12:19                             ` Tejun Heo
2018-01-20 12:19                               ` Tejun Heo
2018-01-20 14:51                               ` Steven Rostedt
2018-01-20 14:51                                 ` Steven Rostedt
2018-01-17 20:05                         ` Tejun Heo
2018-01-17 20:05                           ` Tejun Heo
2018-01-18  5:43                           ` Sergey Senozhatsky
2018-01-18  5:43                             ` Sergey Senozhatsky
2018-01-18 11:51                           ` Petr Mladek
2018-01-18 11:51                             ` Petr Mladek
2018-01-18  5:42                         ` Sergey Senozhatsky
2018-01-18  5:42                           ` Sergey Senozhatsky
2018-01-12  3:12               ` Sergey Senozhatsky
2018-01-12  3:12                 ` Sergey Senozhatsky
2018-01-12  2:56             ` Sergey Senozhatsky
2018-01-12  2:56               ` Sergey Senozhatsky
2018-01-12  3:21               ` Steven Rostedt
2018-01-12  3:21                 ` Steven Rostedt
2018-01-12 10:05                 ` Sergey Senozhatsky
2018-01-12 10:05                   ` Sergey Senozhatsky
2018-01-12 12:21                   ` Steven Rostedt
2018-01-12 12:21                     ` Steven Rostedt
2018-01-12 12:55                     ` Petr Mladek
2018-01-12 12:55                       ` Petr Mladek
2018-01-13  7:31                       ` Sergey Senozhatsky
2018-01-13  7:31                         ` Sergey Senozhatsky
2018-01-15  8:51                         ` Petr Mladek
2018-01-15  8:51                           ` Petr Mladek
2018-01-15  9:48                           ` Sergey Senozhatsky
2018-01-15  9:48                             ` Sergey Senozhatsky
2018-01-16  5:16                           ` Sergey Senozhatsky
2018-01-16  5:16                             ` Sergey Senozhatsky
2018-01-16  9:08                             ` Petr Mladek
2018-01-16  9:08                               ` Petr Mladek
2018-01-15 12:08                       ` Steven Rostedt
2018-01-15 12:08                         ` Steven Rostedt
2018-01-16  4:51                         ` Sergey Senozhatsky
2018-01-16  4:51                           ` Sergey Senozhatsky
2018-01-13  7:28                     ` Sergey Senozhatsky
2018-01-13  7:28                       ` Sergey Senozhatsky
2018-01-15 10:17                       ` Petr Mladek
2018-01-15 10:17                         ` Petr Mladek
2018-01-15 11:50                         ` Petr Mladek
2018-01-15 11:50                           ` Petr Mladek
2018-01-16  6:10                           ` Sergey Senozhatsky
2018-01-16  6:10                             ` Sergey Senozhatsky
2018-01-16  9:36                             ` Petr Mladek
2018-01-16  9:36                               ` Petr Mladek
2018-01-16 10:10                               ` Sergey Senozhatsky
2018-01-16 10:10                                 ` Sergey Senozhatsky
2018-01-16 16:06                             ` Steven Rostedt
2018-01-16 16:06                               ` Steven Rostedt
2018-01-16  5:23                         ` Sergey Senozhatsky
2018-01-16  5:23                           ` Sergey Senozhatsky
2018-01-15 12:06                       ` Steven Rostedt
2018-01-15 12:06                         ` Steven Rostedt
2018-01-15 14:45                         ` Petr Mladek
2018-01-15 14:45                           ` Petr Mladek
2018-01-16  2:23                           ` Sergey Senozhatsky
2018-01-16  2:23                             ` Sergey Senozhatsky
2018-01-16  4:47                             ` Sergey Senozhatsky
2018-01-16  4:47                               ` Sergey Senozhatsky
2018-01-16 10:19                               ` Petr Mladek
2018-01-16 10:19                                 ` Petr Mladek
2018-01-17  2:24                                 ` Sergey Senozhatsky
2018-01-17  2:24                                   ` Sergey Senozhatsky
2018-01-16 15:45                               ` Steven Rostedt
2018-01-16 15:45                                 ` Steven Rostedt
2018-01-17  2:18                                 ` Sergey Senozhatsky
2018-01-17  2:18                                   ` Sergey Senozhatsky
2018-01-17 13:04                                   ` Petr Mladek
2018-01-17 13:04                                     ` Petr Mladek
2018-01-17 15:24                                     ` Steven Rostedt
2018-01-17 15:24                                       ` Steven Rostedt
2018-01-18  4:31                                     ` Sergey Senozhatsky
2018-01-18  4:31                                       ` Sergey Senozhatsky
2018-01-18 15:22                                       ` Steven Rostedt
2018-01-18 15:22                                         ` Steven Rostedt
2018-01-16 10:13                             ` Petr Mladek
2018-01-16 10:13                               ` Petr Mladek
2018-01-17  6:29                               ` Sergey Senozhatsky
2018-01-17  6:29                                 ` Sergey Senozhatsky
2018-01-16  1:46                         ` Sergey Senozhatsky
2018-01-16  1:46                           ` Sergey Senozhatsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=438c325f-eff4-960e-7c6b-56c7a4579050@lge.com \
    --to=byungchul.park@lge.com \
    --cc=akpm@linux-foundation.org \
    --cc=dave.hansen@intel.com \
    --cc=hannes@cmpxchg.org \
    --cc=jack@suse.cz \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mgorman@suse.de \
    --cc=mhocko@kernel.org \
    --cc=pavel@ucw.cz \
    --cc=penguin-kernel@I-love.SAKURA.ne.jp \
    --cc=peterz@infradead.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=rostedt@rostedt.homelinux.com \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=tj@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=vbabka@suse.cz \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.