修正はメインライン Linux 6.4 カーネルに向けて進行中です。また、インテル ハイブリッド システムの x86 トポロジ レポートを修正するために、既存の安定したカーネル シリーズへのバックポートもマークされています。カーネル内のトポロジーのバグは、Meteor Lake ラップトップでより顕著になります。現在の内部 Intel テスト ラップトップでは、1 つの CPU ソケット内にすべてが含まれる適切な数のコアではなく、11 個の CPU ソケットを持つシステムが報告されることがあります。

Intel ハイブリッド CPU 設計は 2021 年後半から一般的になってきましたが、これまでの Linux カーネルは「smp_num_siblings」変数を適切に処理しておらず、この変数がユーザー空間に伝播され、誤った情報を報告してしまう可能性があります。今後の Intel Meteor Lake P プラットフォームの場合、この時点で Linux カーネルは一般的な lscpu コマンドを使用して、システムに 11 個の CPU ソケットがあり、それぞれが 1 つのコアを備えていると報告します。実際には、合計 16 個のコアを備えたシングル ソケットのラップトップです。

間違った情報が情報提供目的でユーザー空間に伝播されるだけでなく、この不適切な smp_num_siblings の処理により、最終的に Linux カーネル スケジューラの決定に影響を与える可能性があります。 Intel エンジニアの Zhang Rui 氏は、「これにより、スケジューラーがかなり不安定な動作を行うことも予想されます。」とコメントしています。

彼は保留中のパッチ<についてさらに説明しました。/a>:

“伝統的に、システム内のすべての CPU には同じ数の SMT 兄弟があります。これは、一部の論理 CPU には兄弟があり、他の論理 CPU には兄弟がないハイブリッド プロセッサでは異なります。

現在、CPU ブート コードは、すべての CPU スレッドが呼び出されるときにグローバル変数 smp_num_siblings を設定します。最後にブートするスレッドが *その* スレッドの兄弟の数で上書きされます。最後にブートするスレッドが「勝ち」ます。スレッドが Pcore の場合、smp_num_siblings==2。Ecore の場合、smp_num_siblings==1.

smp_num_siblings は、*システム* が SMT をサポートしているかどうかを示します。すべてのコア間の SMT スレッドの最大数を指定する必要があります。

smp_num_siblings がシステム全体の最大数を表していることを確認してください値を常に増加させて兄弟の数を決定します。決して減少させないでください。

MeteorLake-P プラットフォームでは、Ecore CPU をプローブするときにシステムが UP システムとして扱われるため、どの CPU 兄弟マップでも Ecore CPU が更新されないという問題が修正されます。」

そのパッチは昨日、TIP の x86/urgent ブランチによって取得されました。次に、これはおそらく週末に緊急修正として Linux 6.4 カーネルに送信されます。このパッチは、既存の Linux へのバックポート用にもマークされていますカーネルの安定バージョンを使用して、SMP 兄弟数が Intel ハイブリッド プラットフォームで適切にレポートされるようにします。