From dc9447bd3777614529b711c9976979fe61822ba8 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Fri, 23 Aug 2013 18:46:03 +0000 Subject: OvmfPkg: Virtio: load used ring element strictly after loading used index Enforce in-order execution of these steps even on not sequentially consistent architectures, as discussed in [1]. These changes should be unnecessary on x86 (the only architecture OVMF currently supports), but they align the OVMF virtio code with the virtio specification and could be necessary for future OVMF ports. [1] http://lists.linuxfoundation.org/pipermail/virtualization/2013-June/024547.html Suggested-by: Stefan Hajnoczi Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek Reviewed-by: Stefan Hajnoczi Reviewed-by: Jordan Justen git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14601 6f19259b-4bc3-4df7-8a09-765794883524 --- OvmfPkg/VirtioNetDxe/SnpReceive.c | 1 + 1 file changed, 1 insertion(+) (limited to 'OvmfPkg/VirtioNetDxe/SnpReceive.c') diff --git a/OvmfPkg/VirtioNetDxe/SnpReceive.c b/OvmfPkg/VirtioNetDxe/SnpReceive.c index 8b3faa38b6..87c6ca9b4b 100644 --- a/OvmfPkg/VirtioNetDxe/SnpReceive.c +++ b/OvmfPkg/VirtioNetDxe/SnpReceive.c @@ -105,6 +105,7 @@ VirtioNetReceive ( // MemoryFence (); RxCurUsed = *Dev->RxRing.Used.Idx; + MemoryFence (); if (Dev->RxLastUsed == RxCurUsed) { Status = EFI_NOT_READY; -- cgit v1.2.3