From: Dominik Brodowski <linux@brodo.de>
To: Pavel Machek <pavel@suse.cz>
Cc: Dave Jones <davej@redhat.com>,
kernel list <linux-kernel@vger.kernel.org>,
paul.devriendt@amd.com, aj@suse.de, mark.langsdorf@amd.com,
richard.brunner@amd.com, cpufreq@www.linux.org.uk
Subject: Re: Cpufreq for opteron
Date: Wed, 27 Aug 2003 01:02:32 +0200 [thread overview]
Message-ID: <20030826230232.GA31860@brodo.de> (raw)
In-Reply-To: <20030822200549.GC2327@elf.ucw.cz>
On Fri, Aug 22, 2003 at 10:05:49PM +0200, Pavel Machek wrote:
> Hi!
>
> Here's an updated version. It is quite a bit shorter, and thats
> good. Does it look good enough for inclusion?
> +#define VERSION "version 1.00.06 - August 13, 2003"
If AMD wants it in, let's put it into the /* comment header at the top */ ?
> +#ifdef CONFIG_SMP
> +#error cpufreq support is disabled for config_smp
> +#endif
> +#ifdef CONFIG_PREEMPT
> +#warning noone tested this on preempt system, beware
> +#endif
Actually I doubt an #error and a #warning are necessary here. I'd like to
hear more about the CONFIG_SMP && CONFIG_CPU_FREQ issues; please discuss
this on cpufreq@www.linux.org.uk . The #warning is more of an assumption and
can go away, IMHO.
> +/*
> +The PSB table supplied by BIOS allows for the definition of the number of
> +p-states that can be used when running on a/c, and the number of p-states
> +that can be used when running on battery. This allows laptop manufacturers
> +to force the system to save power when running from battery. The relationship
> +is :
> + 1 <= number_of_battery_p_states <= maximum_number_of_p_states
> +
> +This driver does NOT have the support in it to detect transitions from
> +a/c power to battery power, and thus trigger the transition to a lower
> +p-state if required. This is because I need ACPI and the 2.6 kernel to do
> +this, and this is a 2.4 kernel driver. Check back for a new improved driver
> +for the 2.6 kernel soon.
> +
> +This code therefore assumes it is on battery at all times, and thus
> +restricts performance to number_of_battery_p_states. For desktops,
> + number_of_battery_p_states == maximum_number_of_pstates,
> +so this is not actually a restriction.
> +*/
> +
> +static u32 batterypstates; /* limit on the number of p states when on battery */
> + /* - set by BIOS in the PSB/PST */
> +
> +static int onbattery = 1; /* Set if running on battery, reset otherwise. */
> + /* Of no relevance unless batterypstates < */
> + /* numpstates, as defined in the PSB/PST. */
I dislike this interaction between ACPI and cpufreq -- it should be done
more generally. Let's discuss that seperately, though. And if the code is
dead code at the moment.
> + if (num_online_cpus() != 1) {
> + printk(KERN_ERR PFX "multiprocessor systems not currently supported\n");
> + return 0;
> + }
> +
> + if (c->x86_vendor != X86_VENDOR_AMD) {
> + printk(KERN_INFO PFX "Not an AMD processor\n");
Please don't be so verbose if it's such a clear failing reason. dprintk
would be enough.
> + printk(KERN_ERR PFX "AMD Athlon 64 or AMD Opteron processor required\n");
same here.
> +static int
> +drv_verify(struct cpufreq_policy *pol)
> +{
<snip>
> + dprintk(KERN_DEBUG PFX
> + "ver: cpu%d, min %d, max %d, cur %d, pol %d (%s)\n", pol->cpu,
> + pol->min, pol->max, pol->cur, pol->policy,
> + pol->policy ==
> + CPUFREQ_POLICY_POWERSAVE ? "psave" : pol->policy ==
> + CPUFREQ_POLICY_PERFORMANCE ? "perf" : "unk");
> +
> + if (pol->cpu != 0) {
> + printk(KERN_ERR PFX "verify - cpu not 0\n");
> + return -ENODEV;
> + }
> +
> + res = find_match(&targ, &min, &max,
> + pol->policy ==
> + CPUFREQ_POLICY_POWERSAVE ? SEARCH_DOWN : SEARCH_UP, 0,
> + 0);
Why do you check for CPUFREQ_POLICY here??? In a ->target class cpufreq
driver[*] you must not worry about the policy, only about min and max
frequency.
[*] ->target class cpufreq drivers [cpufreq_driver->target is used] have
specific operating frequencies.
->setpolicy class cpufreq drivers have operating frequency ranges
[currently only available on Transmeta Crusoe processors]
Also, it'd be great if this driver were converted to use the CPUfreq
freuqency table helpers -- check drivers/cpufreq/freq_table.c in
linux-2.6.0-test4. Using it makes the code much cleaner, easier to
understand, and less prone to errors.
Dominik
next prev parent reply other threads:[~2003-08-26 23:14 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-08-22 13:59 Cpufreq for opteron Pavel Machek
2003-08-22 14:43 ` Dave Jones
2003-08-22 19:55 ` Pavel Machek
2003-08-22 20:05 ` Pavel Machek
2003-08-26 23:02 ` Dominik Brodowski [this message]
2003-08-22 14:52 ` Christoph Hellwig
2003-08-22 14:55 ` Dave Jones
2003-08-22 19:54 ` Pavel Machek
2003-08-23 7:55 ` Rogier Wolff
2003-08-23 17:50 ` Christoph Hellwig
-- strict thread matches above, loose matches on Subject: below --
2003-08-22 16:25 Andi Kleen
2003-08-22 20:09 paul.devriendt
2003-08-25 8:46 ` Pavel Machek
2003-08-25 13:30 ` Valdis.Kletnieks
2003-08-24 15:31 paul.devriendt
2003-08-25 9:35 ` Pavel Machek
[not found] <99F2150714F93F448942F9A9F112634C080EF006@txexmtae.amd.com.suse.lists.linux.kernel>
[not found] ` <20030825084616.GC403@elf.ucw.cz.suse.lists.linux.kernel>
2003-08-25 10:56 ` Andi Kleen
2003-08-25 12:53 paul.devriendt
2003-08-25 13:51 ` Pavel Machek
2003-08-25 14:09 paul.devriendt
2003-08-27 0:43 paul.devriendt
2003-08-27 5:13 ` Dominik Brodowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030826230232.GA31860@brodo.de \
--to=linux@brodo.de \
--cc=aj@suse.de \
--cc=cpufreq@www.linux.org.uk \
--cc=davej@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.langsdorf@amd.com \
--cc=paul.devriendt@amd.com \
--cc=pavel@suse.cz \
--cc=richard.brunner@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox