From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <4F217585.2070302@msgid.tls.msk.ru> Date: Thu, 26 Jan 2012 19:47:17 +0400 From: Michael Tokarev MIME-Version: 1.0 To: "Kirill A. Shutemov" CC: Greg KH , linux-kernel@vger.kernel.org, stable@vger.kernel.org, torvalds@linux-foundation.org, akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, Thomas Renninger , Bruno Friedmann , Len Brown Subject: Re: [67/90] intel idle: Make idle driver more robust References: <20120123234211.GA19504@kroah.com> <20120123234028.628058547@clark.kroah.org> <20120126144533.GA1731@shutemov.name> In-Reply-To: <20120126144533.GA1731@shutemov.name> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: 26.01.2012 18:45, Kirill A. Shutemov wrote: >> From: Thomas Renninger >> >> commit 5c2a9f06a9cd7194f884cdc88144866235dec07d upstream. >> >> kvm -cpu host passes the original cpuid info to the guest. >> >> Latest kvm version seem to return true for mwait_leaf cpuid >> function on recent Intel CPUs. But it does not return mwait >> C-states (mwait_substates), instead zero is returned. >> [] >> drivers/idle/intel_idle.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> --- a/drivers/idle/intel_idle.c >> +++ b/drivers/idle/intel_idle.c >> @@ -321,7 +321,8 @@ static int intel_idle_probe(void) >> cpuid(CPUID_MWAIT_LEAF,&eax,&ebx,&ecx,&mwait_substates); >> >> if (!(ecx& CPUID5_ECX_EXTENSIONS_SUPPORTED) || >> - !(ecx& CPUID5_ECX_INTERRUPT_BREAK)) >> + !(ecx& CPUID5_ECX_INTERRUPT_BREAK) || >> + !mwait_substates) >> return -ENODEV; > > It breaks build for me. [] > CC drivers/idle/intel_idle.o > /home/space/kas/git/public/linux-3.0-mid/drivers/idle/intel_idle.c: In function ‘intel_idle_probe’: > /home/space/kas/git/public/linux-3.0-mid/drivers/idle/intel_idle.c:508:7: error: ‘mwait_substates’ undeclared (first use in this function) > /home/space/kas/git/public/linux-3.0-mid/drivers/idle/intel_idle.c:508:7: note: each undeclared identifier is reported only once for each function it appears in > make[3]: *** [drivers/idle/intel_idle.o] Error 1 > > Variable 'substates' hasn't renamed to 'mwait_substates' in 3.0. > See c423628 intel_idle: delete substates DEBUG modparam I wonder why in my 3.0.18 this variable is properly defined in the same file, in line 77: ... 74 /* intel_idle.max_cstate=0 disables driver */ 75 static int max_cstate = MWAIT_MAX_NUM_CSTATES - 1; 76 77 static unsigned int mwait_substates; 78 79 #define LAPIC_TIMER_ALWAYS_RELIABLE 0xFFFFFFFF ... > Signed-off-by: Kirill A. Shutemov > --- > drivers/idle/intel_idle.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c > index 15d72ca..a1aecc3 100644 > --- a/drivers/idle/intel_idle.c > +++ b/drivers/idle/intel_idle.c > @@ -505,7 +505,7 @@ static int intel_idle_probe(void) > > if (!(ecx& CPUID5_ECX_EXTENSIONS_SUPPORTED) || > !(ecx& CPUID5_ECX_INTERRUPT_BREAK) || > - !mwait_substates) > + !substates) With this patch my build of 3.0.18 fails with "substates undeclared" message... > > if (substates == 0) /* can over-ride via modparam */ And I don't have this context line in my version. It is 3.0 from kernel.org patched by patch-3.0.18.xz Thanks, /mjt