Bug 10386

Summary: cpufreq reports wrong scaling_freqs - Acer Extensa 3001WLMi
Product: ACPI Reporter: Michael Straube (miste78)
Component: BIOSAssignee: acpi_bios
Status: CLOSED DOCUMENTED    
Severity: normal CC: lenb
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.24.4 Subsystem:
Regression: No Bisected commit-id:
Attachments: output of 'lspci -vvv'
output of 'acpidump'
output of 'dmesg | grep -i acpi'
fixed DSDT table
speedstep-centrino.c patch
corrected speedstep-centrino.c patch

Description Michael Straube 2008-04-02 14:39:43 UTC
Latest working kernel version:
Earliest failing kernel version:

Distribution:ArchLinux stable

Hardware Environment:
Acer Extensa 3001 WLMi
Intel(R) Pentium(R) M processor 1.50GHz

Software Environment:

Problem Description:
cpufreq reports wrong scaling frequencies on my Acer Eaxtensa 3001WLMi.
CPU is a Pentium M 1.5GHz. I tried both available BIOS Versions (3A08 and 3A10) and use a fixed DSDT. The are no warnings or erros about acpi in the dmesg output.

some infos

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 
1600000 1400000 1200000 800000 600000 

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver 
acpi-cpufreq

# cat /proc/version 
Linux version 2.6.24.4 (michael@acer01) (gcc version 4.3.0 (GCC) ) #3 SMP PREEMPT Wed Apr 2 19:31:01 CEST 2008

# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 13
model name	: Intel(R) Pentium(R) M processor 1.50GHz
stepping	: 8
cpu MHz		: 1400.000
cache size	: 2048 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe nx up bts est tm2
bogomips	: 2999.74
clflush size	: 64

Steps to reproduce:
I think it depends on my Hardware.
Comment 1 Michael Straube 2008-04-02 14:42:24 UTC
Created attachment 15582 [details]
output of 'lspci -vvv'

attached output of 'lspci -vvv'
Comment 2 Michael Straube 2008-04-02 14:43:51 UTC
Created attachment 15583 [details]
output of 'acpidump'
Comment 3 Michael Straube 2008-04-02 14:44:49 UTC
Created attachment 15584 [details]
output of 'dmesg | grep -i acpi'
Comment 4 Len Brown 2011-01-18 07:53:43 UTC
            Name (PPSS, Package (0x05)
            {
                Package (0x06)
                {
                    0x0640,
                    0x5DC0,
                    0x0A,
                    0x0A,
                    0x89,
                    0x00
                },

                Package (0x06)
                {
                    0x0578,
                    0x4E20,
                    0x0A,
                    0x0A,
                    0x8A,
                    0x01
                },

                Package (0x06)
                {
                    0x04B0,
                    0x4650,
                    0x0A,
                    0x0A,
                    0x8B,
                    0x02
                },

                Package (0x06)
                {
                    0x0320,
                    0x3E80,
                    0x0A,
                    0x0A,
                    0x8C,
                    0x03
                },

                Package (0x06)
                {
                    0x0258,
                    0x2EE0,
                    0x0A,
                    0x0A,
                    0x8D,
                    0x04
                }
            })

1600000 1400000 1200000 800000 600000 is exactly
what your BIOS is exporting to the OS.
If you want different numbers, you need a new BIOS.
Comment 5 Michael Straube 2011-01-18 10:16:57 UTC
There is no newer BIOS version available, but a while ago I figured out that loading a fixed DSDT table with the correct values for the freqs work.

But I don't use acpi_cpufreq anymore for freq. scaling. 
I use a patched speedstep-centrino.c file with added support for my CPU now.
Comment 6 Michael Straube 2011-01-18 10:19:20 UTC
Created attachment 43992 [details]
fixed DSDT table
Comment 7 Michael Straube 2011-01-18 10:27:03 UTC
Created attachment 44002 [details]
speedstep-centrino.c patch
Comment 8 Michael Straube 2011-01-18 10:38:32 UTC
Created attachment 44012 [details]
corrected speedstep-centrino.c patch

sorry, the first patch contains a mistake. It should be 100 instead of 133 for base 

#define OPEX(mhz, base, mva, mvb, mvc, mvd)                     \
{                                                               \
        .frequency = (mhz) * 1000,                              \
        .index = (((mhz)/(base)) << 8) | ((mva - 700) / 16)     \
}

/* Intel Pentium M processor 715 / 1.50 GHz (Sonoma) */
static struct cpufreq_frequency_table sonoma_1500[] =
{
        OPEX( 600, 100,  988,  988,  988,  988),
        OPEX( 800, 100, 1068, 1068, 1068, 1052),
        OPEX(1000, 100, 1148, 1148, 1132, 1116),
        OPEX(1200, 100, 1228, 1212, 1212, 1180),
        OPEX(1500, 100, 1340, 1324, 1308, 1276),
        { .frequency = CPUFREQ_TABLE_END }
};