svn commit: r310650 - in head/sys/mips: include mips

John Baldwin jhb at freebsd.org
Wed Dec 28 17:37:47 UTC 2016


On Tuesday, December 27, 2016 09:50:32 PM Adrian Chadd wrote:
> hiya,
> 
> so I dug into the mips24k definition of this. It says this:
> 
> "
> 3.4.3 Uncached accelerated writes
> The 24K core permits memory regions to be marked as “uncached
> accelerated”. This type of region is useful to hard-
> ware which is “write only” - perhaps video frame buffers, or some
> other hardware stream. Sequential word stores in
> such regions are gathered into cache-line-sized chunks, before being
> written with a single burst cycle on the CPU
> interface.
> Such regions are uncached for read, and partial-word or
> out-of-sequence writes have “unpredictable” effects - don’t
> do them. The burst write is normally performed when software writes to
> the last location in the memory block or does
> an uncached-accelerated write to some other block; but it can also be
> triggered by a
> sync instruction, a pref nudge, a matching load or any exception. If
> the block is not completely written by the time it’s pushed out, it
> will be written using a series of doubleword or smaller write cycles
> over the 24K core’s 64-bit memory interface.
> "
> 
> So, question is - is our write combining page attribute in the VM
> suitable for this? Is it defined as "only do full sequential word
> writes"? Or do we risk having some other platform use it in a less
> "don't do this" way and then MIPS is the one at fault again? :)

The description of WC in the Intel SDM appears to be more forgiving.
If you do out-of-sequence writes it won't "lose" the data, but there
isn't a strong ordering of when the different regions of a cache line
are finally written.  Also, different WC store buffers may be written
out-of-order (e.g. if you partially fill one line, then fully fill a
second line, the second line may be written out, but the first one will
be held for a bit to see if it will be fully filled).  However, you
never lose the data, and the last thing written will eventually end up
being written to the bus.

-- 
John Baldwin


More information about the svn-src-all mailing list