Red Hat izstrādātājs Deivs Airlijs 9. septembrī atjaunināja divus darba atzarus, kuros atvērtā koda draiveri nouveau un NVK startē uz NVIDIA DGX Spark. Kodola pusē tam vajadzēja aptuveni 100 ielāpu un jaunu GSP programmaparatūras sēriju. Vulkan draiverim NVK pietika ar diviem ielāpiem.
DGX Spark ir NVIDIA galda dators ar GB10 Grace Blackwell mikroshēmu un 128 GB kopīgas LPDDR5X atmiņas. Grafikas daļai nav savas atsevišķas videoatmiņas, tāpēc draiveris ierauga GPU ar 0 baitiem VRAM. Nouveau un NVK abi bija rakstīti ar pieņēmumu, ka diskrētam NVIDIA čipam VRAM ir. Liela daļa darba aizgāja tieši šī pieņēmuma izķeršanai.
Sākums ir r610 programmaparatūra
Kopš Turing paaudzes nouveau ar aparatūru nerunā tieši. Komandas iet caur GSP mikrokontrolieri, kuram NVIDIA izsniedz slēgtu programmaparatūru. Katra tās sērija maina saskarni. Galvenajā kodola kokā nouveau strādā ar r570 sēriju. Airlija atzars nouveau-610-wip-spark tam pievieno r610, jo GB10 ar vecāko programmaparatūru nestartē vispār.
Jauna GSP sērija nav vienkārša faila nomaiņa. Vairāki ielāpi atzarā pārkārto esošos izsaukumus tā, lai viens kods apkalpotu abas versijas. DP_CONFIG_STREAM parametrus tagad izvēlas pēc programmaparatūras versijas, nevis pēc čipa. Atsevišķa rinda pārtulko dzinēju identifikatorus, kurus r610 numurē citādi.
Displeja kods pārbūvēts caur IMP
Vislielākā ielāpu kaudze skar displeju. NVIDIA programmaparatūrā ir pārbaude ar nosaukumu isModePossible, saīsināti IMP, kas pasaka, vai konkrētā izšķirtspējas un slāņu kombinācija vispār ievietosies displeja kontroliera joslas platumā. Nouveau to līdz šim neizmantoja un vienkārši mēģināja režīmu ieprogrammēt. Uz GB20x, kas ir GB10 grafikas daļas apzīmējums, tāda pieeja vairs nestrādā.
4. septembra ielāpu partija pievieno IMP izsaukumu, pārbauda režīmus jau ierīces atrašanas brīdī, izskaita katra loga izmantojuma robežas un sadala tile un phywin resursus starp galvām. Turpat ir salaboti vblank pārtraukumi uz GB20x, HDMI GCP AVMute reģistru nobīdes un ražotāja infokadri. Pēdējais commit atzarā, datēts ar 9. septembri, saucas vienkārši “call lots of extra things to make IMP work”.
Daļa no šiem labojumiem Spark ar sevi nebeidzas. Commitu nosaukumos figurē GB20x. Tas ir apzīmējums visai Blackwell saimei, kurā GB10 iebūvētais GB20B ir viens loceklis. Galvas stāvokļa nolasīšana, vblank pārtraukumi un HDMI reģistru nobīdes ir salabotas visai paaudzei, tātad arī parastajām GeForce kartēm, kurām nouveau displeja daļa līdz šim uzvedās nestabili.
Vēl viens agrāks bloks no 11. augusta pārceļ displeja objektus no VRAM adresēm uz IOVA kartējumiem. Bez tā displejs uz Spark neko nezīmē, jo adreses, kurās kadru buferi meklē GSP, uz vienotās atmiņas mašīnas norāda citur. Displeja pārbūves lielākā daļa nāk no cita izstrādātāja sērijas, ko Airlijs ievilka savā atzarā.
NVK pusē divi ielāpi
Vulkan draiverim vajadzēja krietni mazāk. Atzarā nvk-spark-wip virs Mesa galvenā zara ir divi commiti. Pirmais pievieno gb20b dziļuma un trafareta bufera flīzēšanas apstrādi NIL bibliotēkā. Otrais, ar nosaukumu “nvk: handle 0 VRAM GPUs better”, liek draiverim ziņot pareizus atmiņas tipus uz Spark ierīcēm.
Otrā ielāpa apraksts atklāj, kā šī vieta bija uzrakstīta agrāk. NVK līdz šim pārbaudīja, vai čips ir SOC. No tā tas secināja, ka atsevišķas videoatmiņas nav. GB10 par SOC neuzdodas. Tagad NVK pārbauda VRAM apjomu tieši un uz nulli reaģē pareizi.
Darbs sācies aprīlī
Commitu datumi rāda, cik ilgi šī pacelšana vilkusies. NVK ielāps par 0 VRAM ir uzrakstīts 15. aprīlī, bet atzarā ievietots tikai 9. septembrī. Kodola pusē pirmie displeja objektu labojumi ar IOVA kartējumiem un GB20B displeja klases atbalstu ir no 11. augusta. Nedēļu vēlāk, 19. augustā, parādījās atsevišķs atzars ar nosaukumu nouveau-spark-610-disp-hacks, kurā GSP displeja apstrāde tika sadalīta pa čipiem. Septembrī viss tas savākts vienā vietā.
Upstream gaida Nova
Neviens no abiem atzariem nav apvienots ar galveno koku. Airlijs savā blogā raksta, ka ar simts ielāpiem un jaunu programmaparatūru šis kods drīzāk pagaidīs.
GB10 un DGX Spark atbalsts, visticamāk, nozīmē gaidīšanu, līdz notiks pāreja uz Nova draiveri.
Nova ir Rust valodā rakstīts NVIDIA draiveris, ko kodolā veido kā nouveau pēcteci GSP paaudzes kartēm. NVIDIA tam jau sūta savu kodu. 7. septembrī uzņēmums nosūtīja 13 ielāpus, kas vGPU pārvaldnieku pārceļ uz Nova. Ja r610 atbalsts nonāks tur, vecajā nouveau to divreiz rakstīt nevajadzēs.
Praktiskā vērtība pagaidām ir ierobežota. DGX Spark pircēji dabū NVIDIA slēgto steku, kas uz šīs mašīnas strādā. Atvērtais draiveris tur neko neatrisina. Svarīgāks ir tas, ka pēc GB20B pacelšanas nouveau un NVK zina, kā rīkoties ar NVIDIA GPU, kuram VRAM nav nemaz. Tas pats jautājums atkārtosies katrā nākamajā Grace Blackwell klases ierīcē.
Airlija Mesa atzara pēdējais commit datēts ar 9. septembri pulksten 13.50 pēc Austrālijas austrumu laika. Kodola atzars pēdējoreiz mainīts tās pašas dienas rītā.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.