to read address before selecting the correct vq.
At that point, I've added simple prints to the driver. Initially it
looked as follows:
iowrite16(index, &vp_dev->common->queue_select);
switch (ioread64(&vp_dev->common->queue_address)) {
[...]
};
So I added prints before the iowrite16() and after the ioread64(), and
saw that while the driver prints were ordered, the device ones weren't:
[ 1.264052] before iowrite index=1
kvmtool: net returning pfn (vq=0): 310706176
kvmtool: queue selected: 1
[ 1.264890] after ioread index=1
Suspecting that something was wrong with ordering, I've added a print
between the iowrite and the ioread, and it finally started working well.
Which leads me to the question: Are MMIO vs MMIO reads/writes not
ordered?
--
Sasha.