Date: Thu, 25 Sep 2003 00:14:53 +0200 From: Vincent Jardin <vjardin@free.fr> To: Maxime Henrion <mux@freebsd.org> Cc: hackers@freebsd.org Subject: Re: BUS DMA sync Message-ID: <200309250014.53816.vjardin@free.fr> In-Reply-To: <20030924215448.GF8404@elvis.mu.org> References: <200309242342.55788.vjardin@free.fr> <20030924215448.GF8404@elvis.mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Thanks, What's about PREREAD ? What kind of CPU synchronization is required prior a= =20 DMA read ? There is no cache during a device to host memory process, isn't = it=20 ? Vincent Le Mercredi 24 Septembre 2003 23:54, Maxime Henrion a =E9crit : > 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 sitti= ng > in a cache, so it actually invalidates the memory cache. > > Cheers, > Maxime
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309250014.53816.vjardin>