BUS DMA sync

Vincent Jardin vjardin at free.fr
Wed Sep 24 15:14:58 PDT 2003


Thanks,

What's about PREREAD ? What kind of CPU synchronization is required prior a 
DMA read ? There is no cache during a device to host memory process, isn't it 
?

Vincent



Le Mercredi 24 Septembre 2003 23:54, Maxime Henrion a écrit :
> Vincent Jardin wrote:
> > Hi,
> >
> > I try to understand the purpose of the PRE sync (BUS_DMASYNC_PREREAD,
> > BUS_DMASYNC_PREWRITE).
> >
> > I understand POST synchronization (BUS_DMASYNC_POSTREAD,
> > BUS_DMASYNC_POSTWRITE)  when a device to memory or a memory to device
> > transfert needs to be synchronized. However, what does a synchronization
> > before a transfert mean ?
>
> With common architectures where FreeBSD runs on, only BUS_DMASYNC_PREWRITE
> and BUS_DMASYNC_POSTREAD are actually meaningful and needed.  It's good
> style to use the two others where appriopriate though, because some more
> exotic architecture might require it some day.
>
> BUS_DMASYNC_PREWRITE is used to synchronize before there's a DMA tranfer
> from host memory to a device.  It's needed to ensure the device will
> read up-to-date memory, because recent changes to memory might still sit
> in a cache, so it actually flushes the memory cache.
>
> BUS_DMASYNC_POSTREAD is used to synchronize after a DMA transfer from
> the device to host memory.  It's needed to ensure the software will get
> up-to-date memory as written by the device, and not outdated memory sitting
> in a cache, so it actually invalidates the memory cache.
>
> Cheers,
> Maxime


More information about the freebsd-hackers mailing list