A data processing system can establish or maintain data coherency by
issuing a data flush operation. An agent can initialize a first flush
operation by writing to a flush register. The agent can determine that
the flush operation is complete by reading a status indicator from a
status register. Additional agents can independently issue flush
operations during the pendency of the first flush operation. A second
flush instruction and any additional flush instructions that issue during
the pendency of the first flush operation set a flush pending indicator
in a status register. Once the first flush operation completes, the host
performs all pending flush operations in a single second flush operation.
The status indicator does not indicate a completed flush operation for
the first flush operation until all flush operations are complete.
Multiple co-pending flush operations are collapsed into at most two flush
operations.