尾辻です。
フリーズしてしまうのでまだまだです。すみません。

At Sat, 28 Feb 2009 17:36:19 +0900,
Norikatsu Shigemura <n...@ninth-nine.com> wrote:
> 
> On Sat, 28 Feb 2009 17:02:31 +0900
> Norikatsu Shigemura <n...@ninth-nine.com> wrote:
> >        フリーズした瞬間は, P2 state にいたのがさらに P2 state に移行しようとし
> >        て…を繰り返してという感じな動きになっているというか。P1 state は問題ない
> >        のかな。debug.cpufreq.lowest 指定してそれ以上下がらないようにするのが正
> >        解か調べてみます。
> 
>       あぁ。やっぱこれっポイ!です。dev.cpu.0.freq_lebels 的には 2300MHz が
>       下限っポイ!ですね。
> 
> dev.cpu.0.freq_levels: 3500/-1 3062/-1 2625/-1 2300/-1
> 
>       debug.cpufreq.lowest=2300 にしたら, 安定稼働しています。
> 
>       以上よろしくお願いいたします。

dev.cpu.0.freq_levels: 3500/-1 3062/-1 2625/-1 2300/-1
というのが気になります。変です。というのは、

> hwpstate0: you have 4 P-state.
> hwpstate0: freq=3500MHz volts=1350mV
> hwpstate0: freq=2300MHz volts=1250mV
> hwpstate0: freq=1800MHz volts=1150mV
> hwpstate0: freq=800MHz volts=1000mV
の出力からは、
dev.cpu.0.freq_levels: 3500/-1 2300/-1 1800/-1 800/-1
になって欲しいところです。
それにしても3.5GHzはすごいです。

よくメールを読んでみたら、たぶん
> acpi_throttle0: <ACPI CPU Throttling> on cpu0
これのせいだと思います。
うちのパソコンでは acpi_trhottleがでてこないので色々調べたのですが、
acpi_throttleのソースは_PTCを見るみたいで
acpidump -dt | grep _PTC
の結果がないのでどうにも再現できないです。
webで検索すると、
/boot/loader.confに
hint.acpi_throttle.0.disabled="1"
を書くとacpi_throttleを止められるらしいのですが。
hint.acpi_perf.0.disabled="1"
も要るかもしれません。

At Sat, 28 Feb 2009 17:02:31 +0900,
Norikatsu Shigemura <n...@ninth-nine.com> wrote:
> 
> 重村法克です。
> 
> On Mon, 03 Nov 2008 07:51:21 +0900
> anno...@gmail.com wrote:
> >Phenom/opteron{1,2,8}3XXなcpufreqを作ってみました。
> >まだβバージョンですが。
> 
>       最近 Phenom II を手に入れたのでテストしてみました。

ありがとうございます。

> 
> > current mailing listに投稿しても
> > なんというか、私の英語がひどいのかそれとも、
> > 以前のpstate.cがひどかったのか、それともかなり間があいたからなのか
> > というかんじなものですから、こちらにも投稿させていただきます。
> 
>       ちょいと見てみましたが, 使ってる人が少ない感じかな。という気がします。
>       あの辺だと jkim 氏あたり捕まえるのがいいかも。
> 
> > ベロニカさんの所ではうまくいったのですが、cghostsさんの所では
> > うまくいかないみたいでした。PHKさんの所ではどうなのかわかりません。
> > currentのamd64でもためしているのでamd64でも大丈夫だと思います。
> 
>       私の環境でもあまり安定しませんね。数秒でフリーズしてしまいます。
>       ちなみに動作確認環境は 8-current で amd64 です。

acpi_throttleが効かないという稀?な環境のため安定していたみたいです。
わからないですが。

> 
> > なにぶんはじめてのカーネルモジュールなのでいたらないところ
> > こうしたほうがいいところなど指摘してくださると
> > うれしいです。
> 
>       1. Phenom CPU を直接ご指名のようですが, Phenom II では動きませんで
>          した。詳細はよくわかってないのですが, K10 アーキテクチャ全般で有効な
>          ら P-state invariant TSC のコードを参考に下記のように変更してし
>          まうのがいいかもしれません。
> 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> - -
> --- hwpstate.c.orig   2009-02-26 02:46:11.000000000 +0900
> +++ hwpstate.c        2009-02-27 02:54:04.000000000 +0900
> @@ -15,6 +15,8 @@
>  #include <sys/proc.h>
>  #include <dev/pci/pcivar.h>
>  #include <machine/md_var.h>
> +#include <machine/cputypes.h>
> +#include <machine/specialreg.h>
>  
>  #include <contrib/dev/acpica/acpi.h>
>  #include <dev/acpica/acpivar.h>
> @@ -238,14 +240,9 @@
>                       return (ENXIO);
>       }
>       sc = device_get_softc(dev);
> -     switch (cpu_id) {
> -     case 0x100f2A:          /* family 10h rev.DR-BA */
> -     case 0x100f22:          /* family 10h rev.DR-B2 */
> -     case 0x100f23:          /* family 10h rev.DR-B3 */
> -             break;
> -     default:
> +     if (cpu_vendor_id != CPU_VENDOR_AMD || AMD64_CPU_FAMILY(cpu_id) < 0x10)
>               return (ENXIO);
> -     }
> +
>       msr = rdmsr(MSR_AMD10H_LIMIT);
>       sc->cfnum = AMD10H_GET_PSTATE_MAX_VAL(msr);
>       if (sc->cfnum == 0) {
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> - -

ありがとうございます。
dmesgの
> CPU: AMD Phenom(tm) II X4 940 Processor (3511.86-MHz K8-class CPU)
>   Origin = "AuthenticAMD"  Id = 0x100f42  Stepping = 2
この部分から
case 0x100f42;
とするよりいいかもしれないです。

> 
>       2. カーネルモジュールしかできないということでしたので, kernel configuration
>          に組み込むパッチを作りました。参考までに。
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> - -
> --- sys/conf/files.amd64.orig 2009-02-16 05:24:21.000000000 +0900
> +++ sys/conf/files.amd64      2009-02-26 02:49:23.693819088 +0900
> @@ -270,5 +270,6 @@
>  i386/cpufreq/powernow.c              optional        cpufreq
>  i386/cpufreq/est.c           optional        cpufreq
>  i386/cpufreq/p4tcc.c         optional        cpufreq
> +i386/cpufreq/hwpstate.c              optional        cpufreq
>  #
>  libkern/memset.c             standard
> --- sys/conf/files.i386.orig  2009-02-16 05:24:21.000000000 +0900
> +++ sys/conf/files.i386       2009-02-27 15:01:42.024721231 +0900
> @@ -248,6 +248,7 @@
>  i386/cpufreq/p4tcc.c         optional cpufreq
>  i386/cpufreq/powernow.c              optional cpufreq
>  i386/cpufreq/smist.c         optional cpufreq
> +i386/cpufreq/hwpstate.c              optional cpufreq
>  #i386/i386/apic_vector.s             optional apic
>  i386/i386/atomic.c           standard                \
>       compile-with    "${CC} -c ${CFLAGS} 
> ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}"
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> - -
> 
>       3. ソースの COPYRIGHT がないですね。全体的に style(9) に準拠しきれて
>          いません。COPYRIGHT は /usr/share/examples/etc/bsd-style-copyright
>          を参考にしてください。[id for your version control system, if any]
>          は $FreeBSD$ に置き換えるといいです。style(9) は下記 URL を参考にして
>          ください。
> 
> http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=style&dir=jpman-7.1.2%2Fman&sect=9
> 
>       4. とりあえず dmesg でも。
>          フリーズした瞬間は, P2 state にいたのがさらに P2 state に移行しようとし
>          て…を繰り返してという感じな動きになっているというか。P1 state は問題ない
>          のかな。debug.cpufreq.lowest 指定してそれ以上下がらないようにするのが正
>          解か調べてみます。
> 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> - -
> CPU: AMD Phenom(tm) II X4 940 Processor (3511.86-MHz K8-class CPU)
>   Origin = "AuthenticAMD"  Id = 0x100f42  Stepping = 2
>   
> Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
>   Features2=0x802009<SSE3,MON,CX16,POPCNT>
>   AMD 
> Features=0xee500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM,3DNow!+,3DNow!>
>   AMD 
> Features2=0x37ff<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,OSVW,IBS,SKINIT,WDT>
>   TSC: P-state invariant
>   Cores per package: 4
>   :
> cpu0: <ACPI CPU> on acpi0
> acpi_throttle0: <ACPI CPU Throttling> on cpu0
> hwpstate0: <Cool`n'Quiet 2.0> on cpu0
> hwpstate0: SVI mode
> hwpstate0: you have 4 P-state.
> hwpstate0: freq=3500MHz volts=1350mV
> hwpstate0: freq=2300MHz volts=1250mV
> hwpstate0: freq=1800MHz volts=1150mV
> hwpstate0: freq=800MHz volts=1000mV
> hwpstate0: Now P0-state.
> cpu1: <ACPI CPU> on acpi0
> hwpstate1: <Cool`n'Quiet 2.0> on cpu1
> hwpstate1: SVI mode
> hwpstate1: you have 4 P-state.
> hwpstate1: freq=3500MHz volts=1350mV
> hwpstate1: freq=2300MHz volts=1250mV
> hwpstate1: freq=1800MHz volts=1150mV
> hwpstate1: freq=800MHz volts=1000mV
> hwpstate1: Now P0-state.
> cpu2: <ACPI CPU> on acpi0
> hwpstate2: <Cool`n'Quiet 2.0> on cpu2
> hwpstate2: SVI mode
> hwpstate2: you have 4 P-state.
> hwpstate2: freq=3500MHz volts=1350mV
> hwpstate2: freq=2300MHz volts=1250mV
> hwpstate2: freq=1800MHz volts=1150mV
> hwpstate2: freq=800MHz volts=1000mV
> hwpstate2: Now P0-state.
> cpu3: <ACPI CPU> on acpi0
> hwpstate3: <Cool`n'Quiet 2.0> on cpu3
> hwpstate3: SVI mode
> hwpstate3: you have 4 P-state.
> hwpstate3: freq=3500MHz volts=1350mV
> hwpstate3: freq=2300MHz volts=1250mV
> hwpstate3: freq=1800MHz volts=1150mV
> hwpstate3: freq=800MHz volts=1000mV
> hwpstate3: Now P0-state.
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
> - -
> 
>       以上よろしくお願いいたします。

ありがとうございます。
精進します。
acpiをもっとよく調べてソース書き直したいです。

- - - - - - - - - - - - - - - - - - 
G.Otsuji<anon...@gmail.com>

メールによる返信