On 23 October 2012 10:37, Avi Kivity <a...@redhat.com> wrote: > On 10/23/2012 11:32 AM, liu ping fan wrote: >> On Tue, Oct 23, 2012 at 5:07 PM, Jan Kiszka <jan.kis...@siemens.com> wrote: >>> On 2012-10-23 07:52, liu ping fan wrote: >>>> On Mon, Oct 22, 2012 at 6:40 PM, Avi Kivity <a...@redhat.com> wrote: >>>>> On 10/22/2012 11:23 AM, Liu Ping Fan wrote: >>>> It will only record and fix the issue on one thread. But guest can >>>> touch the emulated device on muti-threads. >>> >>> Sorry, what does that mean? A second VCPU accessing the device will >>> simply be ignored when it races with another VCPU? Specifically >>> >> Yes, just ignored. For device which support many logic in parallel, >> it should use independent busy flag for each logic > > We don't actually know that e1000 doesn't. Why won't writing into > different registers in parallel work?
Unless the device we're emulating supports multiple in parallel accesses (and I bet 99.9% of the devices we model don't) then the memory framework needs to serialise the loads/stores. Otherwise it's just going to be excessively hard to write a reliable device model. -- PMM