[BSD] hw virtualizacio detektalasa

gabor at zahemszky.hu gabor at zahemszky.hu
2016. Okt. 23., V, 10:26:50 CEST


2016-10-22 21:04 időpontban HalaszGabor ezt írta:
> On 2016.10.22. 13:12, Laszlo Hornyak wrote:
>> Hali!
>> 
>> BSD hostokon a hw virtualizacio CPU featurek detektalasaval bibelodok,
>> egy kicsi fapados megoldast talaltam ra:
>> grep Features /var/run/dmesg.boot
>> 
>> Csak egy AMD-procis gepemen fut BSD host OS-kent, a tobbi BSD mind
>> virtualis gepben fut. A fizikai gepen nagyon szepen latszik is, ott az
>> SVM cpu flag. Ami viszont furcsa, hogy a virtualis gepeken is kellene
>> latnia vagy SVM vagy VMX flaget, az osszes linux VM-em latja is. 
>> Tudtok
>> errol valami hasznos olvasmanyt, hogy hogyan detektalja a freebsd vagy
>> egyeb bsd kernel a CPU flageket?
> 
> Elolvastam a dmesg kimenetet:
> 
> root at freebsd:~ # dmesg | grep -i svm
>   AMD
> Features2=0xa10bfd<LAHF,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,OSVW,XOP,FMA4,TBM,PCXC>
>   SVM: NP,NRIP,VClean,AFlush,DAssist,NAsids=64
> 
> vmware player 12.5-ben fut,  10.3-RELEASE.
> 
> Ha okosodni akarsz, a sys/x86/x86/identcpu.c-ben van a varázslat.
> --
> Magyar BSD Levelezlista

Kiegészítem HG velősen tömör és precíz válaszát:

Nem nagyon világos, hogy mi a kérdés. Bootkor a processzor felismerését 
végző
rutin írja ki, azaz a dmesg kimenetében, vagy ha az a sor már kicsordult 
a
pufferből, akkor az általad is írt /var/run/dmesg.today-ben található 
meg:
Intel procis gépen a CPU blokkban a "Features2" sorban lehet egy VMX, 
AMD proci
esetén pedig az "AMD Features2" sorban egy SVM flag. BSD-n nincs annyira
kicicomázva a /proc (és FreeBSD-n még nem is engedélyezett alapból), 
azaz
nincs mondjuk "cat /proc/cpu" . A sysctl-ek közé sincs kivezetve. *Ha* 
betöltötted
a vmm kernel-modult, akkor ugyan van sysctl hw.vmm - de egyrészt
- ez sem default, hogy be lenne töltve
- guest-ben nem jellemző
- pl. régebbi (vrtualizációt amúgy támogató, de bhyve-ot nem) 
processzorok esetén
be se töltődik (Intel C2D és világa)

Azaz ha kell, hogy van-e nekünk ilyenük. akkor egy

grep -i -e 'features2=.*vmx' -e 'features2=.*svm' /var/run/dmesg.today
státuszkódja eléggé egyértelmű.

Szóval mi a kérdés?

Zahy


További információk a(z) BSD levelezőlistáról