Re: [PATCH 6/7] CPUFREQ: powernow-k8: Only print error message once, not per core.

From: Thomas Renninger
Date: Wed Feb 04 2009 - 05:00:00 EST


On Wednesday 04 February 2009 06:09:47 Andrew Morton wrote:
> On Tue, 3 Feb 2009 17:46:45 +0100 Thomas Renninger <trenn@xxxxxxx> wrote:
> > This is the typical message you get if you plug in a CPU
> > which is newer than your BIOS. It's annoying seeing this
> > message for each core.
> >
> > Signed-off-by: Thomas Renninger <trenn@xxxxxxx>
> > ---
> > arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 12 ++++++------
> > 1 files changed, 6 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> > b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c index 9accffb..9e312c5 100644
> > --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> > +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c
> > @@ -743,7 +743,7 @@ static int find_psb_table(struct powernow_k8_data
> > *data) * BIOS and Kernel Developer's Guide, which is available on
> > * www.amd.com
> > */
> > - printk(KERN_ERR PFX "BIOS error - no PSB or ACPI _PSS objects\n");
> > + printk(KERN_ERR FW_BUG PFX "No PSB or ACPI _PSS objects\n");
> > return -ENODEV;
> > }
> >
> > @@ -1154,11 +1154,11 @@ static int __cpuinit powernowk8_cpu_init(struct
> > cpufreq_policy *pol) * an UP version, and is deprecated by AMD.
> > */
> > if (num_online_cpus() != 1) {
> > - printk(KERN_ERR FW_BUG PFX "Your BIOS does not provide"
> > - " ACPI _PSS objects in a way that Linux "
> > - "understands. Please report this to the Linux "
> > - "ACPI maintainers and complain to your BIOS "
> > - "vendor.\n");
> > + WARN_ONCE(1, KERN_ERR FW_BUG PFX "Your BIOS does not "
> > + "provide ACPI _PSS objects in a way that "
> > + "Linux understands. Please report this to "
> > + "the Linux ACPI maintainers and complain to "
> > + "your BIOS vendor.\n");
> > goto err_out;
> > }
> > if (pol->cpu != 0) {
>
> WARN_ONCE will also spew a stack backtrace, which seems inappropriate here.
Yes. I saw WARN_ONCE(1, KERN_INFO..), which should be a KERN_ERR then
(if you get a backtrace you do not want to have the message suppressed?)
and thus thought it's a simple printk.
>
> There was talk of writing a simple ONCE() macro for this sort of thing:
>
> if (ONCE())
> printk(...)
Yep, that would be nice here.

> but it never happened.
I added a static int print_once; hack now.

Thanks,

Thomas
--
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/