rpms/kernel/devel linux-2.6.12-cpufreq-update.patch, NONE, 1.1 kernel-2.6.spec, 1.1352, 1.1353
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Tue May 24 06:02:59 UTC 2005
Author: davej
Update of /cvs/dist/rpms/kernel/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv8438
Modified Files:
kernel-2.6.spec
Added Files:
linux-2.6.12-cpufreq-update.patch
Log Message:
cpufreq update.
linux-2.6.12-cpufreq-update.patch:
2.6.12-rc2/include/linux/cpufreq.h | 2
2/drivers/cpufreq/cpufreq.c | 8
25-akpm/arch/i386/kernel/cpu/cpufreq/powernow-k7.c | 9
25-akpm/arch/i386/kernel/timers/common.c | 6
25-akpm/arch/i386/kernel/timers/timer_tsc.c | 20
25-akpm/include/asm-i386/timer.h | 1
arch/i386/kernel/cpu/cpufreq/powernow-k8.c | 113 +
arch/i386/kernel/cpu/cpufreq/powernow-k8.h | 15
b/Documentation/cpu-freq/user-guide.txt | 1
b/arch/i386/kernel/cpu/cpufreq/Kconfig | 14
b/arch/i386/kernel/cpu/cpufreq/Makefile | 1
b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c | 2
b/arch/i386/kernel/cpu/cpufreq/sc520_freq.c | 179 ++
b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c | 8
b/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c | 3
b/drivers/cpufreq/Kconfig | 4
b/drivers/cpufreq/cpufreq_ondemand.c | 14
drivers/cpufreq/cpufreq_conservative.c | 34
drivers/cpufreq/cpufreq_ondemand.c | 267 ++--
linux-2.6.11/drivers/cpufreq/cpufreq_ondemand.c | 6
linux-2.6.12-rc2-mm3-full/drivers/cpufreq/cpufreq_ondemand.c | 3
linux-2.6.12-rc3-mm3/drivers/cpufreq/Kconfig | 20
linux-2.6.12-rc3-mm3/drivers/cpufreq/Makefile | 1
linux-2.6.12-rc3-mm3/drivers/cpufreq/cpufreq_conservative.c | 613 ++++++++++
linux-2.6.12-rc4-mm2-ondemand/drivers/cpufreq/cpufreq_conservative.c | 53
linux-2.6.12-rc4-mm2-ondemand/drivers/cpufreq/cpufreq_ondemand.c | 58
26 files changed, 1175 insertions(+), 280 deletions(-)
--- NEW FILE linux-2.6.12-cpufreq-update.patch ---
Subject: [CPUFREQ] powernow-k7: don't print khz element of FSB.
Signed-off-by: Dave Jones <davej at redhat.com>
diff -Nru a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c
--- a/arch/i386/kernel/cpu/cpufreq/powernow-k7.c 2005-04-28 16:19:59 -04:00
+++ b/arch/i386/kernel/cpu/cpufreq/powernow-k7.c 2005-04-28 16:19:59 -04:00
@@ -592,7 +592,7 @@
printk(KERN_WARNING PFX "can not determine bus frequency\n");
return -EINVAL;
}
- dprintk("FSB: %3d.%03d MHz\n", fsb/1000, fsb%1000);
+ dprintk("FSB: %3dMHz\n", fsb/1000);
if (dmi_check_system(powernow_dmi_table) || acpi_force) {
printk (KERN_INFO PFX "PSB/PST known to be broken. Trying ACPI instead\n");
Subject: [CPUFREQ] cpufreq-core: reduce warning messages.
cpufreq core is printing out messages at KERN_WARNING level that the core
recovers from without intervention, and that the system administrator can
do nothing about. Patch below reduces the severity of these messages to
debug.
Signed-off-by: Matt Domsch <Matt_Domsch at dell.com>
Signed-off-by: Andrew Morton <akpm at osdl.org>
Signed-off-by: Dave Jones <davej at redhat.com>
--- 1/drivers/cpufreq/cpufreq.c~ 2005-05-10 22:28:57.000000000 -0400
+++ 2/drivers/cpufreq/cpufreq.c 2005-05-10 22:29:38.000000000 -0400
@@ -258,7 +258,7 @@ void cpufreq_notify_transition(struct cp
(likely(cpufreq_cpu_data[freqs->cpu]->cur)) &&
(unlikely(freqs->old != cpufreq_cpu_data[freqs->cpu]->cur)))
{
- printk(KERN_WARNING "Warning: CPU frequency is %u, "
+ dprintk(KERN_WARNING "Warning: CPU frequency is %u, "
"cpufreq assumed %u kHz.\n", freqs->old, cpufreq_cpu_data[freqs->cpu]->cur);
freqs->old = cpufreq_cpu_data[freqs->cpu]->cur;
}
@@ -814,7 +814,7 @@ static void cpufreq_out_of_sync(unsigned
{
struct cpufreq_freqs freqs;
- printk(KERN_WARNING "Warning: CPU frequency out of sync: cpufreq and timing "
+ dprintk(KERN_WARNING "Warning: CPU frequency out of sync: cpufreq and timing "
"core thinks of %u, is %u kHz.\n", old_freq, new_freq);
freqs.cpu = cpu;
@@ -923,7 +923,7 @@ static int cpufreq_suspend(struct sys_de
struct cpufreq_freqs freqs;
if (!(cpufreq_driver->flags & CPUFREQ_PM_NO_WARN))
- printk(KERN_DEBUG "Warning: CPU frequency is %u, "
+ dprintk(KERN_DEBUG "Warning: CPU frequency is %u, "
"cpufreq assumed %u kHz.\n",
cur_freq, cpu_policy->cur);
@@ -1004,7 +1004,7 @@ static int cpufreq_resume(struct sys_dev
struct cpufreq_freqs freqs;
if (!(cpufreq_driver->flags & CPUFREQ_PM_NO_WARN))
- printk(KERN_WARNING "Warning: CPU frequency"
+ dprintk(KERN_WARNING "Warning: CPU frequency"
"is %u, cpufreq assumed %u kHz.\n",
cur_freq, cpu_policy->cur);
Subject: [CPUFREQ] speedstep-centrino: Pentium 4 - M (HT) support
The Pentium 4 - Ms (HT) with CPUID 0xF34 and 0xF41 seem to support
centrino-like enhanced speedstep; however, no "table" support is possible.
Therefore, put NULL entries into speedstep-centrino.c
Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.net>
Signed-off-by: Dave Jones <davej at redhat.com>
diff -Nru a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c
--- a/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2005-04-28 16:19:09 -04:00
+++ b/arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c 2005-04-28 16:19:09 -04:00
@@ -54,6 +54,8 @@
CPU_DOTHAN_A1,
CPU_DOTHAN_A2,
CPU_DOTHAN_B0,
+ CPU_MP4HT_D0,
+ CPU_MP4HT_E0,
};
static const struct cpu_id cpu_ids[] = {
@@ -61,6 +63,8 @@
[CPU_DOTHAN_A1] = { 6, 13, 1 },
[CPU_DOTHAN_A2] = { 6, 13, 2 },
[CPU_DOTHAN_B0] = { 6, 13, 6 },
+ [CPU_MP4HT_D0] = {15, 3, 4 },
+ [CPU_MP4HT_E0] = {15, 4, 1 },
};
#define N_IDS (sizeof(cpu_ids)/sizeof(cpu_ids[0]))
@@ -226,6 +230,8 @@
{ &cpu_ids[CPU_DOTHAN_A1], NULL, 0, NULL },
{ &cpu_ids[CPU_DOTHAN_A2], NULL, 0, NULL },
{ &cpu_ids[CPU_DOTHAN_B0], NULL, 0, NULL },
+ { &cpu_ids[CPU_MP4HT_D0], NULL, 0, NULL },
+ { &cpu_ids[CPU_MP4HT_E0], NULL, 0, NULL },
{ NULL, }
};
Subject: [CPUFREQ] ondemand: trivial clean-ups
From: Eric Piel <Eric.Piel at tremplin-utc.net>
Trivial ondemand governor clean-ups:
- change from sampling_rate_in_HZ() to the official function
usecs_to_jiffies().
- use for_each_online_cpu() to instead of using "if (cpu_online(i))"
Signed-off-by: Eric Piel <eric.piel at tremplin-utc.net>
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi at intel.com>
Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.net>
Signed-off-by: Dave Jones <davej at redhat.com>
diff -Nru a/drivers/cpufreq/cpufreq_ondemand.c b/drivers/cpufreq/cpufreq_ondemand.c
--- a/drivers/cpufreq/cpufreq_ondemand.c 2005-04-28 16:19:20 -04:00
+++ b/drivers/cpufreq/cpufreq_ondemand.c 2005-04-28 16:19:20 -04:00
@@ -57,7 +57,6 @@
#define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER (1000)
#define DEF_SAMPLING_DOWN_FACTOR (10)
#define TRANSITION_LATENCY_LIMIT (10 * 1000)
-#define sampling_rate_in_HZ(x) (((x * HZ) < (1000 * 1000))?1:((x * HZ) / (1000 * 1000)))
static void do_dbs_timer(void *data);
@@ -281,7 +280,7 @@
/* Scale idle ticks by 100 and compare with up and down ticks */
idle_ticks *= 100;
up_idle_ticks = (100 - dbs_tuners_ins.up_threshold) *
- sampling_rate_in_HZ(dbs_tuners_ins.sampling_rate);
+ usecs_to_jiffies(dbs_tuners_ins.sampling_rate);
if (idle_ticks < up_idle_ticks) {
__cpufreq_driver_target(policy, policy->max,
@@ -328,7 +327,7 @@
freq_down_sampling_rate = dbs_tuners_ins.sampling_rate *
dbs_tuners_ins.sampling_down_factor;
down_idle_ticks = (100 - dbs_tuners_ins.down_threshold) *
- sampling_rate_in_HZ(freq_down_sampling_rate);
+ usecs_to_jiffies(freq_down_sampling_rate);
if (idle_ticks > down_idle_ticks ) {
freq_down_step = (5 * policy->max) / 100;
@@ -348,11 +347,10 @@
{
int i;
down(&dbs_sem);
- for (i = 0; i < NR_CPUS; i++)
- if (cpu_online(i))
- dbs_check_cpu(i);
+ for_each_online_cpu(i)
+ dbs_check_cpu(i);
schedule_delayed_work(&dbs_work,
- sampling_rate_in_HZ(dbs_tuners_ins.sampling_rate));
+ usecs_to_jiffies(dbs_tuners_ins.sampling_rate));
up(&dbs_sem);
}
@@ -360,7 +358,7 @@
{
INIT_WORK(&dbs_work, do_dbs_timer, NULL);
schedule_delayed_work(&dbs_work,
- sampling_rate_in_HZ(dbs_tuners_ins.sampling_rate));
+ usecs_to_jiffies(dbs_tuners_ins.sampling_rate));
return;
}
Subject: [CPUFREQ] speedstep-smi: it works on at least one P4M
The speedstep-smi driver actually works on >=1 notebook with a
Pentium 4-M CPU where all other cpufreq drivers fail. Therefore,
allow speedstep-smi on P4Ms again, but warn users of likely failure
Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.net>
Signed-off-by: Dave Jones <davej at redhat.com>
diff -Nru a/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c b/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c
--- a/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c 2005-04-28 16:19:25 -04:00
+++ b/arch/i386/kernel/cpu/cpufreq/speedstep-smi.c 2005-04-28 16:19:25 -04:00
@@ -357,6 +357,9 @@
case SPEEDSTEP_PROCESSOR_PIII_C:
case SPEEDSTEP_PROCESSOR_PIII_C_EARLY:
break;
+ case SPEEDSTEP_PROCESSOR_P4M:
+ printk(KERN_INFO "speedstep-smi: you're trying to use this cpufreq driver on a Pentium 4-based CPU. Most likely it will not work.\n");
+ break;
default:
speedstep_processor = 0;
}
Subject: [CPUFREQ] Add warning comment about default governors.
This comes up time and time again. Until its fixed, place this
comment in the Kconfig which should stem the flow of resubmissions.
Signed-off-by: Rob Weryk <rjweryk at uwo.ca>
[...2248 lines suppressed...]
-static ssize_t store_down_threshold(struct cpufreq_policy *unused,
- const char *buf, size_t count)
-{
- unsigned int input;
- int ret;
- ret = sscanf (buf, "%u", &input);
-
- down(&dbs_sem);
- if (ret != 1 || input > MAX_FREQUENCY_DOWN_THRESHOLD ||
- input < MIN_FREQUENCY_DOWN_THRESHOLD ||
- input >= dbs_tuners_ins.up_threshold) {
- up(&dbs_sem);
- return -EINVAL;
- }
-
- dbs_tuners_ins.down_threshold = input;
- up(&dbs_sem);
-
- return count;
-}
-
static ssize_t store_ignore_nice(struct cpufreq_policy *policy,
const char *buf, size_t count)
{
@@ -240,29 +209,6 @@ static ssize_t store_ignore_nice(struct
return count;
}
-static ssize_t store_freq_step(struct cpufreq_policy *policy,
- const char *buf, size_t count)
-{
- unsigned int input;
- int ret;
-
- ret = sscanf (buf, "%u", &input);
-
- if ( ret != 1 )
- return -EINVAL;
-
- if ( input > 100 )
- input = 100;
-
- /* no need to test here if freq_step is zero as the user might actually
- * want this, they would be crazy though :) */
- down(&dbs_sem);
- dbs_tuners_ins.freq_step = input;
- up(&dbs_sem);
-
- return count;
-}
-
#define define_one_rw(_name) \
static struct freq_attr _name = \
__ATTR(_name, 0644, show_##_name, store_##_name)
@@ -270,9 +216,7 @@ __ATTR(_name, 0644, show_##_name, store_
define_one_rw(sampling_rate);
define_one_rw(sampling_down_factor);
define_one_rw(up_threshold);
-define_one_rw(down_threshold);
define_one_rw(ignore_nice);
-define_one_rw(freq_step);
static struct attribute * dbs_attributes[] = {
&sampling_rate_max.attr,
@@ -280,9 +224,7 @@ static struct attribute * dbs_attributes
&sampling_rate.attr,
&sampling_down_factor.attr,
&up_threshold.attr,
- &down_threshold.attr,
&ignore_nice.attr,
- &freq_step.attr,
NULL
};
@@ -295,8 +237,8 @@ static struct attribute_group dbs_attr_g
static void dbs_check_cpu(int cpu)
{
- unsigned int idle_ticks, up_idle_ticks, down_idle_ticks;
- unsigned int freq_down_step;
+ unsigned int idle_ticks, up_idle_ticks, total_ticks;
+ unsigned int freq_next;
unsigned int freq_down_sampling_rate;
static int down_skip[NR_CPUS];
struct cpu_dbs_info_s *this_dbs_info;
@@ -310,17 +252,15 @@ static void dbs_check_cpu(int cpu)
policy = this_dbs_info->cur_policy;
/*
- * The default safe range is 20% to 80%
- * Every sampling_rate, we check
- * - If current idle time is less than 20%, then we try to
- * increase frequency
- * Every sampling_rate*sampling_down_factor, we check
- * - If current idle time is more than 80%, then we try to
- * decrease frequency
+ * Every sampling_rate, we check, if current idle time is less
+ * than 20% (default), then we try to increase frequency
+ * Every sampling_rate*sampling_down_factor, we look for a the lowest
+ * frequency which can sustain the load while keeping idle time over
+ * 30%. If such a frequency exist, we try to decrease to this frequency.
*
* Any frequency increase takes it to the maximum frequency.
* Frequency reduction happens at minimum steps of
- * 5% (default) of max_frequency
+ * 5% (default) of current frequency
*/
/* Check for frequency increase */
@@ -383,33 +323,27 @@ static void dbs_check_cpu(int cpu)
idle_ticks = tmp_idle_ticks;
}
- /* Scale idle ticks by 100 and compare with up and down ticks */
- idle_ticks *= 100;
down_skip[cpu] = 0;
+ /* if we cannot reduce the frequency anymore, break out early */
+ if (policy->cur == policy->min)
+ return;
+ /* Compute how many ticks there are between two measurements */
freq_down_sampling_rate = dbs_tuners_ins.sampling_rate *
dbs_tuners_ins.sampling_down_factor;
- down_idle_ticks = (100 - dbs_tuners_ins.down_threshold) *
- usecs_to_jiffies(freq_down_sampling_rate);
-
- if (idle_ticks > down_idle_ticks) {
- /* if we are already at the lowest speed then break out early
- * or if we 'cannot' reduce the speed as the user might want
- * freq_step to be zero */
- if (policy->cur == policy->min || dbs_tuners_ins.freq_step == 0)
- return;
+ total_ticks = usecs_to_jiffies(freq_down_sampling_rate);
- freq_down_step = (dbs_tuners_ins.freq_step * policy->max) / 100;
-
- /* max freq cannot be less than 100. But who knows.... */
- if (unlikely(freq_down_step == 0))
- freq_down_step = 5;
+ /*
+ * The optimal frequency is the frequency that is the lowest that
+ * can support the current CPU usage without triggering the up
+ * policy. To be safe, we focus 10 points under the threshold.
+ */
+ freq_next = ((total_ticks - idle_ticks) * 100) / total_ticks;
+ freq_next = (freq_next * policy->cur) /
+ (dbs_tuners_ins.up_threshold - 10);
- __cpufreq_driver_target(policy,
- policy->cur - freq_down_step,
- CPUFREQ_RELATION_H);
- return;
- }
+ if (freq_next <= ((policy->cur * 95) / 100))
+ __cpufreq_driver_target(policy, freq_next, CPUFREQ_RELATION_L);
}
static void do_dbs_timer(void *data)
@@ -487,7 +421,6 @@ static int cpufreq_governor_dbs(struct c
DEF_SAMPLING_RATE_LATENCY_MULTIPLIER;
dbs_tuners_ins.sampling_rate = def_sampling_rate;
dbs_tuners_ins.ignore_nice = 0;
- dbs_tuners_ins.freq_step = 5;
dbs_timer_init();
}
Subject: [CPUFREQ] ondemand governor default sampling downfactor as 1
[PATCH] [5/5] ondemand governor default sampling downfactor as 1
Make default sampling downfactor 1.
This works better with earlier auto downscaling change in ondemand governor.
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi at intel.com>
Signed-off-by: Dave Jones <davej at redhat.com>
--- linux-2.6.11/drivers/cpufreq/cpufreq_ondemand.c.org 2005-03-11 19:41:12.000000000 -0800
+++ linux-2.6.11/drivers/cpufreq/cpufreq_ondemand.c 2005-03-11 19:43:00.000000000 -0800
@@ -51,7 +51,8 @@ static unsigned int def_sampling_rat
#define MIN_SAMPLING_RATE (def_sampling_rate / 2)
#define MAX_SAMPLING_RATE (500 * def_sampling_rate)
#define DEF_SAMPLING_RATE_LATENCY_MULTIPLIER (1000)
-#define DEF_SAMPLING_DOWN_FACTOR (10)
+#define DEF_SAMPLING_DOWN_FACTOR (1)
+#define MAX_SAMPLING_DOWN_FACTOR (10)
#define TRANSITION_LATENCY_LIMIT (10 * 1000)
#define sampling_rate_in_HZ(x) (((x * HZ) < (1000 * 1000))?1:((x * HZ) / (1000 * 1000)))
@@ -119,6 +120,9 @@ static ssize_t store_sampling_down_facto
if (ret != 1 )
return -EINVAL;
+ if (input > MAX_SAMPLING_DOWN_FACTOR || input < 1)
+ return -EINVAL;
+
down(&dbs_sem);
dbs_tuners_ins.sampling_down_factor = input;
up(&dbs_sem);
Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/devel/kernel-2.6.spec,v
retrieving revision 1.1352
retrieving revision 1.1353
diff -u -r1.1352 -r1.1353
--- kernel-2.6.spec 24 May 2005 02:17:24 -0000 1.1352
+++ kernel-2.6.spec 24 May 2005 06:02:57 -0000 1.1353
@@ -349,6 +349,7 @@
Patch1890: linux-2.6.12-firedire-init-breakage.patch
Patch1900: linux-2.6.12-kobject-ordering.patch
Patch1910: linux-2.6.12-ns558-nodev-rmmod.patch
+Patch1920: linux-2.6.12-cpufreq-update.patch
Patch2000: linux-2.6.11-vm-taint.patch
Patch2001: linux-2.6.9-vm-oomkiller-debugging.patch
@@ -800,6 +801,8 @@
%patch1900 -p1
# Fix oops in ns558 on rmmod
%patch1910 -p1
+# Update various CPUFREQ drivers.
+%patch1920 -p1
#
@@ -1261,6 +1264,9 @@
%endif
%changelog
+* Tue May 24 2005 Dave Jones <davej at redhat.com>
+- Update various cpufreq drivers.
+
* Mon May 23 2005 Dave Jones <davej at redhat.com>
- Add extra id to SATA Sil driver. (#155748)
- Fix oops on rmmod of lanai & ms558 drivers when no hardware present.
More information about the fedora-cvs-commits
mailing list