Az Nvidia nyílt forráskódúvá tette illesztőprogramjai kernel moduljait

kami911 képe

Emlékeztek még arra hírre, amikor Linus Torvalds, a Linux Kernel atyja élesen kritizálta az Nvidia-t? Ez még 2012-ben történt, egy finnországi hacker találkozón, ahol Torvalds nekiment az Nvidia-nak, „a legrosszabb vállalatnak" nevezte a céget. Sok bit folyt át azóta a Linux Kerneleken is, de a helyzet nem sokat változott. Egészen pár héttel ezelőttig, amikor…

… az Nvidia közzétett egy új Jetson L4T illesztőprogram kiadást és ezzel együtt a build generálásához használt publikus forrásaikat is. Akkor nem remélhette senki igazán, hogy az Nvidia tovább megy az open source úton. Bár már 2019-ben voltak nyomai, hogy esetleg lesznek Nvidia nyílt forráskodú kiadások az illesztőprogramok tekintetében, de nem történt igazából semmi, egészen két nappal ezelőttig.

A bejelentés

Az Nvidia hivatalosan is bejelentette, hogy nyílt forráskódú Linux GPU kernel modulokat adtak ki. Emellett megjelent az 515.43.04-es illesztőprogram verzió is. Ez egy hatalmas lépés, és remélhetőleg lesz még folytatás a vállalattól.

Az Nvidia kernelmodulok forráskódja elérhető a GitHub rendszeréből, a modulokat használó 515.43.04 beta jelőlésű új videokártya illesztőprogram pedig innen.

Az Nvidia blogjegyzésében ezt írja:

Az NVIDIA mostantól a Linux GPU kernelmodulokat nyílt forráskódú, kettős GPL/MIT licenccel teszi közzé, kezdve az R515-ös meghajtó kiadásával. E kernelmodulok forráskódja megtalálható a GitHubon található NVIDIA Open GPU Kernel Modules repóban.

Ez a kiadás jelentős lépés az NVIDIA GPU-k Linuxban való használatának javításában, az operációs rendszerrel való szorosabb integráció érdekében, valamint a fejlesztők számára a hibakeresés, az integráció és a visszacsatolás érdekében. A Linux-disztribúciók szolgáltatói számára a nyílt forráskódú modulok növelik a használat egyszerűségét. Emellett javítják az NVIDIA GPU-illesztőprogram aláírásának és terjesztésének kezdeti használtabavétel felhasználói élményét is. A Canonical és a SUSE azonnal csomagolni tudja a nyílt kernelmodulokat az Ubuntu és a SUSE Linux Enterprise disztribúciókhoz.

A fejlesztők nyomon követhetik a kódútvonalakat, és láthatják, hogy a kernel eseményütemezése hogyan lép kölcsönhatásba az általuk készített szoftver munkaterhelésével, így gyorsabb lehet a kiváltó okok gyorsabb elhárítása. Emellett a vállalati szoftverfejlesztők mostantól zökkenőmentesen integrálhatják az illesztőprogramot a projektjükhöz konfigurált, testreszabott Linux kernelbe.

Ez tovább javítja az NVIDIA GPU-illesztőprogramok minőségét és biztonságát a Linux végfelhasználói közösség hozzájárulása és értékelései révén.

Az NVIDIA minden új meghajtóprogram kiadásakor a GitHubon közzéteszi a forráskód egy pillanatképét. A közösség által benyújtott javításokat felülvizsgálják, és ha jóváhagyják, beépítik egy jövőbeli illesztőprogram-kiadásba.

[…]

A nyílt GPU-modulok első kiadása az R515. A forráskóddal együtt az illesztőprogramok teljesen elkészített és csomagolt változatai is rendelkezésre állnak.

Az NVIDIA Turing és NVIDIA Ampere architektúracsaládba tartozó adatközpontok GPU-i számára ez a kód gyártásra kész. Ezt a GSP-illesztőprogram-architektúra tavalyi, fokozatos bevezetése tette lehetővé, amelynek célja, hogy az NVIDIA ügyfelei számára megkönnyítse az átállást. A munkaterhelések széles skáláján végzett tesztelésre összpontosítottunk, hogy biztosítsuk a saját kernel-módú illesztőprogrammal való funkció- és teljesítményparitást.

A jövőben az olyan funkciók, mint a HMM, az NVIDIA Hopper architektúrán történő bizalmas számítástechnika alapvető összetevői lesznek.

Ebben a nyílt forráskódú kiadásban a GeForce és Workstation GPU-k támogatása alfa minőségű. A GeForce és Workstation felhasználók ezt az illesztőprogramot Turing és NVIDIA Ampere architektúrájú GPU-kon használhatják Linux asztali számítógépek futtatására, és olyan funkciókat használhatnak, mint a több kijelző, a G-SYNC és az NVIDIA RTX sugárkövetés a Vulkan és az NVIDIA OptiX rendszerben. A felhasználók a dokumentációban kiemelt NVreg_EnableUnsupportedGpus kernelmodul paraméterével választhatják ki. A robusztusabb és teljes körű GeForce és Workstation támogatás a későbbi kiadásokban következik majd, és az NVIDIA Open Kernel Modules idővel kiszorítja a zárt forráskódú meghajtót.

Christian F.K. Schaller a RedHat alkalmazásában álló alkalmazott, blogbejegyzésében így értékeli a helyzetet:

Először is, mi van ebben az új meghajtóban?

Ami megjelent, az egy olyan kernel-illesztőprogram, amelynek forráskódja a olyan ágból származik, és amelyet teszteltek a CUDA felhasználási esetek támogatására adatközpont GPU-kon. Van benne kód a megjelenítés támogatására, de ez még nem teljes vagy teljesen tesztelt. Emellett ez csak a kernel része, a modern grafikus vezérlő nagy része a firmware és a felhasználói tér összetevőiben található, és ezek még mindig zárt forráskódúak. De ez azt jelenti, hogy most már van egy NVidia kernel meghajtónk, amely képes lesz használni a linux kernelben lévő, csak a GPL alá tartozó API-kat, bár ez a kezdeti kiadás nem használ olyan API-kat, amelyeket a régi illesztőprogram nem használt. Az illesztőprogram is csak az NVidia Turing chipes GPU-kat és az újabbakat támogatja, ami azt jelenti, hogy nem a 2018 előtti GPU-kat célozza meg. Tehát az átlagos Linux asztali felhasználó számára, bár ez egy nagyszerű első lépés és remélhetőleg egy jel arra, ami még jönni fog még szélesebb támogatás a termékpaletta tekintetében.

Mit jelent ez az NVidia bináris illesztőprogramjára nézve?

Nem túl sokat - most még. A bináris kernel meghajtóra továbbra is szükség lesz a régebbi, Turing előtti NVidia GPU-khoz, és amíg a nyílt forráskódú kernelmodul nem lesz teljes mértékben tesztelve és kibővítve a megjelenítési felhasználási esetekre, valószínűleg továbbra is ezt fogod használni a rendszeredhez, még akkor is, ha Turing vagy újabb rendszerrel dolgozol. Ahogy fentebb említettük, az illesztőprogram nagy része a firmware-ben és a felhasználói térben található, és ezek továbbra is ott lesznek, még akkor is, ha a nyílt forráskódú kernel-illesztőprogram teljes mértékben alkalmas lesz.

Mit jelent ez a Nouveau számára?

A Nouveau ma az NVidia GPU-k rendszermagon belüli grafikus vezérlője. Teljesen működőképes, de súlyosan hátráltatja, hogy nem volt képes például az NVidia órajelváltásra, ami azt jelenti, hogy nem tud teljes teljesítményt nyújtani, mint a bináris meghajtó. Mit jelent tehát ez az új meghajtó a Nouveau számára? Kezdetben ismét nagyon keveset, de hosszú távon sokat. Először is egy kis háttérinformáció. A linux kernel nem engedi a többszörös meghajtókat ugyanahhoz a hardverhez, így ahhoz, hogy egy új NVidia kernel meghajtó kerüljön be, a jelenlegit ki kell vezetni, vagy legalábbis más hardverre kell korlátozódnia. A jelenlegi természetesen a Nouveau. És a bináris meghajtóhoz hasonlóan a Nouveau nagy része nem a kernelben van, hanem a felhasználói térben található darabok a Mesa-ban és a Nouveau specifikus firmware-ben, amit az NVidia jelenleg kiad. Tehát függetlenül a hosszú távú erőfeszítésektől, hogy létrehozzanak egy új nyílt forráskódú, fán belüli kernel-illesztőprogramot, amely ezen az új nyílt forráskódú NVidia hardver-illesztőprogramon alapul, a Nouveau megmarad, hogy támogassa a pre-turing hardvert.
Tehát a terv, amin a mi oldalunkról dolgozunk, de ami valószínűleg néhány évig fog tartani, mire teljes mértékben megvalósul, az az, hogy kitaláljuk, hogy az NVidia bináris meghajtó és a Mesa hogyan tudna megosztani egy kernel meghajtót. A részleteken, hogy hogyan fogjuk ezt megvalósítani, még dolgozunk és tárgyalunk barátainkkal az NVidia-nál, de valószínűleg egy teljesen új meghajtó lesz, amelyet úgy terveztek, hogy mind az NVidia felhasználói tér, mind a Mesa felhasználói tér igényeit kielégítse. Ezzel a fejlődéssel együtt reméljük, hogy az NVidia mérnökeivel együtt dolgozhatunk a Mesa felhasználói tér azon részeinek átalakításán, amelyek most csak a Nouveau-t célozzák, hogy képesek legyenek együttműködni ezzel az új kernel-illesztőprogrammal, és úgy működjenek, hogy a bináris vezérlő és a Nouveau ugyanazt a firmware-t használhassa. Ez egyértelmű előnyökkel jár mind a nyílt forráskódú közösség, mind a bináris meghajtó számára. A nyílt forráskódú közösség számára ez azt jelenti, hogy mostantól olyan kernel-illesztőprogrammal és firmware-rel rendelkezünk, amely lehetővé teszi a GPU órajelének megváltoztatását, hogy az NVidia grafikus kártyáktól elvárt teljesítményt nyújtsa, és ez azt jelenti, hogy olyan nyílt forráskódú vezérlővel rendelkezünk, amely az első naptól kezdve hozzáfér a firmware-hez és a kernelfrissítésekhez az NVidia hardver új generációi számára. A "bináris" meghajtó számára a fentiek szerint azt jelenti, hogy elkezdheti kihasználni a kernelben lévő, csak a GPL alá tartozó API-k előnyeit, a disztribútorok szállítani tudják, és lehetővé teszik a biztonságos rendszerindítást, valamint nyílt forráskódú fogyasztót kap a kernel meghajtójához, ami lehetővé teszi számára, hogy upstream-elni tudjon.
Hogy ez az új megosztott kernelillesztő Nouveau vagy valami teljesen más néven lesz-e ismert, az még nyitott kérdés, és persze az, hogy egyáltalán megtörténik-e, attól függ, hogy mi, a nyílt forráskódú közösség többi tagja és az NVidia képesek vagyunk-e közösen megtalálni az utat, hogy ez megvalósuljon.

Az 515.43.04-es illesztőprogram verzió újdonságai

  • Added support for the VK_EXT_external_memory_dma_buf and VK_EXT_image_drm_format_modifier Vulkan extensions. To use this functionality, the nvidia-drm kernel module must be loaded with DRM KMS mode setting enabled. See the DRM KMS section of the README for guidance on enabling mode setting.

  • Changed nvidia-suspend.service, nvidia-resume.service, and nvidia-hibernate.service to use WantedBy= rather than RequiredBy=dependencies for systemd-suspend.service and systemd-hibernate.service.This avoids a problem where suspend or hibernate fails if the NVIDIA driver is uninstalled without disabling these services first.
    See https://github.com/systemd/systemd/issues/21991
    If these services were manually enabled, it may be necessary to update their dependencies by running sudo systemctl reenable nvidia-suspend.service nvidia-resume.service nvidia-hibernate.service

  • Interlaced modes are now disabled when active stereo is enabled.

  • NVIDIA X Server Settings will now display the quit confirmation dialog automatically if only there are pending changes that need to be manually saved. The corresponding configuration option to control the appearance of the quit dialog was thus also removed.

  • Removed the warning message about mismatches between the compiler used to build the Linux kernel and the compiler used to build the NVIDIA kernel modules from nvidia-installer. Modern compilers are less likely to cause problems when this type of mismatch occurs, and it has become common in many distributions to build the Linux kernel with a different compiler than the default system compiler.

  • Updated nvidia-installer to skip test-loading the kernel modules on systems where no supported NVIDIA GPUs are detected.

  • Updated nvidia-installer to avoid a race condition which could cause the kernel module test load to fail due to udev automatically loading kernel modules left over from an existing NVIDIA driver installation. This failure resulted in an installation error message "Kernel module load error: File exists".

  • Updated the RTD3 Video Memory Utilization Threshold (NVreg_DynamicPowerManagementVideoMemoryThreshold) maximum value from 200 MB to 1024 MB.

Hozzászólások

Nvidia illesztőprogram

Igaza van Linus Torvaldsnak, hiába van Nvidia videóchip a gépemben, nem tudom használni, mert nem működik az újabb illesztőprogramokkal - régebben még ment, de már nem. Még jó, hogy az Intelé normálisan működik.

Értékelés: 

0
Még nincs értékelve
Balazs_B képe

Nvidia illesztőprogram

#1 A márkahűséget nagy butaságnak tartam de én éppen ezért válaszottam AMD GPU-t anno mert azzal nincsennek ilyen gondok. Hiába nagyon jók teljesítményben az nVidia kártyák és szemezgettem is velük, de végül a rosszabb driverezettség miatt nyertek a pirosak nálam és vettem egy RX480-at. Lehet nem a legerősebb kártya, de eddig mindegyik Linux disztribúció ment róla gond nélkül.

Értékelés: 

0
Még nincs értékelve

Nvidia illesztőprogram

#1.1 A notebookot a Nvidia-chippel adták (2 GB videóRAM-mal). Éppen azért vettem ilyen gépet - amelyikben van dedikált videókártya -, hogy tehermentesítsem a processzorban lévő grafikai részt, de úgy tűnik, a Linux és a Nvidia nincs kibékülve egymással.

Értékelés: 

0
Még nincs értékelve
Balazs_B képe

Nvidia illesztőprogram

#1.1.1 Igen, sajnos. Nálunk van a családban egy Acer Aspire i5-8250u+nVidia MX150 páros Linux Minttel. Általában a Mint által felajánlott driverek elég jól működtek és jól lehetett használni a GPU-t, de volt amikor egy hivatalos kernel/firmware frissítés után várni kellett heteket hogy jól működjön.

Értékelés: 

0
Még nincs értékelve
kimarite képe

A firmware az, ami...,

kicsit más megvilágitásba helyezi az elég, de még nem eléggé nagy nyitást: https://m.sg.hu/cikk.php?cid=149806

A GPL és az MIT licencelési eljárásának kombinálásával szabadabbá tett modulok ugyanis nem fedik le magát a meghajtót, a kód nagy része továbbra is rejtett marad a külsősök előtt, ezt ugyanis korábban a firmware oldalára helyezték át. A meghajtókat továbbra is előre összeállított bináris állományként terjesztik majd, vagyis a forráskód nem lesz szabadon hozzáférhető, kezdetben tehát nem látunk majd komoly változásokat ezen a téren.

A lépés ennek ellenére is üdvözlendő, ezzel komoly mértékben javulhat a helyzet a linuxos meghajtók optimalizálása és azok integrálása kapcsán.

Értékelés: 

0
Még nincs értékelve