On 10/25/2012 11:00 AM, Peter Maydell wrote: > 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.
That's why we have a per-device lock. The busy flag breaks that model by discarding accesses that occur in parallel. -- error compiling committee.c: too many arguments to function