第28章 ハードウェアの有効化

プライマリーボンドインターフェースが失敗していないアクティブなインターフェースより優先されない

以前のリリースでは、primary_reselect=failure ボンドパラメーターは正しく機能しませんでした。プライマリーインターフェースは他のインターフェースが失敗していなくても常に優先されました。今回の更新により、このパラメーターは予想どおりに機能するようになり、プライマリーボンドインターフェースは現行のプライマリー以外のアクティブなインターフェースが失敗する場合にのみ優先されるようになりました (BZ#1301451)。

Little Endian 版の IBM Power Systems で updatepp 操作が失敗してもメモリー破損を防止できる

以前のリリースでは、Little Endian 版の IBM Power Systems での updatepp 操作の失敗により、正しくないハッシュ値がページテーブルの次のハッシュ挿入操作で使用されることがありました。これにより、ハッシュページテーブルエントリー (PTE) の更新操作やハッシュ PTE の無効化操作が失敗し、メモリーが破損する可能性がありました。今回の更新により、ハッシュ値は updatepp 操作の失敗後に常に再計算されるようになり、メモリー破損の可能性がなくなりました (BZ#1264920)。

USB デバイスを削除しても競合状態が発生しない

以前のリリースでは、USB デバイスを削除すると同期の問題が発生し、競合状態が生じる可能性がありました。そのため、メモリーが破損し、USB ホストコントローラーが失敗しました。今回の更新により、タイマーが十分前もって初期化されることになり、競合状態の可能性がなくなり、USB ホストコントローラーが失敗しなくなりました (BZ#1290202)。

カーネルが AMD Turion II システムで起動

以前のリリースでは、tick broadcast コードのライブロックにより、AMD Turion II システムが起動時にロックアップし、応答しなくなることがありました。今回の更新により、ライブロックは修正され、カーネルは AMD Turion II システムでより安全に起動するようになりました (BZ#1265283)。

数多くの CPU を搭載したリアルタイムシステムでの実行キューのロック競合による長い待ち時間がない

以前のリリースでは、リアルシステムで複数の CPU が rq ロックを取得しようとすることで、ロック競合と待ち時間が発生しました。待ち時間は CPU 数を乗算したものになり、数多くの CPU が搭載されているシステムに長い待ち時間が発生しました。今回の更新により、33 以上のコアを搭載したシステムは pull ではなくpush アプローチを使用するようになり、クリティカルエリアに CPU の長い一覧が生成されなくなりました。その結果、数多くの CPU を搭載したリアルタイムシステムには実行キューのロック競合による長い待ち時間が発生しなくなりました (BZ#1209987)。

カーネルが NVM Express デバイスドライバーと共にマルチキューサポートを有効にしても起動時にクラッシュしない

コアブロックデバイスのコードにあるバグにより、カーネルは NVMe (Nonvolatile Memory Express) デバイスドライバーでマルチキューサポートを有効にすると、起動時に予期せずに終了することがありました。問題が nvme ドライバーに確認されましたが、他のブロックデバイスも影響を受けている可能性がありました。今回の更新により、このバグは修正され、カーネルはこの状況でクラッシュしなくなりました (BZ#1303255)。

CPU 周波数が要求値に達する

以前のリリースでは、CPU 周波数の値は intel_pstate によって正しく丸められませんでした。そのため、CPU 周波数はユーザーが要求する値よりも低くなっていました。今回の更新により、この丸めエラーが修正され、CPU 周波数は要求値に達しました (BZ#1279617)。

FCoE コードのリアルタイムカーネルスケジューリングコードが修正された

リアルタイムカーネルの FCoE (Fibre Channel over Ethernet) ドライバーは、より一般的な get_cpu() および put_cpu() 関数ではなく、get_cpu_light() および put_cpu_light() 関数を使用するように変更されました。ただし、get_cpu() の 1 つのケースについては get_cpu_light() に変更されませんでした。そのため、優先が無効にされ、BUG: scheduling while atomic バグが FCoE コードに発生しました。今回の更新により、このコードは修正され、バグが発生しなくなりました (BZ#1258295)。

PCI アダプターに関連した NUMA ノードの報告がないことによる IBM Power Systems のパフォーマンス低下がなくなった

以前のリリースでは、回帰の問題により NUMA (Non-Uniform Memory Access) ノードが PCI アダプターに関連して報告されませんでした。これにより、Red Hat Enterprise Linux 7 と共に実装されるすべての IBM Power System のパフォーマンスが大幅に低下しました。今回の更新により、回帰の問題が修正され、システムのパフォーマンスがこの状況で低下することはなくなりました (BZ#1273978)。

システムが DMA 転送のセットアップ時にクラッシュしない

IOMMU (Input/Output Memory Management Unit)、NVMe (Non-volatile Memory Express) デバイス、およびカーネルのページサイズの不整合により、BUG_ON シグナルが nvme_setup_prps() 関数に発生しました。これにより、DMA (Direct Memory Access) 転送のセットアップ時にシステムが予期せずに終了する可能性がありました。今回の更新により、デフォルトの NVMe ページサイズは 4 キロバイトに設定され、システムがクラッシュすることがなくなりました (BZ#1245140)。

カーネルがホットアンプラグ時にハングしない

以前のリリースでは、再試行可能コマンドのエラーにより、NVMe ドライバーは I/O ディスクリプターおよび DMA マッピングをリークしました。そのためカーネルは、ドライバーが削除されている場合のホットアンプラグの操作時に応答しなくなる可能性がありました。今回の更新により、コマンドの再試行時にドライバーのメモリーリークが修正され、カーネルがこの状況でハングしなくなりました (BZ#1271860)。

LRO (Large Receive Offload) フラグを無効にすると正常に伝播が実行される

以前のリリースでは、LRO (Large Receive Offload) フラグを無効にすると、vlan およびボンド階層の上方のデバイスから下方に伝播されませんでした。そのため、トラフィックのフローが中断されました。今回の更新によりこの問題は修正され、LRO フラグを無効にすると正常に伝播が実行されるようになりました (BZ#1266578)。

Intel Xeon v5 プラットフォームでの P-state の切り替えが正常に行われる

以前のリリースでは、Intel Xeon v5 プラットフォーム上で、プロセッサーの周波数は常に最大周波数に関連付けられていました。そのため、クライアントプラットフォームで P-state を切り換えると失敗しました。今回の更新により、範囲を判別した上で最小および最大パーセントの制限値を調整することで idle、busy および processor の周波数値が設定されるようになりました。その結果、これらのクライアントプラットフォームでの P-state の切り替えが正常に行われるようになりました (BZ#1264990)。

cpuscaling テストが失敗しない

以前のリリースでは、Red Hat Certification Test Suite の cpuscaling テストは intel-pstate ドライバーの数字の丸めのバグにより失敗しました。このバグは修正され、強力なハードウェアでの cpuscaling テストが失敗しなくなりました (BZ#1263866)。

genwqe ドライバーがメモリープレッシャー時にメモリー割り当てを実行できる

以前のリリースでは、genwqe デバイスドライバーは、これまで非アトミック状態でもカーネルのアトミックメモリープールから連続するメモリーページを割り当てるために GFP_ATOMIC フラグを使用していました。これにより、メモリープレッシャー時に割り当て障害が発生する可能性がありました。今回の更新により、genwqe ドライバーのメモリー割り当てに GFP_KERNEL フラグが使用されるように成り、ドライバーはメモリープレッシャーの状況でもメモリーを割り当てられるようになりました (BZ#1270244)。

CPU を無効にしてもコンソールがハングしない

以前のリリースでは、リアルタイムカーネルの CPU hotplug インターフェースを使って CPU を無効にする際に hotplug ロックおよびコンソールセマフォが正しくない順序で取得される可能性がありました。これにより、デッドロックが生じ、システムコンソールが応答しなくなる可能性がありました。今回の更新により、ロックは正しい順序で取得され、コンソールはハングしなくなりました (BZ#1269647)。

LRO が ixgbe ドライバーでデフォルトで無効になる

LRO (Large Receive Offload) はフォワーディングやブリッジングと互換性がなく、パフォーマンスの問題や不安定な状態を生じさせる可能性があるため、ixgbe ドライバーではデフォルトで無効に設定されています。
LRO を有効にするには以下を実行します。
# ethtool -K ethX lro on
ethX をインターフェースの名前に置き換えます (BZ#1266948)。

IBM Power Systems の nx842 コプロセッサーが破損データを提供しない

以前のリリースでは、IBM Power Systems の nx842 コプロセッサーは無効なデータを出すことがありました。これは、圧縮解除時に生じるデータ破損のバグによって発生していました。今回の更新により、nx842 コプロセッサーに対するすべての圧縮および圧縮解除呼び出しに CRC (cyclic redundancy check; 巡回冗長検査) フラグが含まれるようになりました。これにより、データ整合性チェックのためにすべての圧縮および圧縮解除操作が強制実行され、コプロセッサーから破損データが出されることがなくなりました (BZ#1264905)。

システムが mlx4_en_recover_from_oom() 関数の呼び出し時にクラッシュしない

以前のリリースでは、mlx4_en_recover_from_oom() 関数が mlx4_en ドライブによって負荷の大きい TCP ストリーム下で起動すると、オペレーティングシステムは予期せずに終了しました。今回の更新によりバグは修正され、システムはこのシナリオでクラッシュしなくなりました (BZ#1258136)。

iw が規制情報を正常に表示

以前のリリースでは、iw ユーティリティーは iw reg set コマンドで設定されても規制国を正常に表示しませんでした。今回の更新により、iw コードは Red Hat Enterprise Linux の「Wireless Code」とより詳細に一致するように調整されました。その結果として、iw は規制国情報を予想どおりに表示します (BZ#1324096)。

i40e が起動時に warn_slowpath 警告を発行しない

以前のリリースでは、i40e ドライバーはコードが rx_ring 構造体をクローンしているが新規メモリーの割り当て前にポインターをゼロ化していないため、warn_slowpath 警告を発行していました。今回の更新により、バグは修正され、この警告が表示されなくなりました (BZ#1272833)。

netprio_cgroups モジュールが起動時にマウントされる

以前のリリースでは、systemd/sys/fs/cgroup/ ディレクトリーを読み取り専用でマウントしていたため、初期システムセットアップ時に /sys/fs/cgroup/net_prio/ ディレクトリーがマウントされませんでした。そのため、netprio_cgroups モジュールは起動時にマウントされませんでした。今回の更新により、この問題は修正され、netprio_cgroups モジュールは起動時にマウントされるようになりました (BZ#1262204)。

qlcnic とのボンディングのセットアップに失敗しない

今回の更新の前に、balance-tlb または balance-alb などの特定のボンディングモードは適切に保存されていない MAC アドレスを設定しました。この MAC アドレスはボンドの終了時に復元されず、複製 MAC が残りました。そのため、元の MAC アドレスが存在しないことからボンドの再設定は失敗しました。今回の更新により、ボンディングが削除されても MAC アドレスを適切に復元するコードが改良されました。この結果、qlcnic デバイスとのボンディングが予想どおりに機能するようになりました (BZ#1265058)。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。