Re: [BUG?]: cpufreqency scaling - wrong frequency detected

From: Matthias-Christian Ott
Date: Fri Jan 21 2005 - 16:17:08 EST


Pallipadi, Venkatesh wrote:



-----Original Message-----
From: Matthias-Christian Ott [mailto:matthias.christian@xxxxxxxxxx]
Sent: Friday, January 21, 2005 9:34 AM
To: Matthias-Christian Ott
Cc: Pallipadi, Venkatesh; linux-kernel@xxxxxxxxxxxxxxx;
linux@xxxxxxxx; Nakajima, Jun; Zou, Nanhai
Subject: Re: [BUG?]: cpufreqency scaling - wrong frequency detected

Matthias-Christian Ott wrote:



Hi!
Cpufreq (with enabled debugging (not CONFIG_DEBUG_KERNEL)) doesn't
display any additional messages. I'll compile it with
CONFIG_DEBUG_KERNEL.

Matthias-Christian Ott
-
To unsubscribe from this list: send the line "unsubscribe
linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Hi!
CONFIG_DEBUG_KERNEL doesn't display any additional messages. What do I
have activate to get such debugging messages:
dprintk("P4 - MSR_EBC_FREQUENCY_ID: 0x%x 0x%x\n", msr_lo, msr_hi);

Matthias-Christian Ott


Enable CPU_FREQ_DEBUG and activate it.
Thanks,
Venki

config CPU_FREQ_DEBUG
bool "Enable CPUfreq debugging"
depends on CPU_FREQ
help
Say Y here to enable CPUfreq subsystem (including drivers)
debugging. You will need to activate it via the kernel
command line by passing
cpufreq.debug=<value>

To get <value>, add
1 to activate CPUfreq core debugging,
2 to activate CPUfreq drivers debugging, and
4 to activate CPUfreq governor debugging


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Hi!
I did had look at the Kconfig, sorry my mistake. I'm not a cpu expert but according to this code:

rdmsr(0x2c, msr_lo, msr_hi);

It reads the values from the MSR, but wrong. There's global variable cpu_khz (defined from the tsc functions [arch/i386/kernel/timers/timer_tsc.c]) which get's the correct value. Wouldn't it be easier to take this value, because the ACPI functions do the rest (acpi_processor_set_performance, acpi_cpufreq_target, etc.), give the parameters to the bios.

It's just a try to simplify it (my knowledge about the Kernel and CPU's is limited), but I think maybe it works (perhaps there's a problem with the "table entrys" [as I said my knowledge is limited]).

But here's the output:

cpufreq.debug=4:
userspace: managing cpu 0 stopped
performance: setting to 14600000 kHz because of event 1
performance: setting to 14600000 kHz because of event 3
performance: setting to 14600000 kHz because of event 3
performance: setting to 14600000 kHz because of event 3

cpufreq.debug=2:
acpi-cpufreq: acpi_cpufreq_init
acpi-cpufreq: acpi_cpufreq_cpu_init
acpi-cpufreq: acpi_processor_cpu_init_pdc
p4-clockmod: has errata -- disabling low frequencies
speedstep-lib: x86: f, model: 1
speedstep-lib: P4 - MSR_EBC_FREQUENCY_ID: 0x9201fc00 0x0
speedstep-lib: P4 - FSB 100000 kHz; Multiplier 146; Speed 14600000 kHz
p4-clockmod: P4/Xeon(TM) CPU On-Demand Clock Modulation available

cpufreq.debug=1:
cpufreq-core: trying to register driver acpi-cpufreq
cpufreq-core: adding CPU 0
cpufreq-core: initialization failed
cpufreq-core: no CPU initialized for driver acpi-cpufreq
cpufreq-core: unregistering CPU 0
cpufreq-core: trying to register driver p4-clockmod
cpufreq-core: adding CPU 0
freq-table: setting show_table for cpu 0 to c0554aa0
freq-table: table entry 0 is invalid, skipping
freq-table: table entry 1 is invalid, skipping
freq-table: table entry 2: 3650000 kHz, 2 index
freq-table: table entry 3: 5475000 kHz, 3 index
freq-table: table entry 4: 7300000 kHz, 4 index
freq-table: table entry 5: 9125000 kHz, 5 index
freq-table: table entry 6: 10950000 kHz, 6 index
freq-table: table entry 7: 12775000 kHz, 7 index
freq-table: table entry 8: 14600000 kHz, 8 index
cpufreq-core: setting new policy for CPU 0: 3650000 - 14600000 kHz
freq-table: request for verification of policy (3650000 - 14600000 kHz) for cpu 0
freq-table: verification lead to (3650000 - 14600000 kHz) for cpu 0
freq-table: request for verification of policy (3650000 - 14600000 kHz) for cpu 0
freq-table: verification lead to (3650000 - 14600000 kHz) for cpu 0
cpufreq-core: new min and max freqs are 3650000 - 14600000 kHz
cpufreq-core: governor switch
cpufreq-core: __cpufreq_governor for CPU 0, event 1
cpufreq-core: governor: change or update limits
cpufreq-core: __cpufreq_governor for CPU 0, event 3
cpufreq-core: target for CPU 0: 14600000 kHz, relation 0
freq-table: request for target 14600000 kHz (relation: 0) for cpu 0
freq-table: target is 8 (14600000 kHz, 8)
cpufreq-core: initialization complete
cpufreq-core: driver p4-clockmod up and running
p4-clockmod: P4/Xeon(TM) CPU On-Demand Clock Modulation available
cpufreq-core: setting new policy for CPU 0: 3650000 - 14600000 kHz
freq-table: request for verification of policy (3650000 - 14600000 kHz) for cpu 0
freq-table: verification lead to (3650000 - 14600000 kHz) for cpu 0
freq-table: request for verification of policy (3650000 - 14600000 kHz) for cpu 0
freq-table: verification lead to (3650000 - 14600000 kHz) for cpu 0
cpufreq-core: new min and max freqs are 3650000 - 14600000 kHz
cpufreq-core: governor switch
cpufreq-core: __cpufreq_governor for CPU 0, event 2
cpufreq-core: __cpufreq_governor for CPU 0, event 1
cpufreq-core: target for CPU 0: 14600000 kHz, relation 1
freq-table: request for target 14600000 kHz (relation: 1) for cpu 0
freq-table: target is 8 (14600000 kHz, 8)
cpufreq-core: governor: change or update limits
cpufreq-core: __cpufreq_governor for CPU 0, event 3
cpufreq-core: target for CPU 0: 14600000 kHz, relation 1
freq-table: request for target 14600000 kHz (relation: 1) for cpu 0
freq-table: target is 8 (14600000 kHz, 8)
cpufreq-core: setting new policy for CPU 0: 3650000 - 14600000 kHz
freq-table: request for verification of policy (3650000 - 14600000 kHz) for cpu 0
freq-table: verification lead to (3650000 - 14600000 kHz) for cpu 0
freq-table: request for verification of policy (3650000 - 14600000 kHz) for cpu 0
freq-table: verification lead to (3650000 - 14600000 kHz) for cpu 0
cpufreq-core: new min and max freqs are 3650000 - 14600000 kHz
cpufreq-core: governor: change or update limits
cpufreq-core: __cpufreq_governor for CPU 0, event 3
cpufreq-core: target for CPU 0: 14600000 kHz, relation 1
freq-table: request for target 14600000 kHz (relation: 1) for cpu 0
freq-table: target is 8 (14600000 kHz, 8)
cpufreq-core: setting new policy for CPU 0: 9636000 - 14600000 kHz
freq-table: request for verification of policy (9636000 - 14600000 kHz) for cpu 0
freq-table: verification lead to (9636000 - 14600000 kHz) for cpu 0
freq-table: request for verification of policy (9636000 - 14600000 kHz) for cpu 0
freq-table: verification lead to (9636000 - 14600000 kHz) for cpu 0
cpufreq-core: new min and max freqs are 9636000 - 14600000 kHz
cpufreq-core: governor: change or update limits
cpufreq-core: __cpufreq_governor for CPU 0, event 3
cpufreq-core: target for CPU 0: 14600000 kHz, relation 1
freq-table: request for target 14600000 kHz (relation: 1) for cpu 0
freq-table: target is 8 (14600000 kHz, 8)

Sincerely
Matthias-Christian Ott
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/