[RFC PATCHv2 00/21] Ion clean in preparation for moving out of staging

Benjamin Gaignard benjamin.gaignard at linaro.org
Wed Mar 29 02:03:07 PDT 2017


2017-03-18 1:54 GMT+01:00 Laura Abbott <labbott at redhat.com>:
>
> Hi,
>
> This is v2 of the series to do some serious Ion clean up in preparation for
> moving out of staging. I got good feedback last time so this series mostly
> attempts to address that feedback and do more still more cleanup. Highlights:
>
> - All calls to DMA APIs should now be with a real actual proper device
>   structure
> - Patch to stop setting sg_dma_address manually now included
> - Fix for a bug in the query interface
> - Removal of custom ioctl interface
> - Removal of import interface
> - Removal of any notion of using Ion as an in kernel interface.
> - Cleanup of ABI so compat interface is no longer needed
> - Deletion of a bit more platform code
> - Combined heap enumeration and heap registration code up so there are fewer
>   layers of abstraction
> - Some general cleanup and header reduction.
> - Removal of both the ion_client and ion_handle structures since these mostly
>   become redundant. As a result, Ion only returns a dma_buf fd. The overall
>   result is that the only Ion interfaces are the query ioctl and the alloc
>   ioctl.
>
> The following are still TODOs/open problems:
> - Sumit's comments about the CMA naming.
> - Bindings/platform for chunk and carveout heap
> - There was some discussion about making the sg_table duplication generic. I
>   got bogged down in handling some of the edge cases for generic handling
>   so I put this aside. Making it generic is still something that should happen.
> - More fine-grained support for restricting heap access. There are good
>   arguments to be made for having a way for having good integration with
>   selinux and other policy mechanisms.
> - While not on the original list, there is still no good good test standalone
>   test framework. I noticed that the existing ion_test was fairly generic so I
>   proposed moving it to dma_buf. Daniel Vetter suggested just using the VGEM
>   module instead. Ideally, the tests can live as part of some other existing
>   test set (drm tests maybe?)
>
> Feedback appreciated as always.

Thanks for this v2, it really clean up and simplify ION.

For me the last question mark is about restricting heap access with
SElinux policy.
Since I haven't see other proposals I still believe that we should
have a /dev/ion/$heapname
per heap.

>
> Thanks,
> Laura
>
> Laura Abbott (21):
>   cma: Store a name in the cma structure
>   cma: Introduce cma_for_each_area
>   staging: android: ion: Remove dmap_cnt
>   staging: android: ion: Remove alignment from allocation field
>   staging: android: ion: Duplicate sg_table
>   staging: android: ion: Call dma_map_sg for syncing and mapping
>   staging: android: ion: Remove page faulting support
>   staging: android: ion: Remove crufty cache support
>   staging: android: ion: Remove custom ioctl interface
>   staging: android: ion: Remove import interface
>   staging: android: ion: Remove duplicate ION_IOC_MAP
>   staging: android: ion: Remove old platform support
>   staging: android: ion: Use CMA APIs directly
>   staging: android: ion: Stop butchering the DMA address
>   staging: android: ion: Break the ABI in the name of forward progress
>   staging: android: ion: Get rid of ion_phys_addr_t
>   staging: android: ion: Collapse internal header files
>   staging: android: ion: Rework heap registration/enumeration
>   staging: android: ion: Drop ion_map_kernel interface
>   staging: android: ion: Remove ion_handle and ion_client
>   staging: android: ion: Set query return value
>
>  drivers/base/dma-contiguous.c                      |    5 +-
>  drivers/staging/android/ion/Kconfig                |   56 +-
>  drivers/staging/android/ion/Makefile               |   18 +-
>  drivers/staging/android/ion/compat_ion.c           |  195 ----
>  drivers/staging/android/ion/compat_ion.h           |   29 -
>  drivers/staging/android/ion/hisilicon/Kconfig      |    5 -
>  drivers/staging/android/ion/hisilicon/Makefile     |    1 -
>  drivers/staging/android/ion/hisilicon/hi6220_ion.c |  113 --
>  drivers/staging/android/ion/ion-ioctl.c            |   85 +-
>  drivers/staging/android/ion/ion.c                  | 1164 +++-----------------
>  drivers/staging/android/ion/ion.h                  |  393 +++++--
>  drivers/staging/android/ion/ion_carveout_heap.c    |   37 +-
>  drivers/staging/android/ion/ion_chunk_heap.c       |   27 +-
>  drivers/staging/android/ion/ion_cma_heap.c         |  125 +--
>  drivers/staging/android/ion/ion_dummy_driver.c     |  156 ---
>  drivers/staging/android/ion/ion_heap.c             |   68 --
>  drivers/staging/android/ion/ion_of.c               |  184 ----
>  drivers/staging/android/ion/ion_of.h               |   37 -
>  drivers/staging/android/ion/ion_page_pool.c        |    6 +-
>  drivers/staging/android/ion/ion_priv.h             |  473 --------
>  drivers/staging/android/ion/ion_system_heap.c      |   53 +-
>  drivers/staging/android/ion/ion_test.c             |  305 -----
>  drivers/staging/android/ion/tegra/Makefile         |    1 -
>  drivers/staging/android/ion/tegra/tegra_ion.c      |   80 --
>  drivers/staging/android/uapi/ion.h                 |   86 +-
>  drivers/staging/android/uapi/ion_test.h            |   69 --
>  include/linux/cma.h                                |    6 +-
>  mm/cma.c                                           |   25 +-
>  mm/cma.h                                           |    1 +
>  mm/cma_debug.c                                     |    2 +-
>  30 files changed, 610 insertions(+), 3195 deletions(-)
>  delete mode 100644 drivers/staging/android/ion/compat_ion.c
>  delete mode 100644 drivers/staging/android/ion/compat_ion.h
>  delete mode 100644 drivers/staging/android/ion/hisilicon/Kconfig
>  delete mode 100644 drivers/staging/android/ion/hisilicon/Makefile
>  delete mode 100644 drivers/staging/android/ion/hisilicon/hi6220_ion.c
>  delete mode 100644 drivers/staging/android/ion/ion_dummy_driver.c
>  delete mode 100644 drivers/staging/android/ion/ion_of.c
>  delete mode 100644 drivers/staging/android/ion/ion_of.h
>  delete mode 100644 drivers/staging/android/ion/ion_priv.h
>  delete mode 100644 drivers/staging/android/ion/ion_test.c
>  delete mode 100644 drivers/staging/android/ion/tegra/Makefile
>  delete mode 100644 drivers/staging/android/ion/tegra/tegra_ion.c
>  delete mode 100644 drivers/staging/android/uapi/ion_test.h
>
> --
> 2.7.4
>



-- 
Benjamin Gaignard

Graphic Study Group

Linaro.org │ Open source software for ARM SoCs

Follow Linaro: Facebook | Twitter | Blog



More information about the linux-arm-kernel mailing list