Oczekuje na poprawkę za pośrednictwem x86/pilne, aby obejść problem z procesorami Intel Alder Lake i Raptor Lake, który na razie pozostawia programistom jądra wyłączenie identyfikatorów kontekstu procesu (PCID) w tych procesorach Intel do urządzeń mobilnych/komputerów stacjonarnych.
Łatka ma zostać włączona do rozwoju Linuksa 6.4, a także przeniesiona wstecznie do stabilnych wersji jądra, aby uniknąć niekompletnych globalnych opróżnień INVLPG. Łatka z inżynier Intel Linux wyjaśnia:
„Instrukcja INVLPG służy do unieważniania wpisów TLB dla określonego adresu wirtualnego. Kiedy PCID są włączone, INVLPG ma unieważniać wpisy TLB dla określonego adresu dla obu bieżące wpisy PCID *i* Global.(Uwaga: tylko mapowania jądra ustawiają Global=1.)
Niestety, niektóre implementacje INVLPG mogą pozostawiać globalne tłumaczenia nieopróżnione, gdy PCID są włączone.
Jako obejście, nigdy nie włączaj PCID na procesorach, których dotyczy problem.
Oczekuję w końcu pojawią się ograniczenia mikrokodu, które zastąpią to obejście oprogramowania.Jednak dokładne numery wersji, w których to się stanie, nie są dziś znane.Po ustaleniu numerów wersji, listę procesorów można zmodyfikować, aby wyłączyć PCID tylko w procesorach, których dotyczy problem, z dotknięty mikrokod.
Uwaga: jeśli ktoś chce szybkiej poprawki, która nie wymaga łatania, po prostu umieść „nopcid” w wierszu poleceń jądra.”
Procesory, których to dotyczy, kończą się być procesorami Intel Alder Lake i Raptor Lake.Jak wspomniano w komunikacie o łatce, Intel podobno pracuje nad łagodzeniem mikrokodu dla tego problemu, ale przynajmniej na razie jądro Linuksa jest ustawione tak, aby wyłączyć obsługę PCID dla Alder Lake/Alder Lake L/Alder Lake N/Raptor Lake/Raptor Lake P/Raptor Lake S, dopóki nie będzie można obsłużyć ograniczenia mikrokodu.
INVLPG służy do unieważniania określonych wpisów TLB. Co najmniej Alder Lake i Raptor Lake nie potrzebują izolacji Kernel Page Table Isolation (KPTI) do łagodzenia Meltdown, ponieważ te nowsze procesory nie mają na to wpływu.Ale w przypadku starszych procesorów Intel obsługa PCID pomogła zrekompensować część kosztów ogólnych związanych z Izolacją tablicy stron jądra/łagodzeniem Meltdown, jak pokazano kilka lat temu. dokumentacja PTI jądra zawiera obszerniejsze informacje na temat korzyści płynących z obsługi PCID:
„Identyfikatory kontekstu procesu (PCID) to funkcja procesora, która pozwala nam pominąć opróżnianie całego TLB podczas przełączania tablic stron poprzez ustawienie specjalnego bitu w CR3, gdy tablice stron są zmieniane. To sprawia, że przełączanie tablic stron (przy przełączaniu kontekstu lub wejściu/wyjściu jądra) jest tańsze. Ale w systemach z obsługą PCID kod przełączania kontekstu musi usunąć wpisy użytkownika i jądra z TLB. Opróżnianie PCID TLB użytkownika jest odroczone do momentu wyjścia z przestrzeni użytkownika, co minimalizuje koszty. Zobacz intel.com/sdm, aby poznać krwawe szczegóły PCID/INVPCID.
…
W systemach bez obsługi PCID, każdy zapis CR3 opróżnia całą TLB. Oznacza to, że każde wywołanie systemowe, przerwanie lub wyjątek opróżnia TLB.”
W każdym razie przeprowadzę kilka testów porównawczych na Raptor Lake, aby zobaczyć, czy to-przynajmniej tymczasowe-wyłączenie obsługi PCID oznacza dla dowolnego ze zwykłych obszarów działania użytkowników końcowych.