0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linux で swiotlb buffer is full が出てしまったら…

Last updated at Posted at 2019-08-07

Linuxにおいて、バグっていて使用メモリを解放しないドライバを使ったりや超大量の入出力を行うと swiotlb buffer is full が出てシステムがうまく使えなくなることがありますが、その場合Linuxのブートオプション (/etc/default/grub 等に書かれている) に以下を加えると解決することが多いです。

  1. iommu=force,merge,nopanic,nopt intel_iommu=on amd_iommu=on をカーネルの起動パラメーターに付けて様子をみる
  2. それでうまくいかなかったら、 swiotlb=65536 を追加して様子を見る。うまくいくまでswiotlbの値を2倍ずつ増やして再起動する。

swiotlb buffer is fullのエラーメッセージがでる原因はDMA用のカーネル内メモリの割り当て失敗でswiotlb=65536 は取り敢えず64目がバイトDMA用にとっておくように指示します。ハードウェアによるIOMMUを使えばそのようなメモリーの使用を大幅に削減できます。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?