Nova: NVIDIA GPU'lar için yeni Rust sürücüsü Linux 6.15'e geliyor

Yeni, Pas

Bir yıl önce Red Hat duyurulduLinux sistemlerinde NVIDIA GPU'larını yönetmek için yeni bir açık kaynaklı sürücü üzerindeki çalışmalarına,Yeni". Öncülü Nouveau'dan farklı olarak Nova, başlatma ve kontrol işlemlerini grafik kartına entegre edilmiş bir GSP (GPU Sistem İşlemcisi) mikrodenetleyicisine devretmeye dayanıyor.

Ve şimdi, birkaç ay içinde (diğer yeni projelerin aksine), sürücünün Linux 6.15 çekirdeğine entegre edilecek bir dizi yama olarak önerilebilecek kadar olgunlaştığı anlaşılıyor; bu, Linux'taki sürücünün ilk sürümü.

Nova, bu Linux çekirdek modülü olarak tasarlandı, DRM alt sistemine dayanan GPU ile etkileşimi kullanıcı alanından yönetmek. Gelişimi Nouveau'nun bir evrimi olarak görülüyor, ancak en önemli farkı, yalnızca Turing mikro mimarisine dayanan NVIDIA GeForce RTX 2000 serisindeki modelleri kapsayan GSP sabit yazılımına sahip GPU'ları hedeflemesi.

Nouveau ile Farkları ve Nova'nın Avantajları

yeni Nouveau'nun yapısal sorunlarını çözmeyi amaçlıyorBu da bellek yönetimi (VMM/MMU) ve koddaki kilitler gibi alanlarda büyük bir revizyon gerektiriyor. Nova, Nouveau'dan farklı olarak GPU başlatma ve kontrolünü basitleştirmek için NVIDIA'nın GSP aygıt yazılımını kullanıyor, kod karmaşıklığını azaltıyor ve eski kartları kullanma ihtiyacını ortadan kaldırıyor.

Nova Kodu Rust ile yazılmış, yalnızca bellek yönetimindeki hataları en aza indirerek güvenliği artırmakla kalmayıp, aynı zamanda diğer sürücülerin geliştirilmesi için yeniden kullanılabilir katmanların ve soyutlamaların oluşturulmasına da olanak tanıyan bir dildir.

proje Rust-device gibi çeşitli paralel girişimler tarafından desteklenmektedir. sürücüler oluşturmak için, PCI veri yolu ve rust-drm ile etkileşim için rust-pci DRM ve GEM alt sistemleriyle entegrasyon için. Bu araçlar aynı zamanda Rust'ta yazılmış grafik sürücülerinin altyapısında bir yakınsama olduğunu öne sürerek, Apple M1 ve M2 GPU'ları için Rust sürücüsü olan drm-asahi'nin geliştirilmesinde de kullanılıyor.

Dil kullanımı Bu gelişmede paslanmanın tesadüf olmadığıRust, projenin daha istikrarlı olmasına katkıda bulunan inceleme ve yeniden düzenlemeyi kolaylaştıran mekanizmalar sunduğundan. Bu dilin Linux çekirdeğinde benimsenmesi, modül yazımını modernize etmeyi ve geliştirmeyi yeni katkıda bulunanlar için daha erişilebilir kılmayı amaçlayan daha geniş bir stratejiye yanıt niteliğindedir.

Rust'ı çekirdeğe entegre etmeye yönelik devam eden tek çaba bu değil. Şu anda bu dilde Apple AGX GPU sürücüsü, NVMe depolama desteği, PuzzleFS dosya sistemi ve çeşitli güvenlik ve cihaz yönetimi uygulamaları gibi diğer sürücüler ve sistemler geliştirilmektedir. Linux ekosisteminde Rust'a yönelik eğilim ivme kazanmaya devam ediyor ve bu durum işletim sistemi çekirdeği geliştirmede güvenlik ve istikrarın nasıl ele alındığı konusunda önemli bir değişime işaret ediyor.

Uygulama aşamaları

Şu anda, Nova, uygulamanın ilk aşamasında, GSP yazılımıyla iletişim kurmak için gerekli soyutlamaları oluşturan yaklaşık 400 satır koddan oluşan bir modül olan nova-core'u bünyesinde barındırıyor. Nova-core ile birlikte NVIDIA firmware entegrasyonu için gerekli bağlantılar da eklendi.

Bahsetmeye değer, Nova'nın başlangıçta Linux 6.14'e gelmesi planlanıyordu 232 satır koddan oluşan bir nova-core modülü vardı, ancak sonunda Greg Kroah-Hartman'ın bazı ayrıntılardan bahsetmesi nedeniyle dahil edilmedi parlatılmaya ihtiyacı vardı.

Artık dahil edileceğine dair yeni onayla birlikte, Şimdi kontrolör bir sonraki aşamaya geçecek Buna eklenmesi planlananlar:

  • nova-drm: Kullanıcı alanından GPU ile etkileşimi yönetmek için bir DRM (Doğrudan İşleme Yöneticisi) sürücüsü.
  • vGPU yöneticisi ile VFIO: NVIDIA sanal GPU'larının sanallaştırma ortamlarında kullanılmasına olanak tanıyacak.

Son olarak, Nova e'nin açıklığa kavuşturulması önemlidir.Mevcut haliyle işlevsel bir denetleyici değildir ve bu yamalar gönderildi Bunlar sadece kontrolörün geliştirilmesine başlamak için bir temeldir, yani gelecekteki geliştirmeler için temel oluşturacak koddur.