summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2010-05-11 19:44:17 +0300
committerMichael S. Tsirkin <mst@redhat.com>2010-05-12 18:04:04 +0300
commit0d4993563bde70bc7c7718686bc5c5c089733001 (patch)
treec436326c77afc9cd1c9e0315e313d6ba2502c160 /net
parentde02d72bb3cc5b3d4c873db4ca8291723dd48479 (diff)
downloadop-kernel-dev-0d4993563bde70bc7c7718686bc5c5c089733001.zip
op-kernel-dev-0d4993563bde70bc7c7718686bc5c5c089733001.tar.gz
vhost: fix barrier pairing
According to memory-barriers.txt, an smp memory barrier in guest should always be paired with an smp memory barrier in host, and I quote "a lack of appropriate pairing is almost certainly an error". In case of vhost, failure to flush out used index update before looking at the interrupt disable flag could result in missed interrupts, resulting in networking hang under stress. This might happen when flags read bypasses used index write. So we see interrupts disabled and do not interrupt, at the same time guest writes flags value to enable interrupt, reads an old used index value, thinks that used ring is empty and waits for interrupt. Note: the barrier we pair with here is in drivers/virtio/virtio_ring.c, function vring_enable_cb. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'net')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud