[rfc] implement busdma barrier operation
Adrian Chadd
adrian at freebsd.org
Wed Oct 9 22:53:51 UTC 2013
Committed!
-adrian
On 9 October 2013 13:46, Warner Losh <imp at bsdimp.com> wrote:
> On Oct 8, 2013, at 6:33 PM, Adrian Chadd wrote:
> >
> > I'd like to implement the busdma barrier operation.
>
> You'd like to improve the bus space read and write barrier implementation
> on MIPS.
>
> > This is required for
> > (at least) correct behaviour of devices on the ar9344 (mips74k) core, as
> > now I actually need to care about the order of device operations.
>
> Yup. We should have had something like this all along.
>
> You can get rid, I think, of the cache invalidation and write back too,
> since that's such a huge hit we'll never do that in a generic
> implementation.
>
> The rest of the change looks good to me.
>
> Warner
>
> > This (and some local uncommitted changes) are required for the ar9344
> > ethernet and switchport devices to correctly function.
> >
> > I've tested this on the other mips24k hardware I have and it works. But
> > nothing else (including ath, grr) explicitly uses read/write barriers.
> I'll
> > eventually add them.
> >
> > I'd like to bounce this to re@ ASAP to get the approval to commit.
> >
> > Thanks,
> >
> >
> > -adrian
> >
> >
> > Index: sys/mips/mips/bus_space_generic.c
> > ===================================================================
> > --- sys/mips/mips/bus_space_generic.c (revision 256173)
> > +++ sys/mips/mips/bus_space_generic.c (working copy)
> > @@ -749,4 +749,8 @@
> > if (flags & BUS_SPACE_BARRIER_WRITE)
> > mips_dcache_wbinv_all();
> > #endif
> > + if (flags & BUS_SPACE_BARRIER_READ)
> > + rmb();
> > + if (flags & BUS_SPACE_BARRIER_WRITE)
> > + wmb();
> > }
> > _______________________________________________
> > freebsd-mips at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-mips
> > To unsubscribe, send any mail to "freebsd-mips-unsubscribe at freebsd.org"
>
>
More information about the freebsd-mips
mailing list