# git rev-parse -q --verify 23c216b335d1fbd716076e8263b54a714ea3cf0e^{commit} 23c216b335d1fbd716076e8263b54a714ea3cf0e already have revision, skipping fetch # git checkout -q -f -B kisskb 23c216b335d1fbd716076e8263b54a714ea3cf0e # git clean -qxdf # < git log -1 # commit 23c216b335d1fbd716076e8263b54a714ea3cf0e # Author: Alexey Kardashevskiy # Date: Thu Sep 30 13:44:54 2021 +1000 # # powerpc/iommu: Report the correct most efficient DMA mask for PCI devices # # According to dma-api.rst, the dma_get_required_mask() helper should return # "the mask that the platform requires to operate efficiently". Which in # the case of PPC64 means the bypass mask and not a mask from an IOMMU table # which is shorter and slower to use due to map/unmap operations (especially # expensive on "pseries"). # # However the existing implementation ignores the possibility of bypassing # and returns the IOMMU table mask on the pseries platform which makes some # drivers (mpt3sas is one example) choose 32bit DMA even though bypass is # supported. The powernv platform sort of handles it by having a bigger # default window with a mask >=40 but it only works as drivers choose # 63/64bit if the required mask is >32 which is rather pointless. # # This reintroduces the bypass capability check to let drivers make # a better choice of the DMA mask. # # Fixes: f1565c24b596 ("powerpc: use the generic dma_ops_bypass mode") # Signed-off-by: Alexey Kardashevskiy # Reviewed-by: Christoph Hellwig # Signed-off-by: Michael Ellerman # Link: https://lore.kernel.org/r/20210930034454.95794-1-aik@ozlabs.ru # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 23c216b335d1fbd716076e8263b54a714ea3cf0e # < make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-fixes_ppc64_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- ppc64_defconfig # < make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-fixes_ppc64_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- help # make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-fixes_ppc64_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- olddefconfig # make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-fixes_ppc64_defconfig_powerpc-gcc5 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-5.5.0-nolibc/powerpc64-linux/bin/powerpc64-linux- Completed OK # rm -rf /kisskb/build/powerpc-fixes_ppc64_defconfig_powerpc-gcc5 # Build took: 0:03:40.314866