2017-03-18 1:54 GMT+01:00 Laura Abbott labbott@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