Message ID | 20191011165129.29655-1-nsaenzjulienne@suse.de |
---|---|
State | New, archived |
Headers | show |
Series |
|
Related | show |
On Fri, Oct 11, 2019 at 06:51:29PM +0200, Nicolas Saenz Julienne wrote: > It's more explicit and lets dma-direct handle the specifics of how to > translate addresses. > > On top of that get rid of warnings as, since the introduction of commit > 6fa1d28e38c ("sh: use generic dma_noncoherent_ops"), it's impossible for > the dev to be NULL. This looks ok, but the real answer is to switch sh to the generic dma remapping code. I've been trying to get this included for about a year now, but never managed to get a reply from the sh maintainers. Here is the last one: http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/sh-dma-remap
On Tue, 2019-10-15 at 00:43 -0700, Christoph Hellwig wrote: > On Fri, Oct 11, 2019 at 06:51:29PM +0200, Nicolas Saenz Julienne wrote: > > It's more explicit and lets dma-direct handle the specifics of how to > > translate addresses. > > > > On top of that get rid of warnings as, since the introduction of commit > > 6fa1d28e38c ("sh: use generic dma_noncoherent_ops"), it's impossible for > > the dev to be NULL. > > This looks ok, but the real answer is to switch sh to the generic > dma remapping code. I've been trying to get this included for about > a year now, but never managed to get a reply from the sh maintainers. I see, well I guess this one will get ignored too :) > Here is the last one: > > http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/sh-dma-remap I'd be happy with your series too. In case you're wondering why I want this: I'm interested in supporting multiple dma-ranges in DT. So I was looking at the amount of work needed to centralize usage of dev->dma_pfn_offset. This one patch seemed trivial enough to send right away. Regards, Nicolas
On Tue, Oct 15, 2019 at 10:05:52AM +0200, Nicolas Saenz Julienne wrote: > I see, well I guess this one will get ignored too :) > > > Here is the last one: > > > > http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/sh-dma-remap > > I'd be happy with your series too. Let's see if we can make any progress this merge window.. > In case you're wondering why I want this: I'm interested in supporting multiple > dma-ranges in DT. So I was looking at the amount of work needed to centralize > usage of dev->dma_pfn_offset. This one patch seemed trivial enough to send > right away. Sounds useful, thanks!
diff --git a/arch/sh/kernel/dma-coherent.c b/arch/sh/kernel/dma-coherent.c index b17514619b7e..f6618ed01a42 100644 --- a/arch/sh/kernel/dma-coherent.c +++ b/arch/sh/kernel/dma-coherent.c @@ -4,6 +4,7 @@ */ #include <linux/mm.h> #include <linux/init.h> +#include <linux/dma-direct.h> #include <linux/dma-noncoherent.h> #include <linux/module.h> #include <asm/cacheflush.h> @@ -36,9 +37,7 @@ void *arch_dma_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle, split_page(pfn_to_page(virt_to_phys(ret) >> PAGE_SHIFT), order); - *dma_handle = virt_to_phys(ret); - if (!WARN_ON(!dev)) - *dma_handle -= PFN_PHYS(dev->dma_pfn_offset); + *dma_handle = phys_to_dma(dev, virt_to_phys(ret)); return ret_nocache; } @@ -47,12 +46,9 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr, dma_addr_t dma_handle, unsigned long attrs) { int order = get_order(size); - unsigned long pfn = (dma_handle >> PAGE_SHIFT); + unsigned long pfn = __phys_to_pfn(dma_to_phys(dev, dma_handle)); int k; - if (!WARN_ON(!dev)) - pfn += dev->dma_pfn_offset; - for (k = 0; k < (1 << order); k++) __free_pages(pfn_to_page(pfn + k), 0);
It's more explicit and lets dma-direct handle the specifics of how to translate addresses. On top of that get rid of warnings as, since the introduction of commit 6fa1d28e38c ("sh: use generic dma_noncoherent_ops"), it's impossible for the dev to be NULL. Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> --- NOTE: this was only compile tested. arch/sh/kernel/dma-coherent.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-)