Date: Fri, 14 Dec 2018 10:35:09 -0500 From: Kurt Lidl <lidl@pix.net> To: Warner Losh <imp@bsdimp.com>, Rajesh Kumar <rajfbsd@gmail.com> Cc: FreeBSD Hackers <freebsd-hackers@freebsd.org>, freebsd-drivers@freebsd.org Subject: Re: How to use the DMA Engine in FreeBSD? Message-ID: <26df913b-a2f8-2709-1cec-d11ad7d113a8@pix.net> In-Reply-To: <CANCZdfrEv9o6_ydp9Qe73O1v6NqHFtivHpw4m2PKhTyAVaPR9g@mail.gmail.com> References: <CAAO%2BANOty8FeOR7VQdXmxWy5y288pm=Q4cswHJ1BbgT2h1cUWg@mail.gmail.com> <CANCZdfrEv9o6_ydp9Qe73O1v6NqHFtivHpw4m2PKhTyAVaPR9g@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 12/13/18 10:53 AM, Warner Losh wrote: > On Thu, Dec 13, 2018, 3:04 AM Rajesh Kumar <rajfbsd@gmail.com wrote: > >> Hi, >> >> Is there any good documentation available to understand the existing >> support, API's and how-to use the DMA Engine in FreeBSD? >> > > > Usually you just use pci busmastering and it just works. > > I am trying to write a test driver which will use DMA Engine to do the data >> transfer (rather than plain memcpy which involves cpu). Can anyone point >> to any driver implementation which has similar functions implemented? I >> see references to SYS_RES_DRQ to allocate DMA channels and play around. But >> that seems to be specific to ISA. Can it be used for PCI drivers as well? >> > > No. ISA DMA is only for really old hardware without it's own DMA engine. > > Look at the busdma api/man page. For some Intel based server hardware, there is the "ioat" driver, which allows for user code to schedule DMA operations. See ioat(4) for details, including a pointer to the test program. -Kurt
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?26df913b-a2f8-2709-1cec-d11ad7d113a8>