Korjaus on vireillä x86/urgentin kautta Intel Alder Lake-ja Raptor Lake-prosessoreihin liittyvän ongelman ratkaisemiseksi, jonka vuoksi ytimen kehittäjät eivät toistaiseksi poista Process Context Identifiers (PCID)-tunnisteet käytöstä näissä Intelin mobiili-/pöytätietokoneprosessoreissa.
Linux 6.4-kehitystä varten on määritetty korjaustiedosto, joka myös siirretään takaisin vakaisiin ytimen versioihin, jotta vältetään epätäydelliset INVLPG-huuhtelut. Korjaustiedosto Intel Linuxin insinööri selittää:
“INVLPG-käskyä käytetään mitätöimään TLB-merkinnät määritetylle virtuaaliselle osoitteelle. Kun PCID:t ovat käytössä, INVLPG:n oletetaan mitätöivän TLB-merkinnät molemmissa määritetyissä osoitteissa. nykyiset PCID *ja* Global-merkinnät. (Huomaa: Vain ytimen kohdistaminen on asetettu Global=1.)
Valitettavasti jotkin INVLPG-toteutukset voivat jättää Global-käännökset tyhjentymättä, kun PCID:t ovat käytössä.
Virtakeinona älä koskaan ota PCID:tä käyttöön prosessoreissa, joita asia koskee.
Odotan Tämän ohjelmiston kiertotavan korvataan lopulta mikrokoodin lievennyksiä. Tarkkoja versionumeroita, joissa se tapahtuu, ei kuitenkaan tiedetä tänään. Kun versionumerot on hakattu kiveen, prosessoriluetteloa voidaan muokata niin, että PCID:t poistetaan käytöstä vain asianomaisissa prosessoreissa. vaikuttaa mikrokoodiin.
Huomaa: jos joku haluaa pikakorjauksen, joka ei vaadi korjausta, kiinnitä vain”nopcid”ytimen komentoriville.”
Prosessorit, joita ongelma koskee, loppuvat Intel Alder Lake-ja Raptor Lake-prosessoreina. Kuten korjausviestissä mainittiin, Intelin sanotaan työskentelevän mikrokoodin lieventämiseksi tähän ongelmaan, mutta ainakin toistaiseksi Linux-ydin on asetettu poistamaan PCID-tuki Alder Lakesta/Alder Lakesta L/Alder Lake N/Raptor Lake/Raptor Lake P/Raptor Lake S kunnes mikrokoodin lieventäminen voidaan käsitellä.
INVLPG:tä käytetään määritettyjen TLB-merkintöjen mitätöimiseen. Ainakin Alder Lake ja Raptor Lake älä tarvitse ytimen sivutaulukon eristystä (KPTI) sulamisen lieventämiseen, koska se ei vaikuta näihin uudempiin prosessoreihin. Mutta vanhemmille Intel-prosessoreille PCID-tuki auttoi kompensoimaan osan ytimen sivutaulukon eristämisen/sulamisen lieventämisestä aiheutuvia kustannuksia vuotta sitten. Ytimen PTI dokumentaatio kertoo PCID-tuen eduista laajemmin:
“Process Context Identifiers (PCID) on CPU-ominaisuus, jonka avulla voimme ohittaa koko TLB:n huuhtelemisen sivutaulukoita vaihdettaessa asettamalla erityisen bitin CR3:ssa, kun sivutaulukoita muutetaan. Tämä tekee sivutaulukoiden vaihtamisesta (kontekstin vaihdossa tai ytimen sisään-/ulostulossa) halvempaa. PCID-tuella varustetuissa järjestelmissä kontekstikytkinkoodin on kuitenkin huuhdeltava sekä käyttäjän että ytimen merkinnät pois TLB:stä. Käyttäjän PCID:n TLB-huuhtelu lykätään käyttäjätilaan poistumiseen asti, mikä minimoi kustannukset. Katso veriset PCID/INVPCID-tiedot osoitteesta intel.com/sdm.
…
Järjestelmissä ilman PCID-tukea jokainen CR3-kirjoitus huuhtelee koko TLB:n. Tämä tarkoittaa, että jokainen syscall, keskeytys tai poikkeus tyhjentää TLB:n.”
Joka tapauksessa suoritan joitain Raptor Lake-testejä nähdäkseni, tarkoittaako tämä-ainakin väliaikainen-PCID-tuen poistaminen käytöstä. mihin tahansa loppukäyttäjien tavanomaiseen suorituskykyyn.