Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Oct 2011 10:04:56 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Hans Petter Selasky <hselasky@c2i.net>
Cc:        Adrian Chadd <adrian@freebsd.org>, freebsd-arch@freebsd.org
Subject:   Re: newbus IO ordering semantics - moving forward
Message-ID:  <D9ABBF2F-18D2-4CC7-99AE-247D9432D999@bsdimp.com>
In-Reply-To: <201110280915.18111.hselasky@c2i.net>
References:  <CAJ-VmonFJG3xLn2JvarOUN6o-e7MC%2BA%2B=W9_vocZqY6L3CmTmQ@mail.gmail.com> <201110280915.18111.hselasky@c2i.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On Oct 28, 2011, at 1:15 AM, Hans Petter Selasky wrote:

> On Thursday 27 October 2011 22:28:13 Adrian Chadd wrote:
>> * Make the bus default to use ordered semantics, much like what Linux
>> does - ie, all IO read/writes (io or memory) are in-order and flushed
>> with a barrier;
>=20
> I think this is the assumption of many USB controller drivers =
currently in the=20
> tree.

The ordering guarantees aren't as random as Adrian suggests.  All writes =
are posted before any reads is about all you can count on.  Most drivers =
naturally cope with this well.  All reads have to be synchronous by =
their very nature and in-order.  There's more liberty taken with writes =
wrt ordering.

Where it falls down is DMA or MSI.  Both of those have writes from the =
device to the system memory, and ordering of the completion of those =
relative to other things isn't completely guaranteed.

Warner




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D9ABBF2F-18D2-4CC7-99AE-247D9432D999>