
Az NVIDIA nyílt forráskódú Linux-meghajtójának, a Nouveau-nak a felhasználói hosszú ideje küzdenek a véletlenszerű lefagyásokkal és instabilitással. A hiba nyomon követése és reprodukálása rendkívül nehéz volt, ám a közelmúltban a közösség áttörést ért el. Egy új, mindössze pár soros javítás drámai módon növelheti a driver megbízhatóságát, és a Linux 6.17-es kernelben már elérhetővé is válhat.
A hosszan tartó bizonytalanság okai
A Nouveau, az NVIDIA kártyákhoz készült nyílt forráskódú meghajtó a stabilitás és teljesítmény terén gyakran elmaradt a zárt forráskódú alternatívától. A fejlesztők számára az egyik legnagyobb kihívást a nehezen nyomon követhető fagyások és teljesítményproblémák jelentették. Faith Ekstrand és David Airlie munkájának köszönhetően azonban végre kiderült, hogy a probléma gyökere egy úgynevezett "fencing bug" (kerítési hiba) volt, amelynek következtében a grafikus kontextus (context) véletlenszerűen megfagyott. Ez a jelenség nemcsak az adott alkalmazás vagy játék lefagyását okozta, hanem szélsőséges esetekben a teljes X.Org szerver vagy a kompozitor elvesztéséhez is vezethetett, ami a rendszer instabilitását eredményezte.
A rejtélyes időtúllépések gyógyírja
David Airlie, a neves Linux-kernel fejlesztő olyan javítócsomagot tett közzé, amelyet sokan a megbízhatóbb Nouveau élmény hiányzó "fűszerének" neveznek. A patch egy olyan hibát orvosol, amely a illesztőprogramban lévő megszakítások (interrupts) kezelésével kapcsolatos. Korábban a meghajtó letiltott bizonyos, úgynevezett non-stall interrupts (nem megakadó megszakítások) eseményeket, hogy megakadályozza az esetleges „megszakítás-viharokat” (interrupt storms), még akkor is, ha azok továbbra is kérték a kiadásukat. Ez az ellentmondásos viselkedés hosszabb ideje észlelhető időtúllépéseket (timeouts) eredményezett, amelyek különösen a legújabb Blackwell GPU-k esetében váltak zavaróvá.
A megoldás és a várható hatások
A javítás lényege, hogy a driver a továbbiakban nem tiltja le ezeket a megszakításokat normál működés közben. Ehelyett a rendszer eseménykezelő kódja (event handling code) szűri ki őket, a driver pedig maga gondoskodik a be- és kikapcsolásukról a betöltés (load time) során. Ez a megközelítés sokkal hatékonyabb, és végre megoldást nyújt a régóta fennálló időtúllépési problémákra. Bár a fejlesztők szerint ez a változtatás nem orvosolja az összes létező időtúllépési problémát, egy további, folyamatban lévő fence-emissions (kerítéskibocsátási) javítás a maradék gondokat is elháríthatja. A mindössze pár tucat sornyi kódváltozásnak köszönhetően a Nouveau driver stabilitása jelentősen javulhat.
A patch-et már felcímkézték a Linux 6.17-es kernelbe való visszaportolásra (back-porting), és várhatóan a napokban bekerül a hibajavításokat tartalmazó gyűjteménybe, mielőtt a Linux 6.17-rc5 végleges formát ölt. Ezzel a frissítéssel a nyílt forráskódú NVIDIA felhasználók sokkal stabilabb és megbízhatóbb grafikus élményre számíthatnak, ami egy újabb fontos lépés a Linux asztali számítógépes élményének fejlesztése felé.
