Message ID | 20190529102843.13174-1-laurentiu.tudor@nxp.com (mailing list archive) |
---|---|
Headers | show |
Series | prerequisites for device reserved local mem rework | expand |
On Wed, May 29, 2019 at 01:28:38PM +0300, laurentiu.tudor@nxp.com wrote: > From: Laurentiu Tudor <laurentiu.tudor@nxp.com> > > For HCs that have local memory, replace the current DMA API usage > with a genalloc generic allocator to manage the mappings for these > devices. > This is in preparation for dropping the existing "coherent" dma > mem declaration APIs. Current implementation was relying on a short > circuit in the DMA API that in the end, was acting as an allocator > for these type of devices. > > Only compiled tested, so any volunteers willing to test are most welcome. > > Thank you! > > For context, see thread here: https://lkml.org/lkml/2019/4/22/357 All look good to me: Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Christoph, this is going through your tree, right? thanks, greg k-h
On Wed, May 29, 2019 at 04:34:27AM -0700, Greg KH wrote: > Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > Christoph, this is going through your tree, right? Yes, I'll pіck it up.
Hi Christoph, On 29.05.2019 14:37, Christoph Hellwig wrote: > On Wed, May 29, 2019 at 04:34:27AM -0700, Greg KH wrote: >> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> >> >> Christoph, this is going through your tree, right? > > Yes, I'll pіck it up. > Thanks, hope this time everything is fine. When you get the time, please let me know your ideas on the next steps. --- Best Regards, Laurentiu
On Wed, May 29, 2019 at 02:06:12PM +0000, Laurentiu Tudor wrote: > Thanks, hope this time everything is fine. I've applied it to the dma-mapping tree now. > When you get the time, please let me know your ideas on the next steps. I think the next step is to move the call to dma_alloc_from_dev_coherent from dma_alloc_attrs into the ->alloc instances. The only onces that really need it for now are the generic and legacy arm dma-direct code, and drivers/iommu/dma-iommu.c as well as the ARM DMA API code, as those are the ones use for architectures that declare coherent regions. The other iommus are not used on OF platforms (at least that's what my analysis said a while ago, feel free to double check it)
> -----Original Message----- > From: Christoph Hellwig <hch@lst.de> > Sent: Friday, May 31, 2019 7:43 PM > > On Wed, May 29, 2019 at 02:06:12PM +0000, Laurentiu Tudor wrote: > > Thanks, hope this time everything is fine. > > I've applied it to the dma-mapping tree now. > > > When you get the time, please let me know your ideas on the next steps. > > I think the next step is to move the call to > dma_alloc_from_dev_coherent from dma_alloc_attrs into the ->alloc > instances. The only onces that really need it for now are the > generic and legacy arm dma-direct code, and drivers/iommu/dma-iommu.c > as well as the ARM DMA API code, as those are the ones use for > architectures that declare coherent regions. The other iommus are > not used on OF platforms (at least that's what my analysis said a while > ago, feel free to double check it) Thanks. I'll start looking into it starting next week. Keep in touch. --- Best Regards, Laurentiu
On 31.05.2019 19:43, Christoph Hellwig wrote: > On Wed, May 29, 2019 at 02:06:12PM +0000, Laurentiu Tudor wrote: >> Thanks, hope this time everything is fine. > > I've applied it to the dma-mapping tree now. > >> When you get the time, please let me know your ideas on the next steps. > > I think the next step is to move the call to > dma_alloc_from_dev_coherent from dma_alloc_attrs into the ->alloc > instances. The only onces that really need it for now are the > generic and legacy arm dma-direct code, and drivers/iommu/dma-iommu.c > as well as the ARM DMA API code, as those are the ones use for > architectures that declare coherent regions. The other iommus are > not used on OF platforms (at least that's what my analysis said a while > ago, feel free to double check it) Thanks for the details. I'll be OOO next week so probably I'll start looking into it next next week. --- Best Regards, Laurentiu
From: Laurentiu Tudor <laurentiu.tudor@nxp.com> For HCs that have local memory, replace the current DMA API usage with a genalloc generic allocator to manage the mappings for these devices. This is in preparation for dropping the existing "coherent" dma mem declaration APIs. Current implementation was relying on a short circuit in the DMA API that in the end, was acting as an allocator for these type of devices. Only compiled tested, so any volunteers willing to test are most welcome. Thank you! For context, see thread here: https://lkml.org/lkml/2019/4/22/357 Changes in v7: - drop useless __iomem annotation to fix sparse warning - select GENERIC_ALLOCATOR to fix compilation on sh arch Changes in v6: - drop some unneeded initializations (Alan) - use device name for genpool instead of misleading "ohci-hcd" (Alan) - updated some comments (Alan, Fredrik) - added Tested-By tags Changes in v5: - updated first patch to preserve bisectability (Christoph, Greg) - fixed a few more places where dma api was still being used (e.g. td_alloc, ed_alloc) (Fredrik) - included patch from Fredrik adding gen_pool_dma_zalloc() api - added patch that drops HCD_LOCAL_MEM altogether (Greg) - set td_cache / ed_cache to null for devices with local mem (Fredrik) - introduce usb_hcd_setup_local_mem() that sets up the genalloc pool for drivers and updated drivers to use it Changes in v4: - created mapping for local mem - fix genalloc misuse Changes in v3: - rearranged calls into genalloc simplifying the code a bit (Christoph) - dropped RFC prefix Changes in v2: - use genalloc also in core usb (based on comment from Robin) - moved genpool decl to usb_hcd to be accesible from core usb Fredrik Noring (1): lib/genalloc.c: Add gen_pool_dma_zalloc() for zeroed DMA allocations Laurentiu Tudor (4): USB: use genalloc for USB HCs with local memory usb: host: ohci-sm501: init genalloc for local memory usb: host: ohci-tmio: init genalloc for local memory USB: drop HCD_LOCAL_MEM flag drivers/usb/Kconfig | 1 + drivers/usb/core/buffer.c | 17 ++++++++---- drivers/usb/core/hcd.c | 51 ++++++++++++++++++++++++++++------ drivers/usb/host/ehci-hcd.c | 2 +- drivers/usb/host/fotg210-hcd.c | 2 +- drivers/usb/host/ohci-hcd.c | 25 +++++++++++++---- drivers/usb/host/ohci-mem.c | 35 ++++++++++++++++++++--- drivers/usb/host/ohci-sm501.c | 50 +++++++++++++++------------------ drivers/usb/host/ohci-tmio.c | 15 ++++------ drivers/usb/host/ohci.h | 2 ++ drivers/usb/host/uhci-hcd.c | 2 +- include/linux/genalloc.h | 1 + include/linux/usb/hcd.h | 6 +++- lib/genalloc.c | 29 ++++++++++++++++++- 14 files changed, 172 insertions(+), 66 deletions(-)