Poprawka jest w drodze do głównego jądra Linuksa 6.4, a także przeznaczona do przeniesienia z powrotem do istniejącej serii stabilnych jąder, aby naprawić raportowanie topologii x86 dla systemów Intel Hybrid. Błąd topologii w jądrze staje się bardziej widoczny w laptopach Meteor Lake, gdzie obecnie wewnętrzne laptopy testowe Intela mogą zgłaszać systemy posiadające 11 gniazd procesora, zamiast właściwej liczby rdzeni zawartych w jednym gnieździe procesora.
Chociaż projekty hybrydowych procesorów Intela były powszechne od końca 2021 roku, jądro Linuksa do tej pory nie obsługiwało poprawnie zmiennej „smp_num_siblings”, która z kolei jest propagowana do przestrzeni użytkownika i może w rezultacie zgłaszać nieprawidłowe informacje. W przypadku nadchodzącej platformy Intel Meteor Lake P, jądro Linuksa do tej pory ze wspólną komendą lscpu zgłaszałoby, że w systemie jest 11 gniazd procesora, każde z jednym rdzeniem. W rzeczywistości jest to laptop z jednym gniazdem i łącznie 16 rdzeniami.
Oprócz propagowania błędnych informacji do przestrzeni użytkownika w celach informacyjnych, ta niewłaściwa obsługa smp_num_siblings może mieć wpływ na decyzje harmonogramu jądra Linuksa. Jak skomentował inżynier Intela, Zhang Rui, „Oczekuje się, że program planujący będzie również robił dość dziwne rzeczy”.
Dalej wyjaśnił tę oczekującą łatkę:
“Tradycyjnie , wszystkie procesory w systemie mają identyczną liczbę rodzeństwa SMT. Zmienia się to w przypadku procesorów hybrydowych, w których niektóre logiczne procesory mają rodzeństwo, a inne nie.
Obecnie kod rozruchowy procesora ustawia zmienną globalną smp_num_siblings, gdy każdy wątek procesora jest przenoszony up. Ostatni wątek do uruchomienia nadpisze go liczbą rodzeństwa *tego* wątku. Ten ostatni wątek do uruchomienia „wygra”. Jeśli wątek to Pcore, smp_num_siblings==2. Jeśli to Ecore, smp_num_siblings==1.
smp_num_siblings opisuje, czy *system* obsługuje SMT. Powinien określać maksymalną liczbę wątków SMT wśród wszystkich rdzeni.
Upewnij się, że smp_num_siblings reprezentuje ogólnosystemowe maksimum liczbę rodzeństwa, zwiększając zawsze jej wartość. Nigdy nie pozwól mu się zmniejszyć.
Na platformie MeteorLake-P rozwiązuje to problem polegający na tym, że procesory Ecore nie są aktualizowane na żadnej mapie siostrzanego procesora, ponieważ system jest traktowany jako system UP podczas sondowania procesorów Ecore.”
Ta łatka została pobrana wczoraj przez oddział TIP x86/urgent. Z kolei zostanie przesłana do jądra Linuksa 6.4 prawdopodobnie w ciągu weekendu jako pilna poprawka. Łatka jest również oznaczona do przeniesienia z powrotem do istniejącego Linuksa stabilne wersje jądra, aby mieć pewność, że liczba rodzeństwa SMP jest prawidłowo raportowana na platformach hybrydowych Intela.