From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755751AbdDMAkH (ORCPT ); Wed, 12 Apr 2017 20:40:07 -0400 Received: from mail.kernel.org ([198.145.29.136]:51596 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755521AbdDMAkE (ORCPT ); Wed, 12 Apr 2017 20:40:04 -0400 Date: Wed, 12 Apr 2017 20:40:00 -0400 From: Steven Rostedt To: "Paul E. McKenney" Cc: Peter Zijlstra , LKML , Ingo Molnar , Andrew Morton , Thomas Gleixner Subject: Re: [PATCH v2] sched: Have do_idle() call __schedule() without enabling preemption Message-ID: <20170412204000.3c6893eb@gandalf.local.home> In-Reply-To: <20170412234859.GQ3956@linux.vnet.ibm.com> References: <20170412142744.6ff07236@gandalf.local.home> <20170412234859.GQ3956@linux.vnet.ibm.com> X-Mailer: Claws Mail 3.14.0 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 12 Apr 2017 16:48:59 -0700 "Paul E. McKenney" wrote: > > I don't understand why schedule_idle() needs a loop given that > schedule_preempt_disabled() doesn't have one, but other than But it does: void __sched schedule_preempt_disabled(void) { sched_preempt_enable_no_resched(); schedule(); preempt_disable(); } Where we have: asmlinkage __visible void __sched schedule(void) { struct task_struct *tsk = current; sched_submit_work(tsk); do { preempt_disable(); __schedule(false); sched_preempt_enable_no_resched(); } while (need_resched()); } Which makes: void __sched schedule_preempt_disabled(void) { struct task_struct *tsk = current; scehdule_preempt_enable_no_resched(); sched_submit_work(tsk); do { preempt_disable(); __schedule(false); schedule_preempt_enable_no_resched(); } while (need_resched()); preempt_disable(); } My schedule_idle() is simply schedule_preempt_disabled() without the change in preemption and no call to sched_submit_work(). > that, for whatever it is worth, it looks good to me. > Does this mean I can change the Cc: to Acked-by: ? -- Steve > > +void __sched schedule_idle(void) > > +{ > > + do { > > + __schedule(false); > > + } while (need_resched()); > > +} > > +