On Mon, Aug 13, 2012 at 5:30 PM, Stefan Fritsch <[email protected]> wrote:
> On Monday 13 August 2012 17:07:41 you wrote:
>> >  * Note: the i386 does not currently require barriers, but we must
>> >  * provide the flags to MI code.
>> >
>> > This is not correct for virtio. We need a memory barrier.
>>
>> sure, copy it from amd64.
>
> OK. A slight complication:
>
> sfence/mfence/lfence do not exist on all i386 CPUs. sfence was introduced with
> SSE, [lm]fence with SSE2. This is not really a problem with the virtio driver
> because the virtualization extensions were introduced much later. But it may
> be a problem with the rest of the i386 code.
>
> How do you normally handle this? Check during boot and set a pointer to the
> function to be used and call that function pointer from bus_space_barrier()?
>

actually you might try this:

http://nxr.netbsd.org/xref/src/sys/arch/x86/x86/bus_space.c#877

same as we do with bus_dmamap_sync on i386/amd64.

Reply via email to