virtio block デバイスの挙動がおかしい件のメモ

Mona の virtio block デバイスドライバで見られた症状のメモ。
環境は qemu 0.14.0 。

症状

used index が更新され getBuf できた状態であるにも関わらず status が更新されないことがある。

試したこと

  • cookie の一致確認により目的外のバッファを取り出していることはない
  • volatile にする
  • read memory barrier を入れる

どちらも効果なし。
結局 status の初期値を 0xff とし、getBuf 後 0xff 以外の値になるまで busy loop している。