Nova: jauns Rust draiveris NVIDIA GPU, kas tiek piegādāts operētājsistēmā Linux 6.15

Nova, Rūsa

Pirms gada Red Hat paziņojaviņu darbam pie jauna atvērtā pirmkoda draivera NVIDIA GPU pārvaldībai Linux sistēmās,Jauns». Atšķirībā no sava priekšgājēja Nouveau, Nova paļaujas uz inicializācijas un vadības darbību deleģēšanu GSP (GPU sistēmas procesora) mikrokontrollerim, kas integrēts pašā grafiskajā kartē.

Un tagad, dažu mēnešu laikā (atšķirībā no citiem jaunajiem projektiem), šķiet, ka draiveris ir pietiekami nobriedis, lai to piedāvātu kā ielāpu komplektu, ko integrēt Linux 6.15 kodolā, kas ir sākotnējā draivera versija operētājsistēmā Linux.

Nova, tā ir izstrādāts kā Linux kodola modulis, kas balstās uz DRM apakšsistēmu lai pārvaldītu mijiedarbību ar GPU no lietotāja vietas. Tās izstrāde tiek uzskatīta par Nouveau evolūciju, un galvenā atšķirība ir tā, ka tā ir paredzēta tikai GPU ar GSP programmaparatūru, kas aptver modeļus no NVIDIA GeForce RTX 2000 sērijas, pamatojoties uz Tjūringa mikroarhitektūru.

Atšķirības ar Nouveau un Nova priekšrocības

jaunums cenšas atrisināt Nouveau strukturālās problēmas, kam nepieciešams pamatīgs remonts tādās jomās kā atmiņas pārvaldība (VMM/MMU) un koda bloķēšana. Atšķirībā no Nouveau, Nova izmanto NVIDIA GSP programmaparatūru, lai vienkāršotu GPU inicializēšanu un vadību, samazinot koda sarežģītību un novēršot vajadzību apstrādāt vecās kartes.

Nova kods tas ir rakstīts Rust, valoda, kas ne tikai uzlabo drošību, samazinot kļūdas atmiņas pārvaldībā, bet arī ļauj izveidot atkārtoti lietojamus slāņus un abstrakcijas citu draiveru izstrādei.

Projekts To atbalsta dažādas paralēlas iniciatīvas, piemēram, rust-device draiveru izveidei, rust-pci mijiedarbībai ar PCI kopni un rust-drm integrācijai ar DRM un GEM apakšsistēmām. Šie rīki tiek izmantoti arī drm-asahi, Apple M1 un M2 GPU Rust draivera izstrādē, kas liecina par Rust rakstīto grafikas draiveru infrastruktūras konverģenci.

Valodas lietojums Rūsa šajā attīstībā nav nejaušība, jo Rust piedāvā mehānismus, kas atvieglo pārskatīšanu un pārveidošanu, kas veicina lielāku projekta stabilitāti. Šīs valodas pieņemšana Linux kodolā atbilst plašākai stratēģijai, kuras mērķis ir modernizēt moduļu rakstīšanu un padarīt izstrādi pieejamāku jauniem līdzstrādniekiem.

Šie nav vienīgie centieni integrēt Rust kodolā. Pašlaik šajā valodā tiek izstrādāti citi draiveri un sistēmas, piemēram, Apple AGX GPU draiveris, NVMe krātuves atbalsts, PuzzleFS failu sistēma un dažādas drošības un ierīču pārvaldības implementācijas. Tendence uz Rust turpina iegūt apgriezienus Linux ekosistēmā, iezīmējot būtiskas izmaiņas tajā, kā drošība un stabilitāte tiek risināta operētājsistēmas kodola izstrādē.

Īstenošanas fāzes

šobrīd, Nova ir pirmajā ieviešanas posmā, kurā ir iekļauts nova-core, modulis ar aptuveni 400 koda rindiņām, kas nosaka abstrakcijas, kas nepieciešamas, lai sazinātos ar GSP programmaparatūru. Līdzās nova-core ir pievienotas arī būtiskas saites integrācijai ar NVIDIA programmaparatūru.

Ir vērts pieminēt, ka Sākotnēji tika plānots, ka Nova tiks piegādāta operētājsistēmā Linux 6.14 ar nova-core moduli, kas sastāv no 232 koda rindām, bet beigās tas netika iekļauts, jo Gregs Kroah-Hartman minēja dažas detaļas kam bija nepieciešama pulēšana.

Ar jauno apstiprinājumu, ka tas tagad tiks iekļauts, Tagad kontrolieris pāries uz nākamajām fāzēm kurā plānots pievienot:

  • nova-drm: DRM (Direct Rendering Manager) draiveris, lai pārvaldītu mijiedarbību ar GPU no lietotāja vietas.
  • VFIO ar vGPU pārvaldnieku: ļaus izmantot NVIDIA virtuālos GPU virtualizācijas vidēs.

Visbeidzot, ir svarīgi precizēt, ka Nova ePašreizējā stāvoklī tas nav funkcionāls kontrolieris un ka ielāpi nosūtīti Tie ir tikai pamats kontroliera izstrādes uzsākšanai, proti, tieši kods liks pamatu turpmākai attīstībai.