Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Oct 2011 09:48:27 +0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-arch@freebsd.org
Subject:   newbus bus access routines and bus_space_barrier()
Message-ID:  <CAJ-VmonJnHyLQJ-kVtMV=X7mq7=wq2MGn9wUqdbEtZ6qXd52rg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi all,

I'm not clued up on the way of the bus API, so please excuse the
newbie questions.

Nathan and I found that ath(4) wasn't working for a user because of a
missing bus barrier. Ath trips it up because it does lots of loops of
register reads/writes through the bus stream API rather than the
normal bus API.
It does this because it handles the register value swapping in
hardware rather than in software.

The correct fix is to teach ath(4) to use bus_space_barrier() calls
when doing stream calls, which I can do, but the newbus documentation
points out that both normal and stream bus access doesn't enforce
ordering, and barrier calls are needed. But I don't see lots of
bus_space_barrier() calls everywhere. Why's that?

Thanks,


Adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonJnHyLQJ-kVtMV=X7mq7=wq2MGn9wUqdbEtZ6qXd52rg>