Subject: Re: CVS commit: syssrc
To: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
From: Matthew Jacob <mjacob@feral.com>
List: source-changes
Date: 02/24/2001 01:10:05
On Sat, 24 Feb 2001, Izumi Tsutsui wrote:
> In <Pine.BSF.4.21.0102232337470.38585-100000@beppo.feral.com>
> mjacob@feral.com wrote:
>
> > You don't need a preread because the CPU never writes the response queue- only
> > the device. The man page says:
> >
> > Synchronization operations are expressed from the perspective of
> > the host RAM, e.g. a device -> memory operation is a READ and a
> > memory -> device operation is a WRITE.
> >
> > Ergo, after the ISP writes the response queue a BUS_DMASYNC_POSTREAD sync
> > is done to synchronize the CPU's view of the response queue.
>
> The implementation of cache operations in
> bus_dmamap_sync() is completely machine dependant.
> In some CPU (like mips with current implementation),
> all flush operations are done only in BUS_DMASYNC_PRE* case.
>
> If your CPU can invalidate cache without writeback data to memory,
> cache flush could be done on BUS_DMASYNC_POSTREAD.
> But if invalidation also causes data writeback,
> it should be done on BUS_DMASYNC_PREREAD.
But you need a hint to know that a particular piece of memory is to be treated
coherent or not.
>
> PREREAD might be no-op on some archs,
> but it should not be omitted in MI code.
>
> > The last checkin uncommented the #if 0 around such a BUS_DMASYNC_POSTWRITE.
>
> Do you mean bus_dmamap_sync() in isp_sbus_dmasetup() ?
> It is BUS_DMASYNC_PREWRITE, not POSTWRITE.
> Anyway POSTWRITE is provided only for consistency (unlike PREREAD).
Oops bug.
> ---
> Izumi Tsutsui
> tsutsui@ceres.dti.ne.jp
>