瀧 康史 wrote, On 10/20/11 10:29 PM:
> いわゆるNPT(Nested Page Tables)ですよね?
> Intel VTのEPT(Extended Page Tables)と、AMD-VのRVI(Rapid Virtualization 
> Indexing)がサポートされてるのは、
> 
> Intel:  Nehalemアーキテクチャ以降(core i7のアーキテクチャ)
> AMD: K10アーキテクチャ以降(4コア以上のOpteron、あるいはPhenom)
> 
> あたりがサポートされています(Wikipediaとかで調べた限り)。

Celeron G1101 は Nehalem 世代の Clarkdale なんで VT-x gen2 ですかね。確証はあ
りません。

> 
> 
> 差分を見るとわかるはずだとおもったんですが・・・・
> Opteron 2347HE
>          amd_lzcnt popcnt amd_sse4a tscp ahf cx16 mon sse3 sse2 sse fxsr 
> amd_3dnowx
>          amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc fpu
> Xeon L5506
>          sse4.2 sse4.1 ssse3 popcnt tscp ahf cx16 mon sse3 pause sse2 sse fxsr
>          mmx cmov sep cx8 tsc fpu
> Opteron 254
>          ahf sse3 sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc
>          cx8 tsc fpu
> 
> うーん・・・・・tscp??
> この細かいやつを調べるときに、いつも分からなくて困るんですよね。
> だれか、この細かいのの調べ方、ご存じないですか?

tscp は rdtscp 命令の有無です。
このあたりですかね
http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/sys/auxv_386.h

CPU が VMX をサポートしているかどうかは isainfo ではわかりません。isainfo は主
に userland に対して CPU がサポートしている hardware capabilities の情報を提供
する物なので、VMX のように userland にとってあまり意味のない物は含まれていない
ようです。かといって、kernel 内の feature 一覧にもないようですね。
というわけで、プログラム的に調べるには CPUID.1:ECX.VMX[bit 5] をチェックする必
要がありそうです。cpuid 命令を直に実行してもいいし、cpuid(7D) ドライバをつかっ
ていいと思います。ただ、EPT のようにVMX の拡張機能をサポートしているかどうかを
プログラム的に調べるのはちょっと面倒そうです。Intel(R) 64 and IA-32
Architectures Software Developer's Manual, Vol3B の Appendix G: VMX Capability
Reporting Facility によると、EPT は IA32_VMX_EPT_VPID_CAP MSR (48Ch) を調べる
必要があるらしいです。CPU の msr は rdmsr 命令を使って読むのですが、rdmsr は特
権命令ですので userland からは使えません。Linux とかだと msr を読み書きする危
険なドライバが用意されていたと思いますが、Solaris にはそういうのはなかったと思
います。ので、自分で kernel モードで実行されるドライバ的なものを用意する必要が
ありそうです。

> 
> ところで、KVMって、NPTが必須なんでしょうか?しらなかった。

VT-x あるいは AMD-v が必要なような記述は見つけたのですが、EPT が必要というよう
な記述は見つけられませんでした。


Kenjiro Tsuji
_______________________________________________
ug-jposug mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/ug-jposug

メールによる返信