拡張IBRSシステム用にLinuxカーネルCONFIG_RETPOLINEを削除できますか?

拡張IBRSシステム用にLinuxカーネルCONFIG_RETPOLINEを削除できますか?

Spectre v2を軽減するために拡張IBRSをサポートするCascade Lakeプロセッサのみを使用するシステムを展開しています。

カーネルソースからこのシステムにspectre_v2 = autoを設定すると、改善されたIBRS緩和機能が得られることがわかります(素晴らしい!)。https://github.com/torvalds/linux/blame/master/arch/x86/kernel/cpu/bugs.c#L878

ただし、CONFIG_RETPOLINEを使用してLinuxカーネルをコンパイルすると、gccはまだ-mindirect-branch = thunk-extern -mindirect-branch-registerを使用してコードをコンパイルするように指示されます。https://github.com/torvalds/linux/blame/master/Makefile#L673

これは、ハードウェア自体がプロセッサレベルの保護を提供しても、コード生成が依然としてリトポリンを有効にすることを意味します。

たとえば、このようなシステムでKVMを実行している場合は、まだ_が表示されます。x86_indirect_thunk*機能が発生します。

Q. もし私がそうしたらどうだったのか?ただCascade Lake ++とEnhanced IBRSを含むシステムに展開するときにCONFIG_RETPOLINEを削除するのは「安全」ですか?そうでなければ、その理由は何ですか?

ベストアンサー1

おすすめ記事