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を削除するのは「安全」ですか?そうでなければ、その理由は何ですか?