Miért nincs NX capability a KVM guestben ?

Miért nincs NX capability a KVM guestben , avagy a kernelfejlesztők kiakasztanak...

Ezt ugye onnét lehet észrevenni, hogy ilyen üzenetek jelennek meg a kernel logban:

kernel: kvm: guest NX capability removed

Valamint a guest gép így ugyebár nem lesz teljesen i686 (pentium pro) kompatibilis.

Tehát én hiába fordítok a guestre i686os kernelt, az nx eltávolításával adott esetben pofára eshetek pl. a PaX simán pofára esik pageexec gyakorlati használata esetén teljesen érthető módon.

De miért nincs ? Röviden azért, mert nincs PAE támogatás a host kerneljében.

Na de miért is nincs PAE támogatás a host kernelben ?

Nos azért mert HIGHMEM4G opció esetén a PAE t bannolták.

Nos ugyebár 2 giga ram van a kasznin, a "host gépen", ez ugye azt jelenti hogy alapvetően az 1g-4g-re úgynevezett HIGHMEM ill. - HIGHMEM4G, hogy pontosabb legyek - beállítással rendelkező kernelt használom, hogy kihasználjam a 2G ramot.

A Kconfigban pedig a X86_PAE szakaszban 2007.07.21-e óta van egy ilyen bejegyzés:


       depends on !HIGHMEM4G

Remek.
Nézzük az indoklást:

PAE is useful for more than supporting more than 4GB RAM. It supports
expanded swapspace and NX executable protections. Some users may want NX
or expanded swapspace support without the overhead or instability of
highmem. For these reasons, the following patch divorces CONFIG_X86_PAE
from CONFIG_HIGHMEM64G.

Ez így tökjó, hehe...

Amúgy a !HIGHMEM4G azt jelenti ugyebár, hogy ki lehet választani NOHIGHMEMre és HIGHMEM64G re is amennyire én tudom.

Ugyebár ez a három opció van. Istenkirály, most erre mit mondjak, tök logikus ilyen választási lehetőségekkel ellátni az egységsugarú magamfajtát...

<1 G = no highmem, PAE
1G-4G = highmem4g, no PAE
>4G = highmem64g, PAE

Amúgy ezt már firtatták idén LKML en

Jött a válasz csuklóból:


At least originally, the meaning of the x86 highmem entries were:
No highmem - No highmem, no PAE
HIGHMEM4G - Highmem, no PAE
HIGHMEM64G - Highmem, PAE
X86_PAE and HIGHMEM4G is a bit of a contradiction. I haven't looked
at the logic in detail, or remember offhand if there have been any
weakening of the definitions above; e.g. someone could have implemented
a way to do PAE without highmem, to get access to the NX bits.

A jóember persze nem hagyta magát, említette ezt a jelenséget a vitában itt.

Erre Mingo előállt egy másik válasszal, most erre mondjam azt, hogy 2007ben bannolták a pae-t highmem4g re, most meg 2009 közepe van, és "it just has never really been tested that way.". remek.

A szál még folytatódik, igazán remek a vége is... De ez a lényeg.

Nekem az az érzésem, az említett szál alapján, hogy a !highmem4g helyett inkább highmem et/ !nohighmem-et akartak írni.

Persze válasszak highmem64G t, és dolog nincs vele, jah csak éppen a wine mondjuk segfaultol a hoston érdekes módon, esetleg nem kellene erőltetni. Viszont a PAE mégis kellene, hogy azért a kecske /kvm/ is jóllakjon, és káposzta is megmaradjon /wine/, és mondjuk a memória több mint felét ne kelljen tiltólistára tenni (a nohighmem+pae+resource_64bit kombót inkább nem probáltam ki :D).

A wine mondjuk minden más memóriakezelési buzerálástól is segfaultol, pl. a spéci a 2g/2g től is pl. - ebben is kivették a PAE t de itt meg is indokolták. -, tehát highmem4g vagy semmi.

Lehet, hogy a wine újrafordításával megoldható lenne a highmem64g, dehát inkább asszem fogom az amúgyis szarrágányolt kernelforrásomat, és kiveszem a bant / +1 gányolás mit számít már /

depends on !HIGHMEM4G

a Kconfigból és kész. Aztán majd meglátom.

[Oscon morcos]

Ezek után abban semigen vagyok biztos, hogy a 64bit memory IO resources az nekem annyira szükséges volna 2G ramnál, mint amennyire a KConfig a nyakamba akarja varrni PAE esetére, de majd át kell nézni ezt is hogy miért tették bele.

Majd beszámolok a fejleményekről, a tesztről, hacsak le nem beszél róla valaki, meg lesz helyem a kvm-image nek, meg ilyenek, meg idő estébé...

Nah. kiugattam magam, jóéjt.

U.I.:

A cpuinfo a hoston ír nx-et, de nem ír PAE-t (AMD 64 X2, tehát végülis van nekije enixe).

A guestben viszont már nincs, tehát a kern.logban nem viccből írja, hogy kivette, hanem tényleg kivette az NX cap ot.

Mivel a hostról szedte le a PAE t, valószínűleg nemcsak a KVM el van probléma. De én csak ezt használom (nagyritkán valaminek a tesztelésére)

Hozzászólások

x86_64 bit host hasznalata ?

Futas kozben nem hiszem, hogy siman kepes kikapcsolni PAE modot a hoston.

wine min hasal-el? 3G/1G usr/kernel aranyt hasznalsz ? Nem lehet hogy pont az NX meglete miatt hasal el ?
Nem ertem miert nem jo neked a HIGHMEM64.

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

Nem ertem miert nem jo neked a HIGHMEM64.

A wine fogta magát és segfaultolt.

Nem lehet hogy pont az NX meglete miatt hasal el ?

Pff. ki fog derülni.hoston elvileg van nx cap. cpuinfo szerint, pageexec, segmexec frankón megy 4gvel (=bekapcsolva agyonvágja a winet, leszedve a szükséges engedményneket chpax al meg műxik, szóval tökjó) / hogy miért nem paxctl abba ne menjünk bele , bonyolult talán egyszer írok róla egy másik blogot, valószínűleg egy furcsa ALSA-libc bug shmat() környékén (?). /

wine min hasal-el?

Bármin, még egy winecfg se fut le. Abban bízom, hogy valamivel eltérő lehet a highmem kezelés 4g vs 64g nél, és ezért taknyol el.

Ki fog derülni, ugyanis mindjárt fordítok egy imaget, amiben leveszem a 64bit resource függőséget, és a pae blokkot.

3G/1G usr/kernel aranyt hasznalsz ?
Hja, sima defaultot, bármi mást próbáltam némi teljesítménynövekedést észleltem ugyan pl. 2g/2g-nél ,de a wine szintén eltaknyolt.

x86_64 bit host hasznalata ?

Ez nem opció, egyrészt munka (teljes reinstall), hely meg ilyesmi sincs. Plusz a 32bites appletoknak egy kb. chroot környezet szükséges hogy fusson. jó persze csomagokból fel lehet tolni az ia32libs et ami erre való, de akkor már inkább maradok 32biten.

Ráadásul a fórumban olvasgatva ritkán nagyon úgy tűnik a felhasználói programok , driverek még mindig nem értek meg a 64bit arch. használatára. Teljesítménynövekedés zéró (ezt anno próbáltam pár éve), ami pozitvum a sokkal hatékonyabb ASLR. De őszintén nem éri meg a szívást a felh. cuccossal. Meg vannak még a kiegészítők, mint lirc nvidia binary, amik nélkül nem megy a dolog. Egyiket sem próbáltam 64biten, pláne nem 32bites 3D wine cuccal pl. a nvidiat :-). Biztosan át fogok térni, de nem ma és nem holnap. Évek kérdése, valószínűleg akkor mikor a default vt-m UTF8 lesz. :D. Na jó, 64bitre valszeg előbb :-))

Szóval a PAE gányolás egyszerűbbnek és gyorsabbnak tűnik.

----------------------

r=1 vagyok, de ugatok...

turulnak volt igaza, az NX en hasalt el a dolog, Ha aktív a wine nak becseszett, ha nem akkor meg a kvm ben nincs.

A lassú, az mihez képest. Nekem nem tűnt fel, hogy lassú volna. nemhogy nagyon. De ha tudsz valami konkrét nem laboratóriumi hanem valós cuccot, ami *nagyon* lassú, érdeklődéssel hallgatom.

A 64bit az sajna, addig nem játszik amig ilyen szar, ill. bugos a szoftver ellátottsága. Addig kb. kitörölhetem az architekt el, ha bughalom veszi körül.

Konklúzió: Marad a kvm nx nélkül.

-------------

r=1 vagyok, de ugatok...

wine, lirc, mplayer+w32codecs,firefox + flash+sunjre vane?

Mindez persze ia32libes gányolás nélkül. ;-)

U.i.: A Windows könyvtáradban mekkora a Program Files (x86) ? :-) / xp x64 ről rémlik, lehet >=vista64 nél máshogy hívják, nyílván érted mire gondolok.

-------------

r=1 vagyok, de ugatok...