Wrong real CPU frequency (Core i5 processor)

The issue is fixed!

In the BIOS setup, I set the CPU profile to “balanced” even when running on AC power (the default value was “performance”). I feel like I have already tested this BIOS setup, but with the Linux kernel 3.1.0 and without it solve the problem, and as a result I set the default value again. Maybe a 3.1.0 kernel bug? Anyway thank you it’s great! Temperature is now always under 50° when idle. :slight_smile:

On Mon, 05 Dec 2011 09:16:03 +0000, artopage wrote:

> The issue is fixed!
>
> In the BIOS setup, I set the CPU profile to “balanced” even when running
> on AC power (the default value was “performance”). I feel like I have
> already tested this BIOS setup, but with the Linux kernel 3.1.0 and
> without it solve the problem, and as a result I set the default value
> again. Maybe a 3.1.0 kernel bug? Anyway thank you it’s great!
> Temperature is now always under 50° when idle. :slight_smile:

Glad to hear you got it resolved - you might report upstream to the Linux
Kernel folks and see if they think this is a kernel issue.

Jim

Jim Henderson
openSUSE Forums Administrator
Forum Use Terms & Conditions at http://tinyurl.com/openSUSE-T-C

I declared victory too soon.

In fact yesterday I spent a day with a CPU locked at 800 MHz. The contents of /sys/devices/system/cpu/cpu0/cpufreq/bios_limit was 800000 and I do not know why.

After a reboot and unchanged configuration, the problem came back as before: the CPU frequency varies between 1.8 GHz and 3 GHz, and never exploits the low frequencies. The temperature is again between 50° and 55°C.

On 12/06/2011 10:16 AM, artopage wrote:
>
> In fact yesterday I spent a day with a CPU locked at 800 MHz. . . .
> After a reboot and unchanged configuration, the problem came back as
> before: the CPU frequency varies between 1.8 GHz and 3 GHz, and never
> exploits the low frequencies. The temperature is again between 50° and
> 55°C.

i really dislike uncommanded changes such as this…i believe i would
check with the maker of the machine and see if they don’t have a BIOS
upgrade available…something is clearly wrong somewhere…and, i
guess it might be in the BIOS…(not that i don’t agree with Jim that
you report upstream)


DD
openSUSE®, the “German Engineered Automobiles” of operating systems!

SUSE is detecting invalid clock rates on my desktop too. Q8300 overclocked at 3.3Ghz, SUSE shows only stock FSB clock rate (2.5Ghz or some).
Mint doesn’t have this issue, but it doesn’t change anything, the real clock is in fact 3.3 (when not idling).
I can confirm it by running any benchmark or cpu-z under wine.

On 12/06/2011 11:46 AM, sobrus wrote:
>
> SUSE is detecting invalid clock rates on my desktop too.

so, it sounds like someone with this problem need to log a bug,
http://tinyurl.com/nzhq7j, and once reported, all the others in this
thread need to add their details…and, someone report back to this
thread the bug number/URL (so those who google in with the same problem
can read at the bug to see work-around (if any) and bug fix status…

thanks.


DD http://tinyurl.com/DD-Caveat http://tinyurl.com/DD-Hardware
http://tinyurl.com/DD-Software
openSUSE®, the “German Engineered Automobiles” of operating systems!

I have the same 1.8GHz issue with my Core 17 2670QM using compiled kernel, if I use stock kernel it goes down to 800MHz, I’m using Ubuntu 12.04. The strangest things is, even doing a make oldconfig to assure the same options from the stock kernel will be enabled on the one that I’m compiling, the issue happens. So it’s not a customization issue, I did try to modify many things and disabled uneeded drivers for my L502X and filesystems I’ll never use. But I also tried with oldconfig without modifications and defaulting all new settings, both ways I had the same issue. Any feedback about this?

On 05/24/2012 05:36 PM, lsrzj wrote:
>
> I have the same 1.8GHz issue with my Core 17 2670QM using compiled
> kernel, if I use stock kernel it goes down to 800MHz. The strangest
> things is, even doing a make oldconfig to assure the same options from
> the stock kernel will be enabled on the one that I’m compiling, the
> issue happens. So it’s not a customization issue, I did try to modify
> many things and disabled uneeded drivers for my L502X and filesystems
> I’ll never use. But I also tried with oldconfig without modifications
> and defaulting all new settings, both ways I had the same issue. Any
> feedback about this?

I’m not sure you understand what ‘make oldconfig’ does. It does NOT get the
options from the running kernel. It uses the existing version of .config and
updates it for any options that are missing. It does nothing more.

For openSUSE sources, you can use ‘make cloneconfig’ to copy the options on the
current kernel to .config; however, that option is not available for standard
kernel sources. in that case, you can use ‘zcat /boot/config… >
…config’ to get the configuration from that openSuSE version.

You need to look at the output of dmesg to see what info it has regarding the
setting of CPU speeds.

It does import the configuration of the running kernel as is explained here: Linux Kernel Configuration - Reconfigure the kernel

It simply copy the current configuration file of the running kernel that resides on /boot. It automatically answers the questions according to your current configuration and if new options appeared, compared with the running kerne and the one you are going to compile, it will stop to ask what answer you would like to choose. So if your version of the running kernel is exactly the same as you are going to compile, it is expected that it will not ask you for any settings, it will just import.

Try to add the kernel boot options: i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 pcie_aspm=force

It simply worked!! A HUGE THANK YOU!!! There was no logic for this issue, until now I can’t understand the difference between the stock kernel and the compiled one. Why my compiled kernel didn’t enable those options by default during the build? On the stock kernel boot options under GRUB those options are not necessary, it simply work.

On 05/24/2012 10:06 PM, lsrzj wrote:
>
> lwfinger;2464944 Wrote:
>> On 05/24/2012 05:36 PM, lsrzj wrote:
>>>
>>> I have the same 1.8GHz issue with my Core 17 2670QM using compiled
>>> kernel, if I use stock kernel it goes down to 800MHz. The strangest
>>> things is, even doing a make oldconfig to assure the same options
>> from
>>> the stock kernel will be enabled on the one that I’m compiling, the
>>> issue happens. So it’s not a customization issue, I did try to modify
>>> many things and disabled uneeded drivers for my L502X and filesystems
>>> I’ll never use. But I also tried with oldconfig without modifications
>>> and defaulting all new settings, both ways I had the same issue. Any
>>> feedback about this?
>>
>> I’m not sure you understand what ‘make oldconfig’ does. It does NOT
>> get the
>> options from the running kernel. It uses the existing version of
>> .config and
>> updates it for any options that are missing. It does nothing more.
>>
>> For openSUSE sources, you can use ‘make cloneconfig’ to copy the
>> options on the
>> current kernel to .config; however, that option is not available for
>> standard
>> kernel sources. in that case, you can use ‘zcat /boot/config…
>>>
>> …config’ to get the configuration from that openSuSE version.
>>
>> You need to look at the output of dmesg to see what info it has
>> regarding the
>> setting of CPU speeds.
>
> It does import the configuration of the running kernel as is explained
> here: ‘Linux Kernel Configuration - Reconfigure the kernel’
> (http://tinyurl.com/c9ehbda)
>
> It simply copy the current configuration file of the running kernel
> that resides on /boot. It automatically answers the questions according
> to your current configuration and if new options appeared, compared with
> the running kerne and the one you are going to compile, it will stop to
> ask what answer you would like to choose. So if your version of the
> running kernel is exactly the same as you are going to compile, it is
> expected that it will not ask you for any settings, it will just import.

To quote the reference that you gave: “make oldconfig takes the current kernel
configuration in the .config file, and updates it based on the new kernel
release. To do this, it prints out all configuration questions, and provides an
answer for them if the option is already handled in the configuration file. If
there is a new option, the program stops and asks the user what the new
configuration value should be set to. After answering the prompt, the program
continues on until the whole kernel configuration is finished.”

It very clearly says what I did, namely that ‘make oldconfig’ gets the starting
configuration from .config, and not from the configuration file on /boot.

So what’s the point in: “…But once you have a working configuration, the only thing that is necessary is to update it with any new options that have been added to the kernel since the last release. To do this, the make oldconfig and make silentoldconfig options should be used.”

It’s clearly saying that once you have a working configuration, a custom configuration for example, you can use oldconfig to import it to the new kernel. But, of course, the new kernel could have added some new options that is simply impossible to be imported from previous kernel release because they didn’t exist before. So it will copy the answers you gave for common options to the new config being generated and stop to ask about the newly introduced options of the new kernel release and than generate the new config using the imported answers of the configuration of the running kernel + the new answers you gave for the new options. I already did it and it works like a charm.

On 05/25/2012 11:16 AM, lsrzj wrote:
>
> lwfinger;2465115 Wrote:
>> On 05/24/2012 10:06 PM, lsrzj wrote:
>>>
>>> lwfinger;2464944 Wrote:
>>>> On 05/24/2012 05:36 PM, lsrzj wrote:
>>>>>
>>>>> I have the same 1.8GHz issue with my Core 17 2670QM using compiled
>>>>> kernel, if I use stock kernel it goes down to 800MHz. The strangest
>>>>> things is, even doing a make oldconfig to assure the same options
>>>> from
>>>>> the stock kernel will be enabled on the one that I’m compiling, the
>>>>> issue happens. So it’s not a customization issue, I did try to
>> modify
>>>>> many things and disabled uneeded drivers for my L502X and
>> filesystems
>>>>> I’ll never use. But I also tried with oldconfig without
>> modifications
>>>>> and defaulting all new settings, both ways I had the same issue.
>> Any
>>>>> feedback about this?
>>>>
>>>> I’m not sure you understand what ‘make oldconfig’ does. It does
>> NOT
>>>> get the
>>>> options from the running kernel. It uses the existing version of
>>>> .config and
>>>> updates it for any options that are missing. It does nothing more.
>>>>
>>>> For openSUSE sources, you can use ‘make cloneconfig’ to copy the
>>>> options on the
>>>> current kernel to .config; however, that option is not available for
>>>> standard
>>>> kernel sources. in that case, you can use ‘zcat
>> /boot/config…
>>>>>
>>>> …config’ to get the configuration from that openSuSE version.
>>>>
>>>> You need to look at the output of dmesg to see what info it has
>>>> regarding the
>>>> setting of CPU speeds.
>>>
>>> It does import the configuration of the running kernel as is
>> explained
>>> here: ‘Linux Kernel Configuration - Reconfigure the kernel’
>>> (‘Linux Kernel Configuration - Reconfigure the kernel’
>> (http://tinyurl.com/c9ehbda))
>>>
>>> It simply copy the current configuration file of the running kernel
>>> that resides on /boot. It automatically answers the questions
>> according
>>> to your current configuration and if new options appeared, compared
>> with
>>> the running kerne and the one you are going to compile, it will stop
>> to
>>> ask what answer you would like to choose. So if your version of the
>>> running kernel is exactly the same as you are going to compile, it is
>>> expected that it will not ask you for any settings, it will just
>> import.
>>
>> To quote the reference that you gave: “make oldconfig takes the current
>> kernel
>> configuration in the .config file, and updates it based on the new
>> kernel
>> release. To do this, it prints out all configuration questions, and
>> provides an
>> answer for them if the option is already handled in the configuration
>> file. If
>> there is a new option, the program stops and asks the user what the new
>> configuration value should be set to. After answering the prompt, the
>> program
>> continues on until the whole kernel configuration is finished.”
>>
>> It very clearly says what I did, namely that ‘make oldconfig’ gets the
>> starting
>> configuration from .config, and not from the configuration file on
>> /boot.
>
> So what’s the point in: “…But once you have a working configuration,
> the only thing that is necessary is to update it with any new options
> that have been added to the kernel since the last release. To do this,
> the make oldconfig and make silentoldconfig options should be used.”

The “working configuration” must be in .config, not in the running kernel. If
…config does not exist, then you get the default configuration for your
architecture. such a configuration rarely works.

> It’s clearly saying that once you have a working configuration, a
> custom configuration for example, you can use oldconfig to import it to
> the new kernel.

No, it does not say that at all. As I said in my first post in this thread, you
can do that with ‘make cloneconfig’, but that only works with kernel sources
modified by openSUSE. Another way to capture the configuration of the running
kernel is to ‘zcat /proc/config.gz > .config’. That one relies on a particular
kernel configuration parameter being present; however, most people enable that
option. There is still one other option - use 'cp /boot/config-<kernel-version>
…config. This one also only works for openSUSE.

Ok, maybe the oldconfig behaviour in OpenSUSE modified kernel is different from the Vanilla one. I was compiling a Vanilla kernel directly from kernel.org. I used this method to recompile my kernel thousands of times because of the frequency downclocking issue. I experimented different kernel versions, 3.2.17, 3.3.6 and 3.3.7 and I simply used oldconfig to get my current config from my customized kernel to the new compile try and, when I issued a menuconfig to check if the options were the default ones, it weren’t the kernel configuration was exactly the same as I customized. If oldconfig behaved the way you said, I would see default settings there instead of the customized ones. And 'cp /boot/config-<kernel-version> .config works on Ubuntu too, not only in OpenSUSE.

Is this problem unsolvable?
Problems with wrong CPU frequency displaying (overclocked) has been reported for several years ago.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/379873

Now this issue is almost 5 years old and it haven’t been solved yet. Nothing changed, if you are overclocking, you can just displaying the stock frequencies, or with the command dmidecode --type processor
the maximum frequency can be displayed, or under Wine with Windows software (Aida, CPU-Z).
I have also overclocked my CPU, and I can’t now display correct frequencies, just the stock (under Windows the frequency displaying is working properly).