[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210127155608.GA20272@lst.de>
Date: Wed, 27 Jan 2021 16:56:08 +0100
From: ". Christoph Hellwig" <hch@....de>
To: Ricardo Ribalda <ribalda@...omium.org>
Cc: ". Christoph Hellwig" <hch@....de>,
Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>,
Tomasz Figa <tfiga@...omium.org>,
Marek Szyprowski <m.szyprowski@...sung.com>,
Robin Murphy <robin.murphy@....com>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
IOMMU DRIVERS <iommu@...ts.linux-foundation.org>,
Joerg Roedel <joro@...tes.org>,
Linux Doc Mailing List <linux-doc@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Linux Media Mailing List <linux-media@...r.kernel.org>,
Sergey Senozhatsky <senozhatsky@...gle.com>
Subject: Re: [PATCH v3 5/6] media: uvcvideo: Use dma_alloc_noncontiguos API
On Wed, Jan 27, 2021 at 12:29:08AM +0100, Ricardo Ribalda wrote:
> - Is there any platform where dma_alloc_noncontiguos can fail?
> This is, !ops->alloc_noncontiguous and !dev->coherent_dma_mask
> If yes then we need to add a function to let the driver know in
> advance that it has to use the coherent allocator (usb_alloc_coherent
> for uvc)
dev->coherent_dma_mask is set by the driver. So the only reason why
dma_alloc_noncontiguos will fail is because is because it can't
allocate any memory.
> - In dma_alloc_noncontiguos, on the dma_alloc_pages fallback. If we
> have a device where the dma happens in only one direction, could not
> get more performance with DMA_FROM/TO_DEVICE instead of
> DMA_BIDIRECTIONAL ?
Yes, we could probably do that.
>
>
> Then I have tried to use the API, and I have encountered a problem: on
> uvcvideo the device passed to the memory allocator is different for
> DMA_PAGES and NON_CONTIGUOUS:
> https://github.com/ribalda/linux/blob/042cd497739f71c8d4a83a67ee970369e2baca4a/drivers/media/usb/uvc/uvc_video.c#L1236
>
> I need to dig a bit tomorrow to figure out why this is, I have
> hardware to test both paths, so it should not be too difficult.
I always found the USB dma alloc API a little weird, but we might have
to follow the scheme of the usb coherent wrappers there.
Powered by blists - more mailing lists