Nova: Új Rust illesztőprogram az NVIDIA GPU-khoz Linux 6.15-höz

Nova, Rust

Egy évvel ezelőtt a Red Hat bejelentetteegy új nyílt forráskódú illesztőprogramon végzett munkájukhoz az NVIDIA GPU-k Linux rendszereken történő kezelésére,Új". Elődjétől, a Nouveau-tól eltérően a Nova az inicializálási és vezérlési műveleteket a grafikus kártyába integrált GSP (GPU System Processor) mikrokontrollerre bízza.

És most, néhány hónap leforgása alatt (ellentétben más új projektekkel), úgy tűnik, hogy az illesztőprogram eléggé érett lett ahhoz, hogy a Linux 6.15-ös kernelébe integrálható javítások készleteként ajánlják fel, amely az illesztőprogram kezdeti verziója Linuxon.

Nova, az Linux kernel modulnak készült, amely a DRM alrendszerre támaszkodik a GPU-val való interakció kezeléséhez a felhasználói térből. Fejlesztését a Nouveau evolúciójának tekintik, azzal a fő különbséggel, hogy kizárólag a GSP firmware-rel rendelkező GPU-kat célozza meg, amely az NVIDIA GeForce RTX 2000 sorozat Turing mikroarchitektúrán alapuló modelljeit fedi le.

A Nouveau különbségei és a Nova előnyei

Nova a Nouveau szerkezeti problémáinak megoldására törekszik, amely jelentős átalakítást igényel olyan területeken, mint a memóriakezelés (VMM/MMU) és a kód zárolása. A Nouveau-tól eltérően a Nova az NVIDIA GSP firmware-jét használja fel a GPU inicializálásának és vezérlésének egyszerűsítésére, csökkenti a kód bonyolultságát és kiküszöböli a régebbi kártyák kezelésének szükségességét.

A Nova kód Rust-ban van írva, egy olyan nyelv, amely nemcsak a memóriakezelési hibák minimalizálásával javítja a biztonságot, hanem lehetővé teszi újrafelhasználható rétegek és absztrakciók létrehozását más illesztőprogramok fejlesztéséhez.

A projekt Különféle párhuzamos kezdeményezések támogatják, mint például a rozsda-eszköz illesztőprogramok létrehozásához, rust-pci a PCI busszal és a rust-drm-mel való együttműködéshez DRM és GEM alrendszerekkel való integrációhoz. Ezeket az eszközöket a drm-asahi, az Apple M1 és M2 GPU-k Rust-illesztőprogramjának fejlesztése során is használják, ami a Rust nyelven írt grafikus illesztőprogramok infrastruktúrájának konvergenciájára utal.

A nyelvhasználat A rozsda ebben a fejlesztésben nem véletlen, mivel a Rust olyan mechanizmusokat kínál, amelyek megkönnyítik az áttekintést és az újrafeldolgozást, ami hozzájárul a projekt nagyobb stabilitásához. Ennek a nyelvnek a Linux kernelben való elfogadása egy szélesebb stratégiára reagál, amely a modulírás modernizálására és a fejlesztés elérhetőbbé tételére irányul az új közreműködők számára.

Nem ez az egyetlen folyamatos erőfeszítés a Rust rendszermagba való integrálására. Jelenleg ezen a nyelven fejlesztenek más illesztőprogramokat és rendszereket, például az Apple AGX GPU-illesztőprogramot, az NVMe tárolási támogatást, a PuzzleFS fájlrendszert, valamint különféle biztonsági és eszközkezelési implementációkat. A Rust irányába mutató tendencia továbbra is lendületet vesz a Linux ökoszisztémában, ami jelentős változást jelez a biztonság és a stabilitás kérdéskörében az operációs rendszer kernelfejlesztése során.

Megvalósítási fázisok

Jelenleg A Nova a megvalósítás első szakaszában tart, beépített nova-core, egy körülbelül 400 soros kóddal rendelkező modul, amely létrehozza a GSP firmware-rel való kommunikációhoz szükséges absztrakciókat. A nova-core mellett az NVIDIA firmware-rel való integrációhoz szükséges alapvető hivatkozások is hozzáadásra kerültek.

Érdemes megemlíteni, A Novát eredetileg Linux 6.14-re tervezték egy 232 sornyi kódból álló nova-core modullal, de végül nem került bele, mert Greg Kroah-Hartman említett néhány részletet amit csiszolni kellett.

Az új megerősítéssel, hogy most már szerepel, Most a vezérlő továbblép a következő fázisokra amelybe a tervek szerint hozzá kell tenni:

  • nova-drm: DRM (Direct Rendering Manager) illesztőprogram a GPU-val való interakció kezeléséhez a felhasználói területről.
  • VFIO vGPU menedzserrel: lehetővé teszi az NVIDIA virtuális GPU-k használatát virtualizációs környezetekben.

Végül fontos tisztázni, hogy a Nova eJelenlegi állapotában nem funkcionális vezérlő és hogy a javítások elküldve Ezek csak az alapot jelentenek a vezérlő fejlesztésének megkezdéséhez, vagyis a kód az, amely megalapozza a jövőbeni fejlesztést.