For et år siden annoncerede Red Hattil deres arbejde med en ny open source-driver til styring af NVIDIA GPU'er på Linux-systemer,Ny". I modsætning til sin forgænger, Nouveau, er Nova afhængig af at uddelegere initialiserings- og kontroloperationer til en GSP (GPU System Processor) mikrocontroller integreret i selve grafikkortet.
Og nu, i løbet af et par måneder (i modsætning til andre nye projekter), ser det ud til, at driveren har opnået modenhed nok til at blive foreslået som et sæt patches, der skal integreres i Linux 6.15-kernen, hvilket er den første version af driveren på Linux.
Nova, det er designet som et Linux-kernemodul, som er afhængig af DRM-undersystemet at styre interaktion med GPU'en fra brugerpladsen. Dens udvikling ses som en udvikling af Nouveau, med den vigtigste forskel er, at den udelukkende er rettet mod GPU'er med GSP-firmware, som dækker modeller fra NVIDIA GeForce RTX 2000-serien baseret på Turing-mikroarkitekturen.
Forskelle med Nouveau og fordele ved Nova
Nova søger at løse strukturelle problemer i Nouveau, hvilket kræver et større eftersyn på områder som hukommelsesstyring (VMM/MMU) og låse i koden. I modsætning til Nouveau udnytter Nova NVIDIAs GSP-firmware til at forenkle GPU-initialisering og -kontrol, hvilket reducerer kodekompleksiteten og eliminerer behovet for at håndtere ældre kort.
Nova-koden det er skrevet i Rust, et sprog, der ikke kun forbedrer sikkerheden ved at minimere fejl i hukommelseshåndtering, men også tillader oprettelsen af genanvendelige lag og abstraktioner til udvikling af andre drivere.
Projektet Det understøttes af forskellige parallelle initiativer, såsom rust-device til oprettelse af drivere, rust-pci til interaktion med PCI-bussen og rust-drm til integration med DRM- og GEM-undersystemer. Disse værktøjer bliver også brugt i udviklingen af drm-asahi, Rust-driveren til Apple M1 og M2 GPU'er, hvilket tyder på en konvergens i infrastrukturen af grafikdrivere skrevet i Rust.
Brugen af sprog Rust i denne udvikling er ingen tilfældighed, da Rust tilbyder mekanismer, der letter gennemgang og refactoring, hvilket bidrager til større projektstabilitet. Indførelsen af dette sprog i Linux-kernen reagerer på en bredere strategi, der søger at modernisere modulskrivning og gøre udvikling mere tilgængelig for nye bidragydere.
Dette er ikke den eneste igangværende indsats for at integrere Rust i kernen. Andre drivere og systemer udvikles i øjeblikket på dette sprog, såsom Apple AGX GPU-driveren, NVMe-lagringssupport, PuzzleFS-filsystemet og forskellige implementeringer af sikkerhed og enhedsadministration. Tendensen mod Rust fortsætter med at tage fart i Linux-økosystemet, hvilket markerer et markant skift i, hvordan sikkerhed og stabilitet håndteres i udviklingen af operativsystemkerner.
Implementeringsfaser
Currently, Nova er i sin første fase af implementering, indbygget nova-core, et modul med cirka 400 linjer kode, der etablerer de abstraktioner, der er nødvendige for at kommunikere med GSP-firmwaren. Sammen med nova-core er vigtige links til integration med NVIDIA-firmware også blevet tilføjet.
Det er værd at nævne, at Nova var oprindeligt planlagt til at komme på Linux 6.14 med et nova-core-modul bestående af 232 linjer kode, men i sidste ende var det ikke inkluderet, fordi Greg Kroah-Hartman nævnte nogle detaljer der trængte til polering.
Med den nye bekræftelse på, at det nu vil blive inkluderet, Nu vil controlleren gå videre til de næste faser hvori det planlægges at tilføje:
- nova-drm: en DRM-driver (Direct Rendering Manager) til at styre interaktion med GPU'en fra brugerpladsen.
- VFIO med vGPU-manager: vil tillade brugen af NVIDIA virtuelle GPU'er i virtualiseringsmiljøer.
Til sidst er det vigtigt at præcisere, at Nova eI sin nuværende tilstand er det ikke en funktionel controller og at patches sendt De er kun grundlaget for at starte udviklingen af controlleren, det vil sige, at det er koden, der skal lægge grundlaget for fremtidig udvikling.