Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932348AbVK2Dm1 (ORCPT ); Mon, 28 Nov 2005 22:42:27 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932356AbVK2Dm0 (ORCPT ); Mon, 28 Nov 2005 22:42:26 -0500 Received: from ms-smtp-03.nyroc.rr.com ([24.24.2.57]:15084 "EHLO ms-smtp-03.nyroc.rr.com") by vger.kernel.org with ESMTP id S932348AbVK2Dm0 (ORCPT ); Mon, 28 Nov 2005 22:42:26 -0500 Subject: Re: [RFC][PATCH] Runtime switching of the idle function [take 2] From: Steven Rostedt To: Andrew Morton Cc: mingo@elte.hu, acpi-devel@lists.sourceforge.net, len.brown@intel.com, nando@ccrma.Stanford.EDU, rlrevell@joe-job.com, linux-kernel@vger.kernel.org, paulmck@us.ibm.com, kr@cybsft.com, tglx@linutronix.de, pluto@agmk.net, john.cooper@timesys.com, bene@linutronix.de, dwalker@mvista.com, trini@kernel.crashing.org, george@mvista.com In-Reply-To: <20051128190253.1b7068d6.akpm@osdl.org> References: <20051115090827.GA20411@elte.hu> <1132336954.20672.11.camel@cmn3.stanford.edu> <1132350882.6874.23.camel@mindpipe> <1132351533.4735.37.camel@cmn3.stanford.edu> <20051118220755.GA3029@elte.hu> <1132353689.4735.43.camel@cmn3.stanford.edu> <1132367947.5706.11.camel@localhost.localdomain> <20051124150731.GD2717@elte.hu> <1132952191.24417.14.camel@localhost.localdomain> <20051126130548.GA6503@elte.hu> <1133232503.6328.18.camel@localhost.localdomain> <20051128190253.1b7068d6.akpm@osdl.org> Content-Type: text/plain Date: Mon, 28 Nov 2005 22:42:20 -0500 Message-Id: <1133235740.6328.27.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.2.3 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2442 Lines: 83 On Mon, 2005-11-28 at 19:02 -0800, Andrew Morton wrote: > Steven Rostedt wrote: > > > > This patch creates a directory in /sys/kernel called idle. > > > > At no point do you appear to explain _why_ the kernel needs this feature? Sorry about that. This originally came up when we had problems with the AMD64 x2 in the -rt patch. It was noted that the TSCs would get very far out of sync and cause problems. The way to solve this was to set idle=poll. The original patch I sent was to allow the user to change to idle=poll dynamically. This way they could switch to the poll_idle and run there tests (requiring tsc not to drift) and then switch back to the default idle to save on electricity. Note: It's been stated that the tsc drift can cause problems with the vanilla kernel too. Ingo asked if I could make this more robust and not dependent on idle_poll. Maybe Ingo can give a better explanation? > > > ... > > - pm_idle = pm_idle_save; > > + int tries = 0; > > + int ret; > > + set_idle(NULL); > > + do { > > + if ((ret = unregister_idle(PM_IDLE_NAME)) == 0) > > + break; > > + /* > > + * for some reason the idle function is being used. > > + * Wait a little and then try again. > > + */ > > + if (ret == -EINVAL) { > > + printk(KERN_WARNING > > + "ACPI idle function never registered?\n"); > > + break; > > + } > > + yield(); > > + } while (tries++ < 10); > > The use of yield() could be problematic - its semantics are rather > ill-defined. Maybe msleep(1) or something? > > What's this loop here for anyway? Looks kludgy. Oops! That was required by some other garbage that I had earlier. I cleaned up the patch some more, and this is no longer required. (will remove). > > > + if (tries > 10) { > > + printk(KERN_WARNING > > + "Unable to unresgister ACPI idle function\n"); > > tpyo Will fix. > > > + memset(&idle_kobj, 0, sizeof(idle_kobj)); > > There are several memsets of statically allocated structures which are > already all-zero. > :) I'm really paranoid! OK, I always like to do a memset even when it's not needed. I'll purge them too. Thanks for having a look. -- Steve - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/