Skip to contentSkip to conversation

Shell script to select the right cpufreq module?

DISCUSSION Michael Opdenacker 5 participants 13 messages Mar 30, 2004 – Apr 2, 2004

lore
Share & tools
lore
#0 lore raw

Hello,

I'm testing Fedora Core 2 test 2 (FC2T2) and cpufreq works just fine! Thanks a lot for your good work!

By the way, in FC2T2, you have to set the DRIVER variable in /etc/cpuspeed.conf according to your processor (DRIVER=p4-clockmod in my case). Otherwise, even if you start the /etc/init.d/cpuspeed script, nothing happens.

I would like to automate that so that the /etc/init.d/cpuspeed script automatically loads the right cpufreq module if the cpu is supported. If users don't want cpu frequency scaling, they just have to disable this service at startup.

Does anyone here already have a shell script that reads /proc/cpuinfo and returns the name of the corresponding cpufreq module if the processor is supported?

Otherwise, I'll start to write one and ask you guys to test it, as I can only make tests on P4.

Thank you in advance,

Cheers,

Michael.

Signature · 2 lines
Michael Opdenacker
http://opdenacker.org/
#1 lore raw
Quoted 6 lines · Michael Opdenacker

Does anyone here already have a shell script that reads /proc/cpuinfo and returns the name of the corresponding cpufreq module if the processor is supported?

Otherwise, I'll start to write one and ask you guys to test it, as I can only make tests on P4.

I proposed one such shell script a couple of weeks ago and submitted a draft, which I can't locate in the archives ATM so here it is again:

#!/bin/sh

# Copyright (C) 2004 Dominik Brodowski <[email protected]>
#
# This script is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This script tries to detect the best suited x86 cpufreq driver, and
# load it using "modprobe" commands.
#
#

DEBUG=1

KV="$(uname -r | cut -c1-3)"

if [ "$KV" != "2.6" ]; then
echo "Wrong kernel version"
exit 1
fi

# the cpufreq drivers
ACPI=0
P4CLOCKMOD=0
SPEEDSTEP_SMI=0
SPEEDSTEP_ICH=0
SPEEDSTEP_CENTRINO=0
FLAG_EST=0
FLAG_ACPI=0
FLAG_ACC=0
# parse /proc/cpuinfo 
FAMILY="$(cat /proc/cpuinfo | grep "cpu family" | cut -c14-)"
MODEL="$(cat /proc/cpuinfo | grep "model" | grep -v "model name" | cut -c10-)"
STEPPING="$(cat /proc/cpuinfo | grep "stepping" | cut -c12-)"
# parse for vendor
cat /proc/cpuinfo | grep vendor_id | grep Intel &> /dev/null && INTEL=1
# parse flags
cat /proc/cpuinfo | grep "flags" | grep " est" &> /dev/null && FLAG_EST=1
cat /proc/cpuinfo | grep "flags" | grep " acpi" &> /dev/null && FLAG_ACPI=1
cat /proc/cpuinfo | grep "flags" | grep " tm" &> /dev/null && FLAG_ACC=1

if [ $DEBUG -eq 1 ]; then
echo "CPU family is $FAMILY"
echo "CPU model is $MODEL"
echo "CPU stepping is $STEPPING"
echo "CPU vendor: Intel? $INTEL"
fi

if [ $INTEL -eq 1 ]; then

	case "$FAMILY" in
		"6")
			if [ $DEBUG -eq 1 ]; then
				echo "Pentium 3 or Pentium M detected."
			fi
			case "$MODEL" in
				"9")
					if [ "$STEPPING" == "5" ] ; then
						if [ $FLAG_EST -eq 1 ]; then
							SPEEDSTEP_CENTRINO=1
						fi
					fi
					;;
				"8")
					SPEEDSTEP_SMI=1
					SPEEDSTEP_ICH=1
					;;
				"11")
					SPEEDSTEP_ICH=1
					;;
				*)
					echo "Unknown CPU."
					;;
			esac
			;;
		"15")
			if [ $DEBUG -eq 1 ]; then
				echo "Pentium 4 detected."
			fi
			if [ "$MODEL" == "2" ]; then
				case "$STEPPING" in
					"4")
						SPEEDSTEP_ICH=1
						;;
					"7")
						SPEEDSTEP_ICH=1
						;;
					"9")
						SPEEDSTEP_ICH=1
						;;
					*)
						true
						;;
				esac
			fi
			;;
		*)
			echo "unknown Intel Processor. Aborting."
			exit 1
			;;
	esac
	if [ $FLAG_ACPI -eq 1 ]; then
		if [ $FLAG_ACC -eq 1 ]; then
			P4CLOCKMOD=1;
		fi
	fi
	ACPI=1

fi

if [ $DEBUG -eq 1 ]; then
echo "ACPI? $ACPI"
echo "P4CLOCKMOD? $P4CLOCKMOD"
echo "SPEEDSTEP_CENTRINO? $SPEEDSTEP_CENTRINO" echo "SPEEDSTEP_ICH? $SPEEDSTEP_ICH" echo "SPEEDSTEP_SMI? $SPEEDSTEP_SMI"
fi

if [ $SPEEDSTEP_CENTRINO -eq 1 ]; then
modprobe speedstep-centrino
fi

if [ $SPEEDSTEP_ICH -eq 1 ]; then
modprobe speedstep-ich
fi

if [ $ACPI -eq 1 ]; then
modprobe acpi
fi

if [ $P4CLOCKMOD -eq 1 ]; then
modprobe p4-clockmod
fi

if [ $SPEEDSTEP_SMI -eq 1 ]; then
modprobe speedstep-smi
fi

end of script... and as I'm more interested in the kernel side of cpufreq anyways, I'd be glad if somebody else would finish this script and make it ready for prime-time usage. Are you willing to do so? Would be great!

Dominik

#2 lore raw

Hi Dominik!

That's a very good start... thanks a lot!
I will modify it according to my needs (just need something that sets a variable to the right module name, or leaves it with an empty value otherwise), and will post it to this list for testing, in particular on non Intel processors.

:-)

Michael.

Quoted 164 lines · Michael Opdenacker
Quoted 7 lines

Does anyone here already have a shell script that reads /proc/cpuinfo and returns the name of the corresponding cpufreq module if the processor is supported?

Otherwise, I'll start to write one and ask you guys to test it, as I can only make tests on P4.

I proposed one such shell script a couple of weeks ago and submitted a draft, which I can't locate in the archives ATM so here it is again:

#!/bin/sh

# Copyright (C) 2004 Dominik Brodowski <[email protected]>
#
# This script is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This script tries to detect the best suited x86 cpufreq driver, and
# load it using "modprobe" commands.
#
#

DEBUG=1

KV="$(uname -r | cut -c1-3)"

if [ "$KV" != "2.6" ]; then
echo "Wrong kernel version"
exit 1
fi

# the cpufreq drivers
ACPI=0
P4CLOCKMOD=0
SPEEDSTEP_SMI=0
SPEEDSTEP_ICH=0
SPEEDSTEP_CENTRINO=0
FLAG_EST=0
FLAG_ACPI=0
FLAG_ACC=0
# parse /proc/cpuinfo FAMILY="$(cat /proc/cpuinfo | grep "cpu family" | cut -c14-)"
MODEL="$(cat /proc/cpuinfo | grep "model" | grep -v "model name" | cut -c10-)"
STEPPING="$(cat /proc/cpuinfo | grep "stepping" | cut -c12-)"
# parse for vendor
cat /proc/cpuinfo | grep vendor_id | grep Intel &> /dev/null && INTEL=1
# parse flags
cat /proc/cpuinfo | grep "flags" | grep " est" &> /dev/null && FLAG_EST=1
cat /proc/cpuinfo | grep "flags" | grep " acpi" &> /dev/null && FLAG_ACPI=1
cat /proc/cpuinfo | grep "flags" | grep " tm" &> /dev/null && FLAG_ACC=1

if [ $DEBUG -eq 1 ]; then
echo "CPU family is $FAMILY"
echo "CPU model is $MODEL"
echo "CPU stepping is $STEPPING"
echo "CPU vendor: Intel? $INTEL"
fi

if [ $INTEL -eq 1 ]; then

	case "$FAMILY" in
		"6")
			if [ $DEBUG -eq 1 ]; then
				echo "Pentium 3 or Pentium M detected."
			fi
			case "$MODEL" in
				"9")
					if [ "$STEPPING" == "5" ] ; then
						if [ $FLAG_EST -eq 1 ]; then
							SPEEDSTEP_CENTRINO=1
						fi
					fi
					;;
				"8")
					SPEEDSTEP_SMI=1
					SPEEDSTEP_ICH=1
					;;
				"11")
					SPEEDSTEP_ICH=1
					;;
				*)
					echo "Unknown CPU."
					;;
			esac
			;;
		"15")
			if [ $DEBUG -eq 1 ]; then
				echo "Pentium 4 detected."
			fi
			if [ "$MODEL" == "2" ]; then
				case "$STEPPING" in
					"4")
						SPEEDSTEP_ICH=1
						;;
					"7")
						SPEEDSTEP_ICH=1
						;;
					"9")
						SPEEDSTEP_ICH=1
						;;
					*)
						true
						;;
				esac
			fi
			;;
		*)
			echo "unknown Intel Processor. Aborting."
			exit 1
			;;
	esac
	if [ $FLAG_ACPI -eq 1 ]; then
		if [ $FLAG_ACC -eq 1 ]; then
			P4CLOCKMOD=1;
		fi
	fi
	ACPI=1

fi

if [ $DEBUG -eq 1 ]; then
echo "ACPI? $ACPI"
echo "P4CLOCKMOD? $P4CLOCKMOD"
echo "SPEEDSTEP_CENTRINO? $SPEEDSTEP_CENTRINO" echo "SPEEDSTEP_ICH? $SPEEDSTEP_ICH" echo "SPEEDSTEP_SMI? $SPEEDSTEP_SMI"
fi

if [ $SPEEDSTEP_CENTRINO -eq 1 ]; then
modprobe speedstep-centrino
fi

if [ $SPEEDSTEP_ICH -eq 1 ]; then
modprobe speedstep-ich
fi

if [ $ACPI -eq 1 ]; then
modprobe acpi
fi

if [ $P4CLOCKMOD -eq 1 ]; then
modprobe p4-clockmod
fi

if [ $SPEEDSTEP_SMI -eq 1 ]; then
modprobe speedstep-smi
fi

end of script... and as I'm more interested in the kernel side of cpufreq anyways, I'd be glad if somebody else would finish this script and make it ready for prime-time usage. Are you willing to do so? Would be great!

Dominik

Signature · 2 lines
Michael Opdenacker
http://opdenacker.org/
#3 lore raw
In reply to Dominik Brodowski

Does Vendor/Family/Model/Stepping give you enough information to determine the appropriate cpufreq driver? I notice that you are also looking for the acpi processor flag which will override everything else and using the p4-clockmod driver. Otherwise, it looks like my Dell laptop would have used speedstep-ich according to your script. Is p4-clockmod better than speedstep-ich? Is it true that any processor that has the 'acpi' flag set will use the p4-clockmod driver as your script assumes? Fedora Core 2 does not seem to even include the speedstep-ich driver. Is it obsolete? (Sorry, most of my experience is with AMD mobile processors).

Where can I find more complete info on possible values for the fields of /proc/cpuinfo and the different cpufreq drivers they represent? It doesn't have to be a working script; with the info I'll write my own to include with cpuspeed.

Thanks,
Carl

Quoting Dominik Brodowski <[email protected]>:

Quoted 162 lines · Michael Opdenacker
Quoted 3 lines

Does anyone here already have a shell script that reads /proc/cpuinfo and returns the name of the corresponding cpufreq module if the processor is supported?

Otherwise, I'll start to write one and ask you guys to test it, as I can only make tests on P4.

I proposed one such shell script a couple of weeks ago and submitted a draft, which I can't locate in the archives ATM so here it is again:

#!/bin/sh

# Copyright (C) 2004 Dominik Brodowski <[email protected]>
#
# This script is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This script tries to detect the best suited x86 cpufreq driver, and
# load it using "modprobe" commands.
#
#

DEBUG=1

KV="$(uname -r | cut -c1-3)"

if [ "$KV" != "2.6" ]; then
echo "Wrong kernel version"
exit 1
fi

# the cpufreq drivers
ACPI=0
P4CLOCKMOD=0
SPEEDSTEP_SMI=0
SPEEDSTEP_ICH=0
SPEEDSTEP_CENTRINO=0
FLAG_EST=0
FLAG_ACPI=0
FLAG_ACC=0
# parse /proc/cpuinfo
FAMILY="$(cat /proc/cpuinfo | grep "cpu family" | cut -c14-)"
MODEL="$(cat /proc/cpuinfo | grep "model" | grep -v "model name" | cut -c10-)"
STEPPING="$(cat /proc/cpuinfo | grep "stepping" | cut -c12-)"
# parse for vendor
cat /proc/cpuinfo | grep vendor_id | grep Intel &> /dev/null && INTEL=1
# parse flags
cat /proc/cpuinfo | grep "flags" | grep " est" &> /dev/null && FLAG_EST=1
cat /proc/cpuinfo | grep "flags" | grep " acpi" &> /dev/null && FLAG_ACPI=1
cat /proc/cpuinfo | grep "flags" | grep " tm" &> /dev/null && FLAG_ACC=1

if [ $DEBUG -eq 1 ]; then
echo "CPU family is $FAMILY"
echo "CPU model is $MODEL"
echo "CPU stepping is $STEPPING"
echo "CPU vendor: Intel? $INTEL"
fi

if [ $INTEL -eq 1 ]; then

	case "$FAMILY" in
		"6")
			if [ $DEBUG -eq 1 ]; then
				echo "Pentium 3 or Pentium M detected."
			fi
			case "$MODEL" in
				"9")
					if [ "$STEPPING" == "5" ] ; then
						if [ $FLAG_EST -eq 1 ]; then
							SPEEDSTEP_CENTRINO=1
						fi
					fi
					;;
				"8")
					SPEEDSTEP_SMI=1
					SPEEDSTEP_ICH=1
					;;
				"11")
					SPEEDSTEP_ICH=1
					;;
				*)
					echo "Unknown CPU."
					;;
			esac
			;;
		"15")
			if [ $DEBUG -eq 1 ]; then
				echo "Pentium 4 detected."
			fi
			if [ "$MODEL" == "2" ]; then
				case "$STEPPING" in
					"4")
						SPEEDSTEP_ICH=1
						;;
					"7")
						SPEEDSTEP_ICH=1
						;;
					"9")
						SPEEDSTEP_ICH=1
						;;
					*)
						true
						;;
				esac
			fi
			;;
		*)
			echo "unknown Intel Processor. Aborting."
			exit 1
			;;
	esac
	if [ $FLAG_ACPI -eq 1 ]; then
		if [ $FLAG_ACC -eq 1 ]; then
			P4CLOCKMOD=1;
		fi
	fi
	ACPI=1

fi

if [ $DEBUG -eq 1 ]; then
echo "ACPI? $ACPI"
echo "P4CLOCKMOD? $P4CLOCKMOD"
echo "SPEEDSTEP_CENTRINO? $SPEEDSTEP_CENTRINO" echo "SPEEDSTEP_ICH? $SPEEDSTEP_ICH" echo "SPEEDSTEP_SMI? $SPEEDSTEP_SMI"
fi

if [ $SPEEDSTEP_CENTRINO -eq 1 ]; then
modprobe speedstep-centrino
fi

if [ $SPEEDSTEP_ICH -eq 1 ]; then
modprobe speedstep-ich
fi

if [ $ACPI -eq 1 ]; then
modprobe acpi
fi

if [ $P4CLOCKMOD -eq 1 ]; then
modprobe p4-clockmod
fi

if [ $SPEEDSTEP_SMI -eq 1 ]; then
modprobe speedstep-smi
fi

end of script... and as I'm more interested in the kernel side of cpufreq anyways, I'd be glad if somebody else would finish this script and make it ready for prime-time usage. Are you willing to do so? Would be great!

Dominik

_______________________________________________
Cpufreq mailing list
[email protected]
http://www.linux.org.uk/mailman/listinfo/cpufreq

#4 lore raw
Quoted 2 lines · Carl Thompson

Does Vendor/Family/Model/Stepping give you enough information to determine the appropriate cpufreq driver?

Well, checking for the acpi flag is easier than compiling the vendor/family/model/stepping check for _any_ such CPU...

Quoted 2 lines

I notice that you are also looking for the acpi processor flag which will override everything else and using the p4-clockmod driver.

No -- it p4-clockmod is loaded [almost] last, so all other drivers are tried first, if the CPU supports them. And that's the sane thing to do, as p4-clockmod hardly ever saves any power.

Quoted 5 lines

Otherwise, it looks like my Dell
laptop would have used speedstep-ich according to your script. Is p4-clockmod better than speedstep-ich? Is it true that any processor that has the 'acpi' flag set will use the p4-clockmod driver as your script assumes?

speedstep-ich is better as it also scales voltage in addition to frequency, and if your system executes the "hlt" instruction properly, or even has ACPI C2-support, p4-clockmod will not save you _anything_.

Quoted 2 lines

Fedora Core 2 does not seem to even include the
speedstep-ich driver.

OOOOPS. Dave?

Quoted 2 lines

Is it obsolete? (Sorry, most of my experience
is with AMD mobile processors).

No, it's not obsolete, it is _recommended_ for many systems.

Quoted 4 lines

Where can I find more complete info on possible values for the fields of /proc/cpuinfo and the different cpufreq drivers they represent? It doesn't have to be a working script; with the info I'll write my own to include with cpuspeed.

For Intel-based CPUs, the info I provided should be enough, for AMD, well, you asked a lot of people for it a few minutes ago...

Dominik

_______________________________________________
Cpufreq mailing list
[email protected]
http://www.linux.org.uk/mailman/listinfo/cpufreq

#5 lore raw
Quoted 3 lines · Dominik Brodowski
Quoted 2 lines

Fedora Core 2 does not seem to even include the
speedstep-ich driver.

OOOOPS. Dave?

A grep shows..
CONFIG_X86_SPEEDSTEP_ICH=y

Dave

#6 lore raw

Well, if the module name is supposed to be "speedstep-ich.ko" then I'm not seeing it installed anywhere...

Thanks,
Carl

Quoting Dave Jones <[email protected]>:

Quoted 10 lines · Dominik Brodowski
Quoted 4 lines
Quoted 3 lines

Fedora Core 2 does not seem to even include the
speedstep-ich driver.

OOOOPS. Dave?

A grep shows..
CONFIG_X86_SPEEDSTEP_ICH=y

Dave

#7 lore raw
Quoted 2 lines · Carl Thompson

Well, if the module name is supposed to be "speedstep-ich.ko" then I'm not seeing it installed anywhere...

[...]

Quoted 2 lines
Quoted 2 lines

A grep shows..
CONFIG_X86_SPEEDSTEP_ICH=y

                           ^^^
                           not *m*

it's compiled statically :)

bye

Signature · 3 lines
mattia
:wq!
Hodie Kalendis Aprilibus MMDCCLVII ab urbe condita est
#8 lore raw
In reply to Carl Thompson
Quoted 9 lines · Carl Thompson
Quoted 7 lines
Quoted 3 lines
Quoted 2 lines

Fedora Core 2 does not seem to even include the
speedstep-ich driver.

OOOOPS. Dave?

A grep shows..
CONFIG_X86_SPEEDSTEP_ICH=y

Well, if the module name is supposed to be "speedstep-ich.ko" then I'm not seeing it installed anywhere...

=y means non-modular. It's compiled in.

Dave

#9 lore raw

Sorry! Well, then, if it's compiled in how do I activate it so that it actually works? No cpufreq functionality seems to be active on startup...

Thanks,
Carl

Quoting Dave Jones <[email protected]>:

Quoted 15 lines · Carl Thompson
Quoted 10 lines
Quoted 8 lines
Quoted 4 lines
Quoted 3 lines

Fedora Core 2 does not seem to even include the
speedstep-ich driver.

OOOOPS. Dave?

A grep shows..
CONFIG_X86_SPEEDSTEP_ICH=y

Well, if the module name is supposed to be "speedstep-ich.ko" then I'm not seeing it installed anywhere...

=y means non-modular. It's compiled in.

Dave

#10 lore raw
Quoted 3 lines · Carl Thompson

Sorry! Well, then, if it's compiled in how do I activate it so that it actually works? No cpufreq functionality seems to be active on startup...

hmm puzzling. no cpufreq messages at all during boot ?

What does /proc/cpuinfo say, and is there anything in /sys/devices/system/cpu/cpu0/cpufreq ? (if so, what are the contents of those files)

Dave

#11 lore raw

D'oh! It appears that this is simply not a mobile CPU.

Thanks,
Carl

Quoting Dave Jones <[email protected]>:

Quoted 11 lines · Carl Thompson
Quoted 3 lines

Sorry! Well, then, if it's compiled in how do I activate it so that it actually works? No cpufreq functionality seems to be active on startup...

hmm puzzling. no cpufreq messages at all during boot ?

What does /proc/cpuinfo say, and is there anything in /sys/devices/system/cpu/cpu0/cpufreq ? (if so, what are the contents of those files)

Dave

#12 lore raw
In reply to Carl Thompson

Hi Carl,

Are you trying to write this script for the FC2 /etc/init.d/cpuspeed too? If you can do it, that's great!

Here are details about my processor. According to the specs, it's an Intel Pentium 4B processor at 2.4 GHz (Northwood 533 MHz, 0.13 um, 512 KB cache):

processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Pentium(R) 4 CPU 2.40GHz
stepping : 7
cpu MHz : 899.900
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
bogomips : 4734.97

Note that this processor works with a reduced frequency at the moment... :-)

Cheers,

Michael.

Quoted 192 lines

Does Vendor/Family/Model/Stepping give you enough information to determine the appropriate cpufreq driver? I notice that you are also looking for the acpi processor flag which will override everything else and using the p4-clockmod driver. Otherwise, it looks like my Dell laptop would have used speedstep-ich according to your script. Is p4-clockmod better than speedstep-ich? Is it true that any processor that has the 'acpi' flag set will use the p4-clockmod driver as your script assumes? Fedora Core 2 does not seem to even include the speedstep-ich driver. Is it obsolete? (Sorry, most of my experience is with AMD mobile processors).

Where can I find more complete info on possible values for the fields of /proc/cpuinfo and the different cpufreq drivers they represent? It doesn't have to be a working script; with the info I'll write my own to include with cpuspeed.

Thanks,
Carl

Quoting Dominik Brodowski <[email protected]>:

Quoted 164 lines · Michael Opdenacker
Quoted 4 lines

Does anyone here already have a shell script that reads /proc/cpuinfo and returns the name of the corresponding cpufreq module if the processor is supported?

Otherwise, I'll start to write one and ask you guys to test it, as I can only make tests on P4.

I proposed one such shell script a couple of weeks ago and submitted a draft, which I can't locate in the archives ATM so here it is again:

#!/bin/sh

# Copyright (C) 2004 Dominik Brodowski <[email protected]>
#
# This script is free software; you can redistribute it and/or modify

# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.
#
# This script tries to detect the best suited x86 cpufreq driver, and
# load it using "modprobe" commands.
#
#

DEBUG=1

KV="$(uname -r | cut -c1-3)"

if [ "$KV" != "2.6" ]; then
echo "Wrong kernel version"
exit 1
fi

# the cpufreq drivers
ACPI=0
P4CLOCKMOD=0
SPEEDSTEP_SMI=0
SPEEDSTEP_ICH=0
SPEEDSTEP_CENTRINO=0
FLAG_EST=0
FLAG_ACPI=0
FLAG_ACC=0
# parse /proc/cpuinfo
FAMILY="$(cat /proc/cpuinfo | grep "cpu family" | cut -c14-)"
MODEL="$(cat /proc/cpuinfo | grep "model" | grep -v "model name" | cut -c10-)"
STEPPING="$(cat /proc/cpuinfo | grep "stepping" | cut -c12-)"
# parse for vendor
cat /proc/cpuinfo | grep vendor_id | grep Intel &> /dev/null && INTEL=1
# parse flags
cat /proc/cpuinfo | grep "flags" | grep " est" &> /dev/null && FLAG_EST=1
cat /proc/cpuinfo | grep "flags" | grep " acpi" &> /dev/null && FLAG_ACPI=1
cat /proc/cpuinfo | grep "flags" | grep " tm" &> /dev/null && FLAG_ACC=1

if [ $DEBUG -eq 1 ]; then
echo "CPU family is $FAMILY"
echo "CPU model is $MODEL"
echo "CPU stepping is $STEPPING"
echo "CPU vendor: Intel? $INTEL"
fi

if [ $INTEL -eq 1 ]; then

    case "$FAMILY" in
        "6")
            if [ $DEBUG -eq 1 ]; then
                echo "Pentium 3 or Pentium M detected."
            fi
            case "$MODEL" in
                "9")
                    if [ "$STEPPING" == "5" ] ; then
                        if [ $FLAG_EST -eq 1 ]; then
                            SPEEDSTEP_CENTRINO=1
                        fi
                    fi
                    ;;
                "8")
                    SPEEDSTEP_SMI=1
                    SPEEDSTEP_ICH=1
                    ;;
                "11")
                    SPEEDSTEP_ICH=1
                    ;;
                *)
                    echo "Unknown CPU."
                    ;;
            esac
            ;;
        "15")
            if [ $DEBUG -eq 1 ]; then
                echo "Pentium 4 detected."
            fi
            if [ "$MODEL" == "2" ]; then
                case "$STEPPING" in
                    "4")
                        SPEEDSTEP_ICH=1
                        ;;
                    "7")
                        SPEEDSTEP_ICH=1
                        ;;
                    "9")
                        SPEEDSTEP_ICH=1
                        ;;
                    *)
                        true
                        ;;
                esac
            fi
            ;;
        *)
            echo "unknown Intel Processor. Aborting."
            exit 1
            ;;
    esac
    if [ $FLAG_ACPI -eq 1 ]; then
        if [ $FLAG_ACC -eq 1 ]; then
            P4CLOCKMOD=1;
        fi
    fi
    ACPI=1

fi

if [ $DEBUG -eq 1 ]; then
echo "ACPI? $ACPI"
echo "P4CLOCKMOD? $P4CLOCKMOD"
echo "SPEEDSTEP_CENTRINO? $SPEEDSTEP_CENTRINO" echo "SPEEDSTEP_ICH? $SPEEDSTEP_ICH" echo "SPEEDSTEP_SMI? $SPEEDSTEP_SMI"
fi

if [ $SPEEDSTEP_CENTRINO -eq 1 ]; then
modprobe speedstep-centrino
fi

if [ $SPEEDSTEP_ICH -eq 1 ]; then
modprobe speedstep-ich
fi

if [ $ACPI -eq 1 ]; then
modprobe acpi
fi

if [ $P4CLOCKMOD -eq 1 ]; then
modprobe p4-clockmod
fi

if [ $SPEEDSTEP_SMI -eq 1 ]; then
modprobe speedstep-smi
fi

end of script... and as I'm more interested in the kernel side of cpufreq anyways, I'd be glad if somebody else would finish this script and make it ready for prime-time usage. Are you willing to do so? Would be great!

Dominik

_______________________________________________
Cpufreq mailing list
[email protected]
http://www.linux.org.uk/mailman/listinfo/cpufreq

Signature · 2 lines
Michael Opdenacker
http://opdenacker.org/