On Sun, 2011-12-11 at 14:47 +0200, Michael S. Tsirkin wrote: > First, I'd like to answer your questions from the PCI side. > Look for PCI rules in the PCI spec. > You will notices that a write is required to be able to > pass a read request. It might also pass read completion. > A read request will not pass a write request. > There's more or less no ordering between different types of transactions > (memory versus io/configuration). > > That's wrt to the question you asked. > > But this is not your setup: you have a single vcpu so > you will not initiate a write (select vq) until you get > a read completion. > > So what you are really describing is this setup: guest reads a value, > gets the response, then writes out another one, and kvm tool reports the > write before the read. No, it's exactly the opposite. Guest writes a value first and then reads one (writes queue_select and reads queue_address) and kvm tool reporting the read before the write. I must add here that the kvm tool doesn't do anything fancy with simple IO/MMIO. Theres no thread games or anything similar there. The vcpu thread is doing all the IO/MMIO work. -- Sasha. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html