arm: fix possible load-load data inconsistency
arm: fix possible load-load data inconsistency

Fixed a bug in the virtio mechansim which could lead to
the virtqueue reading stale data.
Specifically, the virtqueue pop() function reads the index of
the available ring tail from the driver in order to check for new
descriptors made available.
Based on that, it goes on to read the location of
the available virtq descriptors. This introduces a load-load
control dependency for which we need to protect against with
a full memory barrier on weak memory models like arm.

Signed-off-by: Diana Popa <4240422768c1b315e51818a074064501037757cd@amazon.com>

firecracker-microvm/firecracker,firecracker-microvm/firecracker,firecracker-microvm/firecracker,firecracker-microvm/firecracker,firecracker-microvm/firecracker