4. augustā AMD inženieris Krishnamoorthi M nosūtīja Linux kodola vēstkopai ielāpu kopu, kas kodolā ievieš pilnīgi jaunu kopnes tipu eSPI saskarnei. Tas ir otrais gājums. Pirmo, kas to pašu draiveri mēģināja iestūrēt SPI apakšsistēmā, 2025. gada 26. martā atteica SPI uzturētājs Mark Brown.
Kods pārbaudīts uz platformas ar ACPI identifikatoru AMDI0070. Ielāpu kopā ir gan pati kopne, gan AMD eSPI kontroliera draiveris, tāpēc kodolam vienā reizē piedāvā karkasu un pirmo tā lietotāju. Phoronix par kopu ziņoja tajā pašā dienā.
Ko eSPI dara mātesplatē
eSPI protokolu izstrādāja Intel. Tas aizstāj veco LPC saskarni, parasto SPI ķēdi un atsevišķus sānjoslas vadus, ar kuriem mikroshēmojums runā ar BIOS zibatmiņu, iegulto kontrolieri, BMC, virsdarbību kontrolieri un TPM moduli. AMD to savās platformās sāka lietot vēlāk par Intel, tāpēc kodola atbalsts nāk no otrā ražotāja puses.
Protokols datplūsmu sadala četros kanālos. Peripheral channel jeb PC pārnes klasiskās I/O un atmiņas piekļuves. Virtual wire jeb VW aizstāj fiziskus signālu vadus ar paketēm, tāpēc pārtraukumu un barošanas stāvokļa līnijas vairs neprasa katra savu kāju uz čipa. Out-of-band kanāls nes SMBus veida ziņojumus. Flash kanāls ļauj iegultajam kontrolierim lasīt un rakstīt zibatmiņā, kurā glabājas programmaparatūra.
Serveros pa to pašu kopni notiek saruna ar BMC, tāpēc kanālu atbalsts kodolā ir vajadzīgs rīkiem, kas grib programmaparatūru pārrakstīt no operētājsistēmas puses. Bez tā šī saruna paliek tikai programmaparatūras iekšienē.
Kāpēc SPI uzturētājs pirmo variantu atteica
2025. gada martā AMD publicēja desmit ielāpu kopu ar nosaukumu spi: Add driver to support AMD eSPI controller. Draiveris dzīvoja mapē drivers/spi/, taču SPI karkasu tas gandrīz nelietoja. Kanāla izvēli un komandu sūtīšanu tas atdeva lietotājtelpai caur ioctl izsaukumiem. Sestais ielāps kopā, piemēram, pievienoja ioctl komandu kanāla pārslēgšanai starp CHANNEL_MODE_PC un CHANNEL_MODE_VW. Toreiz draiveris atbalstīja tikai šos divus kanālus no četriem.
Mark Brown 26. martā atbildēja īsi.
Ja gribat ignorēt SPI apakšsistēmu un vienkārši uzrakstīt draiveri savam iegultajam kontrolierim, tad lieciet to apakšsistēmā, kas atbild par šo kontrolieri, iespējams MFD, ja tas dara vairākas lietas. Ne SPI.
Brown piebilda, ka SPI apakšsistēma tomēr palīdzētu koda atkalizmantošanai starp dažādiem kontrolieru un iegulto kontrolieru salikumiem, ja vien draiveris karkasu izmantotu pēc būtības. Diskusija par to, vai eSPI paplašina SPI vai kļūst par savu kopnes tipu, aizvilkās vēl gadu un četrus mēnešus.
Jaunā kopne un trīs vietas, kur tā vēl nav gatava
Augusta versija izvēlas otro ceļu. eSPI kļūst par patstāvīgu kopnes tipu ar savu ierīču uzskaitīšanas un draiveru sasaistes loģiku. SPI apakšsistēma tajā vairs neiesaistās.
Kodolā kopnes tips ir vairāk par nosaukumu. Tas nosaka, kā ierīces tiek uzskaitītas, kā tās parādās sysfs kokā un pēc kādām pazīmēm draiveris pie tām piesienas. Kad šāds slānis ir vietā, nākamais ražotājs var pievienot savu kontroliera draiveri zem tās pašas kopnes. Lietotājtelpas rīki turpina strādāt bez izmaiņām. Tieši šis solis pirmajā versijā bija izlaists, jo tur katra darbība gāja caur ioctl izsaukumu, kas bija piesiets AMD draiverim.
Autors pats uzskaita, kas paliek nepadarīts. Device Tree atbalsta nav, jo AMD kods balstās tikai uz ACPI. Pakārtoto ierīču uzskaitīšana ir manuāla, tāpēc kopne pieslēgtos čipus pati neatrod. Daļa operāciju nāks nākamajās ielāpu kopās.
Pirmais no šiem trūkumiem ir svarīgākais tālākajam liktenim. eSPI kontrolieri visbiežāk sēž ARM sistēmās uz čipa, ko lieto BMC ražotāji. Tur konfigurāciju apraksta Device Tree, ne ACPI. Kamēr kopne to nelasa, citiem ražotājiem ar to nav ko darīt.
Trešais mēģinājums divarpus gados
AMD nav pirmais, kas eSPI mēģina iedabūt kodolā. 2024. gada 13. februārī Manojkiran Eda nosūtīja draiveri Aspeed piektās un sestās paaudzes sistēmām uz čipa, kas atbalstīja vienu vienīgo flash kanālu. Tas strādāja līdz 66 MHz un zibatmiņu pieteica kā parastu MTD ierīci, tāpēc darbojās ar standarta mtd rīkiem. Ielāpu skatīja Rob Herring un Krzysztof Kozlowski. Eda tajā vēstulē rakstīja, ka šī ir viņa pirmā iesūtītā izmaiņa kodolā. Kodolā tā neiekļuva.
Kopā ar augusta kopu tas ir trešais publiskais mēģinājums nepilnos divarpus gados. Šoreiz kods vismaz nemēģina iespiesties apakšsistēmā, kuras uzturētājs jau vienu reizi teica nē.
Kodola versija vēl nav nosaukta
Ielāpu kopa ir publicēta apspriešanai. Mērķa kodola versija tajā nav minēta. Jauna kopnes tipa pieņemšana kodolā parasti prasa vairākas ielāpu redakcijas, jo uzturētāji vērtē visu saskarni, ko nākotnē mantos citi ražotāji. AMD martā par ielāpiem rakstīja arī LWN, tobrīd vēl ar SPI nosaukumu virsrakstā.
Šobrīd atvērtais Linux 7.2 cikls 2. augustā sasniedza rc6, tāpēc jaunas kopnes tajā vairs neieies.
Avoti
- Phoronix: AMD Posts Proposal & Linux Patches For eSPI Subsystem
- LKML: Mark Brown atbilde uz PATCH 00/10 spi: Add driver to support AMD eSPI controller
- LWN.net: spi: Add driver to support AMD eSPI controller
- LKML: Add eSPI device driver (flash channel), Aspeed
- LKML: PATCH 06/10 spi: espi_amd: Add eSPI set channel IOCTL command
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.