CMOSは時々ハイパースレッディングをリセットします。 Linuxカーネルを使用するときにハイパースレッディングを強制的に適用できますか?

CMOSは時々ハイパースレッディングをリセットします。 Linuxカーネルを使用するときにハイパースレッディングを強制的に適用できますか?

ハイパースレッディングが必要なi7-4700EQベースの組み込みサーバーシステムがあります。まれに、CMOSのハイパースレッディングフラグが無効になっている場合を除いて、すべてが正常です。ハードウェアがまだ手に入っている間に再起動し、CMOSに入って設定を変更するだけです。 (CMOSの他の設定は時間/日付などすべてがうまく維持され、バッテリーの問題ではないようです。)

ただし、一度展開するとコンソールにアクセスできなくなります。 CMOS設定が失われた場合は、デバイスを「固定」することができますが、これは非常に単純な問題と比較して困難な作業のようです。

私が理解しているのは、Linuxカーネルがカーネル変数を初期化するためにのみBIOSを読み取るということです。そうですか?

これが正しい場合は、BIOSが報告した内容を無視してカーネルでハイパースレッディングを有効にするようにLinuxカーネルに指示する方法はありますか?

可能であれば、これを行う簡単な方法(例:grubコマンドライン設定)はありますか?それ以外の場合は可能ですが、難しい場合は、BIOSの指示を無視し、カーネルソースコードを変更して再コンパイルしてハイパースレッディングを有効にできますか?

うまくいかないようですが、/etc/default/grubで試してみました。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash maxcpus=8 nr_cpus=8"

その後、update-grubを使用して再起動します。 (maxcpusとnr_cpusを個別に設定してみました。)

実行中のシステムでハイパースレッディングを無効にしてから再度有効にするケースがたくさん見つかりました。ただし、カーネルが人が意図的にハイパースレッディングを無効にしたと誤って信じている場合、これはハイパースレッディングのアクティブ化の例ではありません。

最後に、「ハードウェアの破損」を主張することができますが、それ自体は「戦争」に勝つことはできません。 BIOSにもかかわらず、ハイパースレッディングを強制的に有効にする方法がない場合、これは有効な答えです。答えに証拠/説明が含まれている場合、私は効果的です。

答え1

通常、これは完全に真実ではありません。

例1:スターライスファームウェア(BIOSとも呼ばれます)割り込みハンドラは、カーネルの起動後もカーネルよりも高い権限で実行されます。 SMMとの戦いを試みることは大歓迎です。 Linuxがあなたを助けるために特に興味があるとは思わないでください。

例2:「セキュアブート」ファームウェアは自己アップグレード可能ですが、通常、オペレーティングシステムに任意のイメージでファームウェアを上書きさせることは悪い考えと見なされます。したがって、OS / ブートローダを起動する前に、ファームウェアはファームウェアチップへの書き込みを防ぐためにハードウェアフラグを設定する必要があります。一度設定すると、再起動しないとこのフラグを設定解除できません。またはそのようなもの。もちろん、一部のファームウェアがこれを正しく実行していないために発生する現象です。たとえば、次のようになります。ここ

SMTを許可することが別の例であるかどうかはわかりません。

ファームウェアとの戦いはオプションではありません。特に、オペレーティングシステム(Linux)がサポートしていない場合は、ファームウェアの問題を解決することは望ましくありません。 (例えば、なぜならACPI ATAコマンドに関するファームウェアの問題。あるいは、より建設的には、Linuxがすでに正確なCステータス情報を知っているIntel CPUで実行されている場合は、ACPI BIOSのCステータス情報を無視します。

(また、一般的なルールが適用されている場合、目標はまだ達成されていない可能性があります。たとえば、レイアウトを知らせるためにBIOSが必要になる場合があり、レイアウトが静的であると仮定したくない理由はいくつかあります。設定で起動時にキャプチャしたACPIテーブルを使用する代わりに、BIOSテーブルが提供するACPIを無視するようにカーネルをパッチします(良い考えではありません)。

目標が可能であっても、ハードウェアに関する詳細は理解できると思います。カーネルでSMTを有効にする方法を見つけたら、本当に印象的です。いいえハードウェアによって異なります。質問に一致するマザーボードとファームウェアのバージョンでテストされたことを明示せず、それが何であるかを指定しないと、この質問に対する答えが正式であると完全にはわかりません。

これに基づいて、Linux開発者はここであなたをサポートしようとしているとは思わない。これは非常に一般的な質問ではありません。

関連情報