Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Oct 2011 14:43:58 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Adrian Chadd <adrian@FreeBSD.org>
Cc:        freebsd-arch@FreeBSD.org
Subject:   Re: newbus IO ordering semantics - moving forward
Message-ID:  <E24309DA-09E3-40E1-A605-5CC72F03150A@bsdimp.com>
In-Reply-To: <CAJ-VmonFJG3xLn2JvarOUN6o-e7MC%2BA%2B=W9_vocZqY6L3CmTmQ@mail.gmail.com>
References:  <CAJ-VmonFJG3xLn2JvarOUN6o-e7MC%2BA%2B=W9_vocZqY6L3CmTmQ@mail.gmail.com>

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



On Oct 27, 2011, at 2:28 PM, Adrian Chadd wrote:
> So what I'm proposing is:
>=20
> * 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;
> * Add an option which allows the driver to request a region with
> loose-running/lazy semantics, what we're supposed to have now, and
> then leave barriers up to the driver;
> * Print out something nice and loud if a driver decides to use the
> lazy/loose semantics, which may result in unpredictable behaviour on
> non-{i386,amd64}.
>=20
> I'd appreciate some feedback/comments before I go off and code all of =
this up.

Having an option to support lazy would be easy to code up on x86 where =
it isn't needed.  However, on some architectures, the bus space routines =
are implemented as a series of function calls from a table that's passed =
around in the bus_space_t.  Those architectures it would be hard to =
implement differing behavior like you propose.

Having it whine on lazy will ensure that lazy is never used since such a =
message will "scare the horses" and people will stamped to using the =
synchronous one.

One question: What's the slowdown from making everything synchronous?

Warner




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E24309DA-09E3-40E1-A605-5CC72F03150A>