From: Russell King - ARM Linux on 9 Mar 2010 04:20 On Tue, Mar 09, 2010 at 03:45:54PM +0800, Lin Mac wrote: > I had encounter a similiar problem and I simply allocated a new > buffer, copy the data, then DMA. It seems slow and stupid. > > I'm wondering wether could I translate the vmap virt to phys(don't > know how to yet), then use phys_to_virt to get the virt in > direct-mapped memory region? > > Is there other possible ways? I think you need to talk to the firmware people... which is unfortunately orphaned. What you could do is prepare a patch to allow the firmware support to export a scatterlist via the struct firmware, and then use that with dma_map_sg(). Let's hope that the SPI interfaces support scatterlists. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: David Miller on 9 Mar 2010 04:30 From: Russell King - ARM Linux <linux(a)arm.linux.org.uk> Date: Tue, 9 Mar 2010 09:14:03 +0000 > What you could do is prepare a patch to allow the firmware support to > export a scatterlist via the struct firmware, and then use that with > dma_map_sg(). Let's hope that the SPI interfaces support scatterlists. It's so common to want a scatterlist from a vmalloc/vmap area that a generic common helper is probably the best. Just iterate over the vmalloc/vmap area using vmalloc_to_page() to fill in the SG entries. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Russell King - ARM Linux on 9 Mar 2010 05:20 On Tue, Mar 09, 2010 at 01:29:35AM -0800, David Miller wrote: > From: Russell King - ARM Linux <linux(a)arm.linux.org.uk> > Date: Tue, 9 Mar 2010 09:14:03 +0000 > > > What you could do is prepare a patch to allow the firmware support to > > export a scatterlist via the struct firmware, and then use that with > > dma_map_sg(). Let's hope that the SPI interfaces support scatterlists. > > It's so common to want a scatterlist from a vmalloc/vmap area > that a generic common helper is probably the best. > > Just iterate over the vmalloc/vmap area using vmalloc_to_page() > to fill in the SG entries. It looks like the firmware interface may return a pointer to either the kernel binary itself for built-in firmware, or to a set of pages which have been vmap'd. In the former case, vmalloc_to_page() will fail. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: David Miller on 9 Mar 2010 05:30 From: Russell King - ARM Linux <linux(a)arm.linux.org.uk> Date: Tue, 9 Mar 2010 10:16:11 +0000 > It looks like the firmware interface may return a pointer to either the > kernel binary itself for built-in firmware, or to a set of pages which > have been vmap'd. In the former case, vmalloc_to_page() will fail. Indeed, then you're right, the firmware layer would need to provide the interface since only it knows where the memory is. However, there's also no real portable way to compute physical addresses from kernel image virtual addresses. BTW, it's been my experience that drivers copy the firmware into a locally allocated buffer exactly to avoid this problem. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
First
|
Prev
|
Pages: 1 2 Prev: [PATCH 2/2] vhost - cleanup Next: [PATCH 1/2] vhost - Fix error path in vhost_net_set_backend |