Enable debugging of DMA-API usage

been trying to add DMA-API debuging in a custom built kernel for l4t 32.3.1 JETSON 4.3 .
being that the Xavier works as an ARM64 architectures, it should work.

build is done on host , getting these errors:

/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c: In function ‘seq_print_mapping’:
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2127:31: error: ‘struct dma_iommu_mapping’ has no member named ‘bits’
size_t mapping_size = mapping->bits << PAGE_SHIFT;
^~
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2133:25: error: ‘struct dma_iommu_mapping’ has no member named ‘nr_bitmaps’
for (i = 0; i < mapping->nr_bitmaps; i++)
^~
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2134:33: error: ‘struct dma_iommu_mapping’ has no member named ‘bitmaps’
seq_print_dma_areas(s, mapping->bitmaps[i],
^~
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2135:45: error: ‘struct dma_iommu_mapping’ has no member named ‘bits’
mapping->base + mapping_size * i, mapping->bits);
^~
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c: In function ‘_iommu_unmap’:
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2295:31: error: ‘struct dma_iommu_mapping’ has no member named ‘bits’
size_t mapping_size = mapping->bits << PAGE_SHIFT;
^~
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2303:54: error: ‘struct dma_iommu_mapping’ has no member named ‘extensions’
if ((iova < mapping->base) || bitmap_index > mapping->extensions ||
^~
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2304:31: error: ‘struct dma_iommu_mapping’ has no member named ‘extensions’
bitmap_last_index > mapping->extensions) {
^~
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2319:36: error: ‘struct dma_iommu_mapping’ has no member named ‘bits’
i++, offs = 0, end -= mapping->bits) {
^~
/home/user/nvidia/nvidia_sdk/JetPack_4.3_Linux_P2888/Linux_for_Tegra/sources/kernel/kernel-4.9/arch/arm64/mm/dma-mapping.c:2320:37: error: ‘struct dma_iommu_mapping’ has no member named ‘bitmaps’
start = find_next_zero_bit(mapping->bitmaps[i],

What changes are done to the code? These files get compiled fine otherwise without any modifications right?

if i uderstand what you’re asking, i’m building from the l4t kernel source code, no changes has been made to the source.
i just added CONFIG_DMA_API_DEBUG=y via menuconfig.
without this specific flag, the kernel builds fine.
i looked for the struct definition it’s under
arch/arm64/include/asm/dma-iommu.h
both it and the
arch/arm64/mm/dma-mapping.c

branch from mainline linux 4.9.140 . both have been edited 16 months ago when bitmap structure was removed. (i checked in the git) as result it seem as if the DMA API DEBUGGING is broken.

i would like to open this as a kernel issue in the repository, though it’s not clear where it is maintained, could someone provide an address.

Please revert below patch and try.
Revert “arm64: mm: Remove bitmaps structure”

pardon my noob`ness but how?

Did you revert the patch as sumitg pointed out?

not yet, i’m not clear on how to revert that patch. i managed to find it on the git. yet for now i’m trying to debug with the current configuration. once i have time to rebuild the kernel i’ll update my answer