RFC: figuring out bus behaviour on these mips32r2 chips
Adrian Chadd
adrian at freebsd.org
Thu Jan 8 01:03:04 UTC 2015
Hi,
I found that the new QCA955x chip (and some of the QCA934x things in
shipping products versus what I have on my desk at home) behave poorly
unless I do ye olde "write to register; read from register to flush"
paradigm.
In this specific instance, it's the MDIO controller on each MAC - if I
do a read-after-write to those registers, everything is peachy.
Without it - and even with a call to wmb() - it still barfs.
Now, I went digging through the mips code, and wmb() -> mips_sync() ->
just a sync operation. It doesn't do any other kind of barrier.
So - what's the mips32r2 spec require us to do for ensuring device IO
has made it out to devices and we enforce ordering? Are we missing
something in our mips_sync() implementation?
-adrian
More information about the freebsd-mips
mailing list