On 1/9/23 11:07, Gerd Bayer wrote:
Since [1] the user-space program dma_map_benchmark shares the header file linux/map_benchmark.h with the kernel driver in kernel/dma/map_benchmark.c. With latest kernel version this does not compile anymore.
While https://kernelnewbies.org/KernelHeaders suggests otherwise, allow it to use kernel headers through the uapi/ include directory. I assume we can do so safely, since the controlling user-space program is distributed with the kernel.
With this change dma_map_benchmark compiles with just the obvious warning about uapi usage on ARCH=x86, arm64, and s390 and runs on ARCH=s390.
[1] commit 8ddde07a3d28 ("dma-mapping: benchmark: extract a common header file for map_benchmark definition")
Signed-off-by: Gerd Bayer gbayer@linux.ibm.com Acked-by: Xiang Chen chenxiang66@hisilicon.com
tools/testing/selftests/dma/dma_map_benchmark.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/dma/dma_map_benchmark.c b/tools/testing/selftests/dma/dma_map_benchmark.c index 5c997f17fcbd..d49d7ea6a63e 100644 --- a/tools/testing/selftests/dma/dma_map_benchmark.c +++ b/tools/testing/selftests/dma/dma_map_benchmark.c @@ -10,7 +10,7 @@ #include <unistd.h> #include <sys/ioctl.h> #include <sys/mman.h> -#include <linux/types.h> +#include <uapi/linux/types.h> #include <linux/map_benchmark.h> #define NSEC_PER_MSEC 1000000L
base-commit: 1fe4fd6f5cad346e598593af36caeadc4f5d4fa9
On Linux 6.2-rc3, dma_map_benchmark compiles just fine. You do have to do "make headers_install" first as kselftest depends on headers being installed in the repo.
Please let me know if you are seeing compile problems even after installing headers.
thanks, -- Shuah