]> www.infradead.org Git - users/jedix/linux-maple.git/commit
media: ipu6: optimize the IPU6 MMU mapping flow
authorBingbu Cao <bingbu.cao@intel.com>
Tue, 5 Nov 2024 02:45:06 +0000 (10:45 +0800)
committerHans Verkuil <hverkuil@xs4all.nl>
Thu, 7 Nov 2024 08:05:58 +0000 (09:05 +0100)
commitf7c924aba3d94b00790e5927bf3e2471a26e4b3f
treecf06b348a8f6a9fbd2660122e4c1a0f5257c812e
parenta14908a9925baa043468e7c1a84d5ba0f77bb329
media: ipu6: optimize the IPU6 MMU mapping flow

ipu6_mmu_map() operated on a per-page basis, it leads frequent
spin_lock/unlock() and clflush_cache_range() for each page, it
will cause inefficiencies especially when handling dma-bufs
with large number of pages. However, the pages are likely concentrated
pages by IOMMU DMA driver, IPU MMU driver can map the concentrated
pages into less entries in l1 table.

This change enhances ipu6_mmu_map() with batching process multiple
contiguous pages. It significantly reduces calls for spin_lock/unlock
and clflush_cache_range() and improve the performance.

Signed-off-by: Bingbu Cao <bingbu.cao@intel.com>
Signed-off-by: Jianhui Dai <jianhui.j.dai@intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/pci/intel/ipu6/ipu6-mmu.c