Hatena::ブログ(Diary)

winplusの日記 このページをアンテナに追加 RSSフィード

2008-03-17

powernow-k8の再コンパイル(電圧変更)

さぼっていたubuntuのアップデイトを行ったら、カーネルのバージョンがあがっていた。予想どおり、電圧を下げる設定がきかなくなった。で、powernow-k8の再コンパイルで対応した。以下、そのメモ。

  • Linux 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux
  • AMD Athlon(tm) 64 X2 Dual Core Processor 3600+
  • BIOSTAR TF7025-M2 (GeForce7025)

/usr/src/linuxのリンク先は現行の/usr/src/linux-source-2.6.22になっていた。/usr/src/linux/arch/i386/kernel/cpu/cpufreq/powernow-k8.cを開いてみると、バージョンが2.0に上がっていたので、この前のパッチはそのまま使えそうにない。で、パッチを開いて変更箇所を確認していくと、ほとんど反映されていた。反映されていないのは以下の1行のみ。

*** /usr/src/linux/arch/i386/kernel/cpu/cpufreq/powernow-k8.c   2007-12-27 16:57:50.000000000 +0900
--- /tmp/powernow-k8.c  2008-03-17 21:26:19.000000000 +0900
***************
*** 922,927 ****
--- 922,928 ----
                        printk(KERN_INFO PFX "invalid freq entries %u kHz vs. %u kHz\n",
                                powernow_table[i].frequency,
                                (unsigned int) (data->acpi_data.states[i].core_frequency * 1000));
+                       if ( ( freq_list_count <= 1 ) || ( !freq_list_count ) )
                        powernow_table[i].frequency = CPUFREQ_ENTRY_INVALID;
                        continue;
                }

カーネルすべての再コンパイルは大げさなので、以下のサイトを参照に、モジュール(powernow-k8.ko)のみコンパイルしてみる。

http://www.devdrv.co.jp/linux/kernel26-makefile.htm

  1. 適当なディレクトリを作成する。
  2. 作成したディレクトリに、powernow-k8.cとpowernow-k8.hをコピーする。
  3. powernow-k8.cを修正する(上記の一行追加)。
  4. Kbuildファイルを作成する(内容は下記参照)。
  5. コマンド[sudo make -C /usr/src/linux-2.6.14.3 M=`pwd` V=1]を実行
  6. powernow-k8.koができあがる
  7. /lib/modules/2.6.22-14-generic/kernel/arch/i386/kernel/cpu/cpufreq/powernow-k8.koをバックアップしておく。
  8. /lib/modules/2.6.22-14-generic/kernel/arch/i386/kernel/cpu/cpufreq/に、作成したpowernow-k8.koを配置する。
  9. 再起動。

Kbuildファイル

$ vi Kbuild
  obj-m := powernow-k8.o
  clean-files := *.o *.ko *.mod.[co] *~

以上で、これまでどおり電圧を下げることができるようになった。

ちなみに現在の設定は以下のとおりです。

cat /etc/modules
......
powernow-k8 freq_list=1900,1600,1000 vcore_list=1080,1030,930
cpufreq_userspace
......

気になるのがファイルサイズ。なんでこんなに違うのか。

-rw-r--r-- 1 root root 161544 2008-03-17 21:27 powernow-k8.ko
-rw-r--r-- 1 root root  20644 2008-02-12 19:41 powernow-k8.ko.orig