Nova: Ny Rust-driver for NVIDIA GPUer som kommer til Linux 6.15

Nova, Rust

For et år siden annonserte Red Hattil arbeidet deres med en ny åpen kildekode-driver for å administrere NVIDIA GPUer på Linux-systemer,Ny". I motsetning til sin forgjenger, Nouveau, er Nova avhengig av å delegere initialiserings- og kontrolloperasjoner til en GSP (GPU System Processor) mikrokontroller integrert i selve grafikkortet.

Og nå, i løpet av noen få måneder (i motsetning til andre nye prosjekter), ser det ut til at driveren har fått nok modenhet til å bli foreslått som et sett med patcher som skal integreres i Linux 6.15-kjernen, dette er den første versjonen av driveren på Linux.

Nova, det er det designet som en Linux-kjernemodul, som er avhengig av DRM-delsystemet for å administrere interaksjon med GPU fra brukerplass. Utviklingen blir sett på som en evolusjon av Nouveau, med den viktigste forskjellen at den utelukkende er rettet mot GPUer med GSP-fastvare, som dekker modeller fra NVIDIA GeForce RTX 2000-serien basert på Turing-mikroarkitekturen.

Forskjeller med Nouveau og fordeler med Nova

Nova søker å løse strukturelle problemer i Nouveau, som krever en større overhaling innen områder som minnehåndtering (VMM/MMU) og låser i koden. I motsetning til Nouveau, utnytter Nova NVIDIAs GSP-fastvare for å forenkle GPU-initiering og kontroll, redusere kodekompleksiteten og eliminere behovet for å håndtere eldre kort.

Nova-koden det er skrevet i Rust, et språk som ikke bare forbedrer sikkerheten ved å minimere feil i minnebehandling, men som også tillater opprettelse av gjenbrukbare lag og abstraksjoner for utvikling av andre drivere.

Prosjektet Det støttes av ulike parallelle initiativer, for eksempel rust-device for å lage drivere, rust-pci for interaksjon med PCI-bussen og rust-drm for integrasjon med DRM- og GEM-delsystemer. Disse verktøyene brukes også i utviklingen av drm-asahi, Rust-driveren for Apple M1 og M2 GPUer, noe som tyder på en konvergens i infrastrukturen til grafikkdrivere skrevet i Rust.

Bruken av språk Rust i denne utviklingen er ingen tilfeldighet, siden Rust tilbyr mekanismer som letter gjennomgang og refaktorering, noe som bidrar til større prosjektstabilitet. Adopsjonen av dette språket i Linux-kjernen reagerer på en bredere strategi som søker å modernisere modulskriving og gjøre utvikling mer tilgjengelig for nye bidragsytere.

Dette er ikke den eneste pågående innsatsen for å integrere Rust i kjernen. Andre drivere og systemer utvikles for tiden på dette språket, for eksempel Apple AGX GPU-driveren, NVMe-lagringsstøtte, PuzzleFS-filsystemet og ulike implementeringer av sikkerhet og enhetsadministrasjon. Trenden mot Rust fortsetter å ta fart i Linux-økosystemet, og markerer et betydelig skifte i hvordan sikkerhet og stabilitet håndteres i utvikling av operativsystemkjerner.

Implementeringsfaser

Tiden, Nova er i sin første implementeringsfase, inkorporert nova-core, en modul med omtrent 400 linjer med kode som etablerer abstraksjonene som er nødvendige for å kommunisere med GSP-fastvaren. Sammen med nova-core er viktige koblinger for integrasjon med NVIDIA-fastvare også lagt til.

Det er verdt Ã¥ nevne at, Nova var opprinnelig planlagt Ã¥ komme pÃ¥ Linux 6.14 med en nova-core-modul bestÃ¥ende av 232 linjer med kode, men til slutt ble den ikke inkludert fordi Greg Kroah-Hartman nevnte noen detaljer som trengte polering.

Med den nye bekreftelsen på at den nå vil bli inkludert, Nå vil kontrolleren gå videre til de neste fasene der det er planlagt å legge til:

  • nova-drm: en DRM-driver (Direct Rendering Manager) for Ã¥ administrere interaksjon med GPU fra brukerplass.
  • VFIO med vGPU-manager: vil tillate bruk av virtuelle NVIDIA-GPUer i virtualiseringsmiljøer.

Til slutt er det viktig å presisere at Nova eI sin nåværende tilstand er det ikke en funksjonell kontroller og at patcher sendt De er kun grunnlaget for å starte utviklingen av kontrolleren, det vil si at det er koden som skal legge grunnlaget for fremtidig utvikling.