Skip to content

Commit

Permalink
[CPUFREQ] use dynamic debug instead of custom infrastructure
Browse files Browse the repository at this point in the history
With dynamic debug having gained the capability to report debug messages
also during the boot process, it offers a far superior interface for
debug messages than the custom cpufreq infrastructure. As a first step,
remove the old cpufreq_debug_printk() function and replace it with a call
to the generic pr_debug() function.

How can dynamic debug be used on cpufreq? You need a kernel which has
CONFIG_DYNAMIC_DEBUG enabled.

To enabled debugging during runtime, mount debugfs and

$ echo -n 'module cpufreq +p' > /sys/kernel/debug/dynamic_debug/control

for debugging the complete "cpufreq" module. To achieve the same goal during
boot, append

	ddebug_query="module cpufreq +p"

as a boot parameter to the kernel of your choice.

For more detailled instructions, please see
Documentation/dynamic-debug-howto.txt

Signed-off-by: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Dave Jones <davej@redhat.com>
  • Loading branch information
Dominik Brodowski authored and Dave Jones committed May 4, 2011
1 parent 27ecddc commit 2d06d8c
Show file tree
Hide file tree
Showing 26 changed files with 270 additions and 474 deletions.
4 changes: 1 addition & 3 deletions arch/arm/mach-davinci/cpufreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,7 @@ static int davinci_target(struct cpufreq_policy *policy,
if (freqs.old == freqs.new)
return ret;

cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER,
dev_driver_string(cpufreq.dev),
"transition: %u --> %u\n", freqs.old, freqs.new);
dev_dbg(&cpufreq.dev, "transition: %u --> %u\n", freqs.old, freqs.new);

ret = cpufreq_frequency_table_target(policy, pdata->freq_table,
freqs.new, relation, &idx);
Expand Down
3 changes: 0 additions & 3 deletions arch/blackfin/mach-common/dpmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@

#define DRIVER_NAME "bfin dpmc"

#define dprintk(msg...) \
cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, DRIVER_NAME, msg)

struct bfin_dpmc_platform_data *pdata;

/**
Expand Down
44 changes: 21 additions & 23 deletions arch/ia64/kernel/cpufreq/acpi-cpufreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
#include <linux/acpi.h>
#include <acpi/processor.h>

#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, "acpi-cpufreq", msg)

MODULE_AUTHOR("Venkatesh Pallipadi");
MODULE_DESCRIPTION("ACPI Processor P-States Driver");
MODULE_LICENSE("GPL");
Expand All @@ -47,12 +45,12 @@ processor_set_pstate (
{
s64 retval;

dprintk("processor_set_pstate\n");
pr_debug("processor_set_pstate\n");

retval = ia64_pal_set_pstate((u64)value);

if (retval) {
dprintk("Failed to set freq to 0x%x, with error 0x%lx\n",
pr_debug("Failed to set freq to 0x%x, with error 0x%lx\n",
value, retval);
return -ENODEV;
}
Expand All @@ -67,14 +65,14 @@ processor_get_pstate (
u64 pstate_index = 0;
s64 retval;

dprintk("processor_get_pstate\n");
pr_debug("processor_get_pstate\n");

retval = ia64_pal_get_pstate(&pstate_index,
PAL_GET_PSTATE_TYPE_INSTANT);
*value = (u32) pstate_index;

if (retval)
dprintk("Failed to get current freq with "
pr_debug("Failed to get current freq with "
"error 0x%lx, idx 0x%x\n", retval, *value);

return (int)retval;
Expand All @@ -90,7 +88,7 @@ extract_clock (
{
unsigned long i;

dprintk("extract_clock\n");
pr_debug("extract_clock\n");

for (i = 0; i < data->acpi_data.state_count; i++) {
if (value == data->acpi_data.states[i].status)
Expand All @@ -110,7 +108,7 @@ processor_get_freq (
cpumask_t saved_mask;
unsigned long clock_freq;

dprintk("processor_get_freq\n");
pr_debug("processor_get_freq\n");

saved_mask = current->cpus_allowed;
set_cpus_allowed_ptr(current, cpumask_of(cpu));
Expand Down Expand Up @@ -148,7 +146,7 @@ processor_set_freq (
cpumask_t saved_mask;
int retval;

dprintk("processor_set_freq\n");
pr_debug("processor_set_freq\n");

saved_mask = current->cpus_allowed;
set_cpus_allowed_ptr(current, cpumask_of(cpu));
Expand All @@ -159,16 +157,16 @@ processor_set_freq (

if (state == data->acpi_data.state) {
if (unlikely(data->resume)) {
dprintk("Called after resume, resetting to P%d\n", state);
pr_debug("Called after resume, resetting to P%d\n", state);
data->resume = 0;
} else {
dprintk("Already at target state (P%d)\n", state);
pr_debug("Already at target state (P%d)\n", state);
retval = 0;
goto migrate_end;
}
}

dprintk("Transitioning from P%d to P%d\n",
pr_debug("Transitioning from P%d to P%d\n",
data->acpi_data.state, state);

/* cpufreq frequency struct */
Expand All @@ -186,7 +184,7 @@ processor_set_freq (

value = (u32) data->acpi_data.states[state].control;

dprintk("Transitioning to state: 0x%08x\n", value);
pr_debug("Transitioning to state: 0x%08x\n", value);

ret = processor_set_pstate(value);
if (ret) {
Expand Down Expand Up @@ -219,7 +217,7 @@ acpi_cpufreq_get (
{
struct cpufreq_acpi_io *data = acpi_io_data[cpu];

dprintk("acpi_cpufreq_get\n");
pr_debug("acpi_cpufreq_get\n");

return processor_get_freq(data, cpu);
}
Expand All @@ -235,7 +233,7 @@ acpi_cpufreq_target (
unsigned int next_state = 0;
unsigned int result = 0;

dprintk("acpi_cpufreq_setpolicy\n");
pr_debug("acpi_cpufreq_setpolicy\n");

result = cpufreq_frequency_table_target(policy,
data->freq_table, target_freq, relation, &next_state);
Expand All @@ -255,7 +253,7 @@ acpi_cpufreq_verify (
unsigned int result = 0;
struct cpufreq_acpi_io *data = acpi_io_data[policy->cpu];

dprintk("acpi_cpufreq_verify\n");
pr_debug("acpi_cpufreq_verify\n");

result = cpufreq_frequency_table_verify(policy,
data->freq_table);
Expand All @@ -273,7 +271,7 @@ acpi_cpufreq_cpu_init (
struct cpufreq_acpi_io *data;
unsigned int result = 0;

dprintk("acpi_cpufreq_cpu_init\n");
pr_debug("acpi_cpufreq_cpu_init\n");

data = kzalloc(sizeof(struct cpufreq_acpi_io), GFP_KERNEL);
if (!data)
Expand All @@ -288,7 +286,7 @@ acpi_cpufreq_cpu_init (

/* capability check */
if (data->acpi_data.state_count <= 1) {
dprintk("No P-States\n");
pr_debug("No P-States\n");
result = -ENODEV;
goto err_unreg;
}
Expand All @@ -297,7 +295,7 @@ acpi_cpufreq_cpu_init (
ACPI_ADR_SPACE_FIXED_HARDWARE) ||
(data->acpi_data.status_register.space_id !=
ACPI_ADR_SPACE_FIXED_HARDWARE)) {
dprintk("Unsupported address space [%d, %d]\n",
pr_debug("Unsupported address space [%d, %d]\n",
(u32) (data->acpi_data.control_register.space_id),
(u32) (data->acpi_data.status_register.space_id));
result = -ENODEV;
Expand Down Expand Up @@ -348,7 +346,7 @@ acpi_cpufreq_cpu_init (
"activated.\n", cpu);

for (i = 0; i < data->acpi_data.state_count; i++)
dprintk(" %cP%d: %d MHz, %d mW, %d uS, %d uS, 0x%x 0x%x\n",
pr_debug(" %cP%d: %d MHz, %d mW, %d uS, %d uS, 0x%x 0x%x\n",
(i == data->acpi_data.state?'*':' '), i,
(u32) data->acpi_data.states[i].core_frequency,
(u32) data->acpi_data.states[i].power,
Expand Down Expand Up @@ -383,7 +381,7 @@ acpi_cpufreq_cpu_exit (
{
struct cpufreq_acpi_io *data = acpi_io_data[policy->cpu];

dprintk("acpi_cpufreq_cpu_exit\n");
pr_debug("acpi_cpufreq_cpu_exit\n");

if (data) {
cpufreq_frequency_table_put_attr(policy->cpu);
Expand Down Expand Up @@ -418,7 +416,7 @@ static struct cpufreq_driver acpi_cpufreq_driver = {
static int __init
acpi_cpufreq_init (void)
{
dprintk("acpi_cpufreq_init\n");
pr_debug("acpi_cpufreq_init\n");

return cpufreq_register_driver(&acpi_cpufreq_driver);
}
Expand All @@ -427,7 +425,7 @@ acpi_cpufreq_init (void)
static void __exit
acpi_cpufreq_exit (void)
{
dprintk("acpi_cpufreq_exit\n");
pr_debug("acpi_cpufreq_exit\n");

cpufreq_unregister_driver(&acpi_cpufreq_driver);
return;
Expand Down
45 changes: 21 additions & 24 deletions arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,6 @@
#include <asm/cpufeature.h>
#include "mperf.h"

#define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_DRIVER, \
"acpi-cpufreq", msg)

MODULE_AUTHOR("Paul Diefenbaugh, Dominik Brodowski");
MODULE_DESCRIPTION("ACPI Processor P-States Driver");
MODULE_LICENSE("GPL");
Expand Down Expand Up @@ -233,7 +230,7 @@ static u32 get_cur_val(const struct cpumask *mask)
cmd.mask = mask;
drv_read(&cmd);

dprintk("get_cur_val = %u\n", cmd.val);
pr_debug("get_cur_val = %u\n", cmd.val);

return cmd.val;
}
Expand All @@ -244,7 +241,7 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu)
unsigned int freq;
unsigned int cached_freq;

dprintk("get_cur_freq_on_cpu (%d)\n", cpu);
pr_debug("get_cur_freq_on_cpu (%d)\n", cpu);

if (unlikely(data == NULL ||
data->acpi_data == NULL || data->freq_table == NULL)) {
Expand All @@ -261,7 +258,7 @@ static unsigned int get_cur_freq_on_cpu(unsigned int cpu)
data->resume = 1;
}

dprintk("cur freq = %u\n", freq);
pr_debug("cur freq = %u\n", freq);

return freq;
}
Expand Down Expand Up @@ -293,7 +290,7 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
unsigned int i;
int result = 0;

dprintk("acpi_cpufreq_target %d (%d)\n", target_freq, policy->cpu);
pr_debug("acpi_cpufreq_target %d (%d)\n", target_freq, policy->cpu);

if (unlikely(data == NULL ||
data->acpi_data == NULL || data->freq_table == NULL)) {
Expand All @@ -313,11 +310,11 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
next_perf_state = data->freq_table[next_state].index;
if (perf->state == next_perf_state) {
if (unlikely(data->resume)) {
dprintk("Called after resume, resetting to P%d\n",
pr_debug("Called after resume, resetting to P%d\n",
next_perf_state);
data->resume = 0;
} else {
dprintk("Already at target state (P%d)\n",
pr_debug("Already at target state (P%d)\n",
next_perf_state);
goto out;
}
Expand Down Expand Up @@ -357,7 +354,7 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,

if (acpi_pstate_strict) {
if (!check_freqs(cmd.mask, freqs.new, data)) {
dprintk("acpi_cpufreq_target failed (%d)\n",
pr_debug("acpi_cpufreq_target failed (%d)\n",
policy->cpu);
result = -EAGAIN;
goto out;
Expand All @@ -378,7 +375,7 @@ static int acpi_cpufreq_verify(struct cpufreq_policy *policy)
{
struct acpi_cpufreq_data *data = per_cpu(acfreq_data, policy->cpu);

dprintk("acpi_cpufreq_verify\n");
pr_debug("acpi_cpufreq_verify\n");

return cpufreq_frequency_table_verify(policy, data->freq_table);
}
Expand Down Expand Up @@ -433,11 +430,11 @@ static void free_acpi_perf_data(void)
static int __init acpi_cpufreq_early_init(void)
{
unsigned int i;
dprintk("acpi_cpufreq_early_init\n");
pr_debug("acpi_cpufreq_early_init\n");

acpi_perf_data = alloc_percpu(struct acpi_processor_performance);
if (!acpi_perf_data) {
dprintk("Memory allocation error for acpi_perf_data.\n");
pr_debug("Memory allocation error for acpi_perf_data.\n");
return -ENOMEM;
}
for_each_possible_cpu(i) {
Expand Down Expand Up @@ -519,7 +516,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
static int blacklisted;
#endif

dprintk("acpi_cpufreq_cpu_init\n");
pr_debug("acpi_cpufreq_cpu_init\n");

#ifdef CONFIG_SMP
if (blacklisted)
Expand Down Expand Up @@ -566,7 +563,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)

/* capability check */
if (perf->state_count <= 1) {
dprintk("No P-States\n");
pr_debug("No P-States\n");
result = -ENODEV;
goto err_unreg;
}
Expand All @@ -578,19 +575,19 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)

switch (perf->control_register.space_id) {
case ACPI_ADR_SPACE_SYSTEM_IO:
dprintk("SYSTEM IO addr space\n");
pr_debug("SYSTEM IO addr space\n");
data->cpu_feature = SYSTEM_IO_CAPABLE;
break;
case ACPI_ADR_SPACE_FIXED_HARDWARE:
dprintk("HARDWARE addr space\n");
pr_debug("HARDWARE addr space\n");
if (!check_est_cpu(cpu)) {
result = -ENODEV;
goto err_unreg;
}
data->cpu_feature = SYSTEM_INTEL_MSR_CAPABLE;
break;
default:
dprintk("Unknown addr space %d\n",
pr_debug("Unknown addr space %d\n",
(u32) (perf->control_register.space_id));
result = -ENODEV;
goto err_unreg;
Expand Down Expand Up @@ -661,9 +658,9 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
if (cpu_has(c, X86_FEATURE_APERFMPERF))
acpi_cpufreq_driver.getavg = cpufreq_get_measured_perf;

dprintk("CPU%u - ACPI performance management activated.\n", cpu);
pr_debug("CPU%u - ACPI performance management activated.\n", cpu);
for (i = 0; i < perf->state_count; i++)
dprintk(" %cP%d: %d MHz, %d mW, %d uS\n",
pr_debug(" %cP%d: %d MHz, %d mW, %d uS\n",
(i == perf->state ? '*' : ' '), i,
(u32) perf->states[i].core_frequency,
(u32) perf->states[i].power,
Expand Down Expand Up @@ -694,7 +691,7 @@ static int acpi_cpufreq_cpu_exit(struct cpufreq_policy *policy)
{
struct acpi_cpufreq_data *data = per_cpu(acfreq_data, policy->cpu);

dprintk("acpi_cpufreq_cpu_exit\n");
pr_debug("acpi_cpufreq_cpu_exit\n");

if (data) {
cpufreq_frequency_table_put_attr(policy->cpu);
Expand All @@ -712,7 +709,7 @@ static int acpi_cpufreq_resume(struct cpufreq_policy *policy)
{
struct acpi_cpufreq_data *data = per_cpu(acfreq_data, policy->cpu);

dprintk("acpi_cpufreq_resume\n");
pr_debug("acpi_cpufreq_resume\n");

data->resume = 1;

Expand Down Expand Up @@ -743,7 +740,7 @@ static int __init acpi_cpufreq_init(void)
if (acpi_disabled)
return 0;

dprintk("acpi_cpufreq_init\n");
pr_debug("acpi_cpufreq_init\n");

ret = acpi_cpufreq_early_init();
if (ret)
Expand All @@ -758,7 +755,7 @@ static int __init acpi_cpufreq_init(void)

static void __exit acpi_cpufreq_exit(void)
{
dprintk("acpi_cpufreq_exit\n");
pr_debug("acpi_cpufreq_exit\n");

cpufreq_unregister_driver(&acpi_cpufreq_driver);

Expand Down
Loading

0 comments on commit 2d06d8c

Please sign in to comment.