Le Vendredi, Août 27, 2021 15:54 CEST, Philippe Gerum <[email protected]> a écrit:
> > François Legal <[email protected]> writes: > > > Le Vendredi, Août 27, 2021 15:01 CEST, Philippe Gerum <[email protected]> a > > écrit: > > > >> > >> François Legal via Xenomai <[email protected]> writes: > >> > >> > Hello, > >> > > >> > working on a zynq7000 target (arm cortex a9), we have a peripheral that > >> > generates loads of data (many kbytes per ms). > >> > > >> > We would like to move that data, directly from the peripheral memory > >> > (the OCM of the SoC) directly to our RT application user memory using > >> > DMA. > >> > > >> > For one part of the data, we would like the DMA to de interlace that > >> > data while moving it. We figured out, the PL330 peripheral on the SoC > >> > should be able to do it, however, we would like, as much as possible, to > >> > retain the use of one or two channels of the PL330 to plain linux non RT > >> > use (via dmaengine). > >> > > >> > My first attempt would be to enhance the dmaengine API to add RT API, > >> > then implement the RT API calls in the PL330 driver. > >> > > >> > What do you think of this approach, and is it achievable at all (DMA > >> > directly to user land memory and/or having DMA channels exploited by > >> > xenomai and other by linux) ? > >> > > >> > Thanks in advance > >> > > >> > François > >> > >> As a starting point, you may want to have a look at this document: > >> https://evlproject.org/core/oob-drivers/dma/ > >> > >> This is part of the EVL core documentation, but this is actually a > >> Dovetail feature. > >> > > > > Well, that's quite what I want to do, so this is very good news that it is > > already available in the future. However, I need it through the ipipe right > > now, but I guess the process stays the same (through patching the dmaengine > > API and the DMA engine driver). > > > > I would guess the modifications to the DMA engine driver would be then > > easily ported to dovetail ? > > > > Since they should follow the same pattern used for the controllers > Dovetail currently supports, I think so. You should be able to simplify > the code when porting it Dovetail actually. > That's what I thought. Thanks a lot. So now, regarding the "to userland memory" aspect. I guess I will somehow have to, in order to make this happen, change the PTE flags to make these pages non cacheable (using dma_map_page maybe), but I wonder if I have to map the userland pages to kernel space and whether or not I have to pin the userland pages in memory (I believe mlockall in the userland process does that already) ? François > -- > Philippe.
