Yhdistetty sunnuntaina ennen taggausta Linux 6.2-rc6 on myöhäinen”korjaus”AMD Secure Encrypted Virtualization Secure Nested Paging (SEV-SNP)-koodille, jotta vältetään mahdolliset määrittelemättömät tilanteet, joissa on vaikeasti korjattavia ongelmia, kun nykyaikainen Linux-isäntä SEV:llä-SNP voi yrittää käynnistää Linux-virtuaalikoneen vanhentuneella ytimellä.
Jotkin AMD SEV-SNP:n ominaisuudet tarvitsevat vieraspuolen tuen toimiakseen oikein, joten jos moderni Linux-isäntä, jossa on uusi ydin, joka tukee nykyaikaisten AMD EPYC-suorittimien uudempia ominaisuuksia, yrittää käynnistää vierasvirtuaalikoneen, jonka ydin ei tue joitain SEV-ominaisuuksien vuoksi voi olla ongelmia – ongelmia, joita ei välttämättä ole helppo diagnosoida. Yllättäen kesti eiliseen asti, ennen kuin päälinjan Linux-ydin sai SEV-SNP-vierasominaisuuden neuvottelutuen käsitelläkseen tätä todellista mahdollisuutta, että isännällä/hypervisorilla on uudempi ydin kuin mitä vieras-VM:issä on.
Tämän SEV-SNP-vierasominaisuuden neuvottelutuen lisäämisestä korjaustiedostosta:
“Hypervisori voi ottaa käyttöön useita uusia ominaisuuksia (SEV_FEATURES[1:63]) ja käynnistää SNP:n vieras. Jotkin näistä ominaisuuksista vaativat vieraspuolen toteutuksen. Jos jokin näistä ominaisuuksista on käytössä ilman vieraspuolen toteutusta, SNP-vieraan käyttäytyminen on määrittelemätön. SNP-vieraskäynnistys voi epäonnistua ei-ilmiselvällä tavalla, mikä vaikeuttaa virheenkorjausta
Sen sijaan, että antaisit vieraan jatkaa ja epäonnistua satunnaisesti myöhemmin, havaitse tämä ajoissa ja epäonnistuu sulavasti.
SEV_STATUS MSR ilmaisee ominaisuuksia, jotka hypervisor on ottanut käyttöön. Käynnistyksen aikana SNP-vieraiden tulee varmistaa, että kaikilla käytössä olevilla ominaisuuksilla on vieraspuolen toteutus. Jos jotakin ominaisuutta ei ole otettu käyttöön vieraassa vieras lopettaa käynnistyksen GHCB-protokollan non-Automatic Exit (NAE) lopetuspyyntötapahtumalla. Täytä SW_EX ITINFO2, jossa on ei-tuettujen ominaisuuksien maski, joista hypervisor voi helposti ilmoittaa käyttäjälle.”
Tätä käsitellään korjauksena, joten se poimittiin Linux 6.2-rc6:lle sen sijaan, että olisi odotettu seuraava yhdistämisikkuna. Se puolestaan myös siirretään pian takaisin vakaaseen Linux-ydinsarjaan.
Eilen x86/urgent pull-pyyntö kuvaili ongelmaa seuraavasti:”SEV-SNP-korjaustiedosto näyttää hieman iso ja ehkä ensi silmäyksellä ei todellakaan kiireellinen materiaali, mutta sen taustalla on tarkoitus epäonnistua sulavasti käynnistettäessä vanhempia ytimiä uudemmissa hypervisoreissa, kun jälkimmäiset tukevat ominaisuuksia, joista nuo vanhemmat ytimet eivät vielä tiedä. Siksi sen pitäisi mennä vakaaseen, joten sen lähettäminen nyt on yhtä hyvä aika kuin mikä tahansa…Pyydä SEV-SNP-vierailijaa tarkistamaan erikseen hypervisorin käyttöön ottamat ominaisuudet ja epäonnistumaan sulavasti, jos vieras ei tue joitakin sen sijaan, että epäonnistuisit epäselvässä ja kovassa-virheenkorjaustapa.”