Nova: מנהל התקן Rust חדש עבור NVIDIA GPUs שמגיע ללינוקס 6.15

נובה, רוסט

לפני שנה הכריזה רד האטלעבודתם על מנהל התקן חדש בקוד פתוח לניהול GPUs של NVIDIA במערכות לינוקס,חָדָשׁ". בניגוד לקודמו, נובו, נובה מסתמכת על האצלת פעולות אתחול ובקרה למיקרו-בקר GSP (GPU System Processor) המשולב בכרטיס הגרפי עצמו.

ועכשיו, תוך מספר חודשים (בניגוד לפרויקטים חדשים אחרים), נראה שהדרייבר זכה לבשלות מספקת כדי להיות מוצע כסט של תיקונים לשילוב בקרנל Linux 6.15, שזוהי הגרסה הראשונית של הדרייבר בלינוקס.

נובה, זה כן מעוצב כמודול ליבת לינוקס, המסתמכת על תת-מערכת ה-DRM לניהול אינטראקציה עם ה-GPU ממרחב המשתמש. הפיתוח שלו נתפס כאבולוציה של נובו, כשההבדל העיקרי הוא שהוא מיועד אך ורק למעבדי GPU עם קושחת GSP, המכסה דגמים מסדרת NVIDIA GeForce RTX 2000 המבוססים על המיקרו-ארכיטקטורה של Turing.

הבדלים עם נובו ויתרונות של נובה

נובה מבקש לפתור בעיות מבניות של נובו, המצריך שיפוץ גדול בתחומים כמו ניהול זיכרון (VMM/MMU) ונעילה בקוד. בניגוד לנובו, נובה ממנפת את קושחת ה-GSP של NVIDIA כדי לפשט את האתחול והבקרה של GPU, להפחית את מורכבות הקוד ולבטל את הצורך בטיפול בכרטיסים ישנים יותר.

קוד נובה זה כתוב בחלודה, שפה שלא רק משפרת את האבטחה על ידי מזעור שגיאות בניהול הזיכרון, אלא גם מאפשרת יצירת שכבות והפשטות הניתנות לשימוש חוזר לפיתוח מנהלי התקנים אחרים.

proyecto אל הוא נתמך על ידי יוזמות מקבילות שונות, כגון מכשיר חלודה ליצירת דרייברים, rust-pci לאינטראקציה עם ה-PCI bus ו-rust-drm לאינטגרציה עם תתי מערכות DRM ו-GEM. כלים אלה נמצאים בשימוש גם בפיתוח של drm-asahi, מנהל ההתקן Rust עבור Apple M1 ו-M2 GPUs, מה שמצביע על התכנסות בתשתית של מנהלי התקנים גרפיים שנכתבו ב-Rust.

השימוש בשפה חלודה בפיתוח זה אינו מקרי, שכן Rust מציעה מנגנונים המקלים על סקירה ועיבוד מחדש, מה שתורם ליציבות רבה יותר של הפרויקט. האימוץ של שפה זו בליבת לינוקס מגיב לאסטרטגיה רחבה יותר השואפת לחדש את כתיבת המודולים ולהפוך את הפיתוח לנגיש יותר לתורמים חדשים.

זה לא המאמץ המתמשך היחיד לשלב Rust בקרנל. מנהלי התקנים ומערכות אחרים מפותחים כעת בשפה זו, כגון מנהל ההתקן של Apple AGX GPU, תמיכה באחסון NVMe, מערכת הקבצים PuzzleFS, ויישומי אבטחה וניהול מכשירים שונים. המגמה לכיוון Rust ממשיכה לצבור תאוצה במערכת האקולוגית של לינוקס, ומסמנת שינוי משמעותי באופן הטיפול באבטחה ויציבות בפיתוח ליבת מערכת ההפעלה.

שלבי יישום

נכון לעכשיו, נובה נמצאת בשלב הראשון ליישום, משולב nova-core, מודול עם כ-400 שורות קוד שמבסס את ההפשטות הנחוצות לתקשורת עם קושחת GSP. יחד עם nova-core, נוספו גם קישורים חיוניים לשילוב עם קושחת NVIDIA.

ראוי להזכיר כי, נובה תוכננה בתחילה להגיע ב-Linux 6.14 עם מודול nova-core המורכב מ-232 שורות קוד, אבל בסופו של דבר הוא לא נכלל בגלל שגרג קרוה-הרטמן הזכיר כמה פרטים שהצריך ליטוש.

עם האישור החדש שהוא ייכלל כעת, כעת הבקר יעבור לשלבים הבאים שבו מתוכנן להוסיף:

  • nova-drm: מנהל התקן DRM (מנהל עיבוד ישיר) לניהול אינטראקציה עם ה-GPU ממרחב המשתמש.
  • VFIO עם מנהל vGPU: יאפשר שימוש במעבדים וירטואליים של NVIDIA בסביבות וירטואליזציה.

לבסוף, חשוב להבהיר שנובה הבמצבו הנוכחי, זה לא בקר פונקציונלי וכי ה תיקונים נשלחו הם רק הבסיס להתחלת הפיתוח של הבקר, כלומר, הקוד הוא שיניח את הבסיס לפיתוח עתידי.