A Linux kernel PCI alrendszere újabb, felhasználói szempontból is érzékelhető változáshoz érkezett: Ilpo Järvinen „Resizable BAR” fejlesztéssorozata harmadik körben került a levelezőlistára, és már a beolvasztásra kész állapot felé tart. A cél egyszerre gyakorlati és strukturális: a Resizable BAR kezelését a PCI magból egy külön, áttekinthető egységbe szervezni, és közben olyan API-kat adni a meghajtóknak, amelyekkel kevesebb saját kód mellett, biztonságosabban és következetesebben tudják a BAR-ok méretezését elvégezni. A változások az Intel és az AMD grafikus meghajtóit is érintik, miközben a PCI corera vonatkozó dokumentáció és a típusbiztonság is szintet lép.
Tartalomjegyzék

A rebar.c megszületik
A legszembetűnőbb lépés, hogy a Resizable BAR kód kikerül a mindent elnyelő pci.c fájlból, és saját, új modulba, a rebar.c-be költözik. Ezzel a PCI mag felépítése tisztábbá válik, a rebar-specifikus útvonalak egységesen kezelhetők, és a jövőbeni bővítések is könnyebben illeszthetők. A sorozat része a kernel-dokumentáció rendbetétele is: a hibakódok, a terminológia és a visszatérési értékek leírása pontosabb lett, ami a meghajtófejlesztők mindennapi munkáját teszik egyszerűbbé.
Új API-k és 64 bites méretkezelés a kernel PCI magjában
A fejlesztéssorozat több új segédfüggvényt vezet be. A pci_rebar_size_supported() egyszerű igaz/hamis választ ad arra, hogy egy megadott BAR-hoz ténylegesen elérhető-e egy kívánt méret, a pci_rebar_get_max_size() pedig a hardver által támogatott legnagyobb beállítást adja vissza. Ezzel párhuzamosan a BAR-méretbitmaszk 32 bitről 64 bitre vált, ami a PCIe specifikáció által már lefedett – és a jövőben bővíthető – mérettartományok biztonságos kezelését szolgálja. A meghajtói oldalon ennek közvetlen hatása van: az Intel i915 és az új Xe, valamint az AMDGPU kódja a friss PCI-s segédhívásokra áll át, így a VRAM-BAR átméretezése és a támogatott méretek lekérdezése egységes és kevésbé törékeny logikára támaszkodik. A változtatások célzottan egyszerűsítik az endpoint-meghajtók kódját, és csökkentik a rejtett inkompatibilitások esélyét.
