* [PATCH] dma-mapping: benchmark: Extract a common header file for map_benchmark definition
@ 2022-02-11 3:14 Tian Tao via iommu
2022-02-11 4:22 ` Song Bao Hua (Barry Song) via iommu
0 siblings, 1 reply; 3+ messages in thread
From: Tian Tao via iommu @ 2022-02-11 3:14 UTC (permalink / raw)
To: song.bao.hua, shuah, chenxiang66; +Cc: iommu, linuxarm, linux-kselftest
kernel/dma/map_benchmark.c and selftests/dma/dma_map_benchmark.c
have duplicate map_benchmark definitions, which tends to lead to
inconsistent changes to map_benchmark on both sides, extract a
common header file to avoid this problem.
Signed-off-by: Tian Tao <tiantao6@hisilicon.com>
---
kernel/dma/map_benchmark.c | 24 +-------------
kernel/dma/map_benchmark.h | 31 +++++++++++++++++++
.../testing/selftests/dma/dma_map_benchmark.c | 25 +--------------
3 files changed, 33 insertions(+), 47 deletions(-)
create mode 100644 kernel/dma/map_benchmark.h
diff --git a/kernel/dma/map_benchmark.c b/kernel/dma/map_benchmark.c
index 9b9af1bd6be3..c05f4e242991 100644
--- a/kernel/dma/map_benchmark.c
+++ b/kernel/dma/map_benchmark.c
@@ -18,29 +18,7 @@
#include <linux/slab.h>
#include <linux/timekeeping.h>
-#define DMA_MAP_BENCHMARK _IOWR('d', 1, struct map_benchmark)
-#define DMA_MAP_MAX_THREADS 1024
-#define DMA_MAP_MAX_SECONDS 300
-#define DMA_MAP_MAX_TRANS_DELAY (10 * NSEC_PER_MSEC)
-
-#define DMA_MAP_BIDIRECTIONAL 0
-#define DMA_MAP_TO_DEVICE 1
-#define DMA_MAP_FROM_DEVICE 2
-
-struct map_benchmark {
- __u64 avg_map_100ns; /* average map latency in 100ns */
- __u64 map_stddev; /* standard deviation of map latency */
- __u64 avg_unmap_100ns; /* as above */
- __u64 unmap_stddev;
- __u32 threads; /* how many threads will do map/unmap in parallel */
- __u32 seconds; /* how long the test will last */
- __s32 node; /* which numa node this benchmark will run on */
- __u32 dma_bits; /* DMA addressing capability */
- __u32 dma_dir; /* DMA data direction */
- __u32 dma_trans_ns; /* time for DMA transmission in ns */
- __u32 granule; /* how many PAGE_SIZE will do map/unmap once a time */
- __u8 expansion[76]; /* For future use */
-};
+#include "map_benchmark.h"
struct map_benchmark_data {
struct map_benchmark bparam;
diff --git a/kernel/dma/map_benchmark.h b/kernel/dma/map_benchmark.h
new file mode 100644
index 000000000000..62674c83bde4
--- /dev/null
+++ b/kernel/dma/map_benchmark.h
@@ -0,0 +1,31 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2022 HiSilicon Limited.
+ */
+
+#ifndef _KERNEL_DMA_BENCHMARK_H
+#define _KERNEL_DMA_BENCHMARK_H
+
+#define DMA_MAP_BENCHMARK _IOWR('d', 1, struct map_benchmark)
+#define DMA_MAP_MAX_THREADS 1024
+#define DMA_MAP_MAX_SECONDS 300
+#define DMA_MAP_MAX_TRANS_DELAY (10 * NSEC_PER_MSEC)
+
+#define DMA_MAP_BIDIRECTIONAL 0
+#define DMA_MAP_TO_DEVICE 1
+#define DMA_MAP_FROM_DEVICE 2
+
+struct map_benchmark {
+ __u64 avg_map_100ns; /* average map latency in 100ns */
+ __u64 map_stddev; /* standard deviation of map latency */
+ __u64 avg_unmap_100ns; /* as above */
+ __u64 unmap_stddev;
+ __u32 threads; /* how many threads will do map/unmap in parallel */
+ __u32 seconds; /* how long the test will last */
+ __s32 node; /* which numa node this benchmark will run on */
+ __u32 dma_bits; /* DMA addressing capability */
+ __u32 dma_dir; /* DMA data direction */
+ __u32 dma_trans_ns; /* time for DMA transmission in ns */
+ __u32 granule; /* how many PAGE_SIZE will do map/unmap once a time */
+};
+#endif /* _KERNEL_DMA_BENCHMARK_H */
diff --git a/tools/testing/selftests/dma/dma_map_benchmark.c b/tools/testing/selftests/dma/dma_map_benchmark.c
index 485dff51bad2..33bf073071aa 100644
--- a/tools/testing/selftests/dma/dma_map_benchmark.c
+++ b/tools/testing/selftests/dma/dma_map_benchmark.c
@@ -11,39 +11,16 @@
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <linux/types.h>
+#include "../../../../kernel/dma/map_benchmark.h"
#define NSEC_PER_MSEC 1000000L
-#define DMA_MAP_BENCHMARK _IOWR('d', 1, struct map_benchmark)
-#define DMA_MAP_MAX_THREADS 1024
-#define DMA_MAP_MAX_SECONDS 300
-#define DMA_MAP_MAX_TRANS_DELAY (10 * NSEC_PER_MSEC)
-
-#define DMA_MAP_BIDIRECTIONAL 0
-#define DMA_MAP_TO_DEVICE 1
-#define DMA_MAP_FROM_DEVICE 2
-
static char *directions[] = {
"BIDIRECTIONAL",
"TO_DEVICE",
"FROM_DEVICE",
};
-struct map_benchmark {
- __u64 avg_map_100ns; /* average map latency in 100ns */
- __u64 map_stddev; /* standard deviation of map latency */
- __u64 avg_unmap_100ns; /* as above */
- __u64 unmap_stddev;
- __u32 threads; /* how many threads will do map/unmap in parallel */
- __u32 seconds; /* how long the test will last */
- __s32 node; /* which numa node this benchmark will run on */
- __u32 dma_bits; /* DMA addressing capability */
- __u32 dma_dir; /* DMA data direction */
- __u32 dma_trans_ns; /* time for DMA transmission in ns */
- __u32 granule; /* how many PAGE_SIZE will do map/unmap once a time */
- __u8 expansion[76]; /* For future use */
-};
-
int main(int argc, char **argv)
{
struct map_benchmark map;
--
2.33.0
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
^ permalink raw reply related [flat|nested] 3+ messages in thread
* RE: [PATCH] dma-mapping: benchmark: Extract a common header file for map_benchmark definition
2022-02-11 3:14 [PATCH] dma-mapping: benchmark: Extract a common header file for map_benchmark definition Tian Tao via iommu
@ 2022-02-11 4:22 ` Song Bao Hua (Barry Song) via iommu
2022-02-11 17:11 ` Shuah Khan
0 siblings, 1 reply; 3+ messages in thread
From: Song Bao Hua (Barry Song) via iommu @ 2022-02-11 4:22 UTC (permalink / raw)
To: tiantao (H), shuah@kernel.org, chenxiang (M), hch@lst.de
Cc: iommu@lists.linux-foundation.org, linuxarm@openeuler.org,
linux-kselftest@vger.kernel.org
> -----Original Message-----
> From: tiantao (H)
> Sent: Friday, February 11, 2022 4:15 PM
> To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; shuah@kernel.org;
> chenxiang (M) <chenxiang66@hisilicon.com>
> Cc: iommu@lists.linux-foundation.org; linux-kselftest@vger.kernel.org;
> linuxarm@openeuler.org
> Subject: [PATCH] dma-mapping: benchmark: Extract a common header file for
> map_benchmark definition
>
> kernel/dma/map_benchmark.c and selftests/dma/dma_map_benchmark.c
> have duplicate map_benchmark definitions, which tends to lead to
> inconsistent changes to map_benchmark on both sides, extract a
> common header file to avoid this problem.
>
> Signed-off-by: Tian Tao <tiantao6@hisilicon.com>
+To: Christoph
Looks like a right cleanup. This will help decrease the maintain
overhead in the future. Other similar selftests tools are also
doing this.
Acked-by: Barry Song <song.bao.hua@hisilicon.com>
> ---
> kernel/dma/map_benchmark.c | 24 +-------------
> kernel/dma/map_benchmark.h | 31 +++++++++++++++++++
> .../testing/selftests/dma/dma_map_benchmark.c | 25 +--------------
> 3 files changed, 33 insertions(+), 47 deletions(-)
> create mode 100644 kernel/dma/map_benchmark.h
>
> diff --git a/kernel/dma/map_benchmark.c b/kernel/dma/map_benchmark.c
> index 9b9af1bd6be3..c05f4e242991 100644
> --- a/kernel/dma/map_benchmark.c
> +++ b/kernel/dma/map_benchmark.c
> @@ -18,29 +18,7 @@
> #include <linux/slab.h>
> #include <linux/timekeeping.h>
>
> -#define DMA_MAP_BENCHMARK _IOWR('d', 1, struct map_benchmark)
> -#define DMA_MAP_MAX_THREADS 1024
> -#define DMA_MAP_MAX_SECONDS 300
> -#define DMA_MAP_MAX_TRANS_DELAY (10 * NSEC_PER_MSEC)
> -
> -#define DMA_MAP_BIDIRECTIONAL 0
> -#define DMA_MAP_TO_DEVICE 1
> -#define DMA_MAP_FROM_DEVICE 2
> -
> -struct map_benchmark {
> - __u64 avg_map_100ns; /* average map latency in 100ns */
> - __u64 map_stddev; /* standard deviation of map latency */
> - __u64 avg_unmap_100ns; /* as above */
> - __u64 unmap_stddev;
> - __u32 threads; /* how many threads will do map/unmap in parallel */
> - __u32 seconds; /* how long the test will last */
> - __s32 node; /* which numa node this benchmark will run on */
> - __u32 dma_bits; /* DMA addressing capability */
> - __u32 dma_dir; /* DMA data direction */
> - __u32 dma_trans_ns; /* time for DMA transmission in ns */
> - __u32 granule; /* how many PAGE_SIZE will do map/unmap once a time */
> - __u8 expansion[76]; /* For future use */
> -};
> +#include "map_benchmark.h"
>
> struct map_benchmark_data {
> struct map_benchmark bparam;
> diff --git a/kernel/dma/map_benchmark.h b/kernel/dma/map_benchmark.h
> new file mode 100644
> index 000000000000..62674c83bde4
> --- /dev/null
> +++ b/kernel/dma/map_benchmark.h
> @@ -0,0 +1,31 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (C) 2022 HiSilicon Limited.
> + */
> +
> +#ifndef _KERNEL_DMA_BENCHMARK_H
> +#define _KERNEL_DMA_BENCHMARK_H
> +
> +#define DMA_MAP_BENCHMARK _IOWR('d', 1, struct map_benchmark)
> +#define DMA_MAP_MAX_THREADS 1024
> +#define DMA_MAP_MAX_SECONDS 300
> +#define DMA_MAP_MAX_TRANS_DELAY (10 * NSEC_PER_MSEC)
> +
> +#define DMA_MAP_BIDIRECTIONAL 0
> +#define DMA_MAP_TO_DEVICE 1
> +#define DMA_MAP_FROM_DEVICE 2
> +
> +struct map_benchmark {
> + __u64 avg_map_100ns; /* average map latency in 100ns */
> + __u64 map_stddev; /* standard deviation of map latency */
> + __u64 avg_unmap_100ns; /* as above */
> + __u64 unmap_stddev;
> + __u32 threads; /* how many threads will do map/unmap in parallel */
> + __u32 seconds; /* how long the test will last */
> + __s32 node; /* which numa node this benchmark will run on */
> + __u32 dma_bits; /* DMA addressing capability */
> + __u32 dma_dir; /* DMA data direction */
> + __u32 dma_trans_ns; /* time for DMA transmission in ns */
> + __u32 granule; /* how many PAGE_SIZE will do map/unmap once a time */
> +};
> +#endif /* _KERNEL_DMA_BENCHMARK_H */
> diff --git a/tools/testing/selftests/dma/dma_map_benchmark.c
> b/tools/testing/selftests/dma/dma_map_benchmark.c
> index 485dff51bad2..33bf073071aa 100644
> --- a/tools/testing/selftests/dma/dma_map_benchmark.c
> +++ b/tools/testing/selftests/dma/dma_map_benchmark.c
> @@ -11,39 +11,16 @@
> #include <sys/ioctl.h>
> #include <sys/mman.h>
> #include <linux/types.h>
> +#include "../../../../kernel/dma/map_benchmark.h"
>
> #define NSEC_PER_MSEC 1000000L
>
> -#define DMA_MAP_BENCHMARK _IOWR('d', 1, struct map_benchmark)
> -#define DMA_MAP_MAX_THREADS 1024
> -#define DMA_MAP_MAX_SECONDS 300
> -#define DMA_MAP_MAX_TRANS_DELAY (10 * NSEC_PER_MSEC)
> -
> -#define DMA_MAP_BIDIRECTIONAL 0
> -#define DMA_MAP_TO_DEVICE 1
> -#define DMA_MAP_FROM_DEVICE 2
> -
> static char *directions[] = {
> "BIDIRECTIONAL",
> "TO_DEVICE",
> "FROM_DEVICE",
> };
>
> -struct map_benchmark {
> - __u64 avg_map_100ns; /* average map latency in 100ns */
> - __u64 map_stddev; /* standard deviation of map latency */
> - __u64 avg_unmap_100ns; /* as above */
> - __u64 unmap_stddev;
> - __u32 threads; /* how many threads will do map/unmap in parallel */
> - __u32 seconds; /* how long the test will last */
> - __s32 node; /* which numa node this benchmark will run on */
> - __u32 dma_bits; /* DMA addressing capability */
> - __u32 dma_dir; /* DMA data direction */
> - __u32 dma_trans_ns; /* time for DMA transmission in ns */
> - __u32 granule; /* how many PAGE_SIZE will do map/unmap once a time */
> - __u8 expansion[76]; /* For future use */
> -};
> -
> int main(int argc, char **argv)
> {
> struct map_benchmark map;
> --
> 2.33.0
Thanks
Barry
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] dma-mapping: benchmark: Extract a common header file for map_benchmark definition
2022-02-11 4:22 ` Song Bao Hua (Barry Song) via iommu
@ 2022-02-11 17:11 ` Shuah Khan
0 siblings, 0 replies; 3+ messages in thread
From: Shuah Khan @ 2022-02-11 17:11 UTC (permalink / raw)
To: Song Bao Hua (Barry Song), tiantao (H), shuah@kernel.org,
chenxiang (M), hch@lst.de
Cc: iommu@lists.linux-foundation.org, linuxarm@openeuler.org,
linux-kselftest@vger.kernel.org, Shuah Khan
On 2/10/22 9:22 PM, Song Bao Hua (Barry Song) wrote:
>
>
>> -----Original Message-----
>> From: tiantao (H)
>> Sent: Friday, February 11, 2022 4:15 PM
>> To: Song Bao Hua (Barry Song) <song.bao.hua@hisilicon.com>; shuah@kernel.org;
>> chenxiang (M) <chenxiang66@hisilicon.com>
>> Cc: iommu@lists.linux-foundation.org; linux-kselftest@vger.kernel.org;
>> linuxarm@openeuler.org
>> Subject: [PATCH] dma-mapping: benchmark: Extract a common header file for
>> map_benchmark definition
>>
>> kernel/dma/map_benchmark.c and selftests/dma/dma_map_benchmark.c
>> have duplicate map_benchmark definitions, which tends to lead to
>> inconsistent changes to map_benchmark on both sides, extract a
>> common header file to avoid this problem.
>>
>> Signed-off-by: Tian Tao <tiantao6@hisilicon.com>
>
> +To: Christoph
>
> Looks like a right cleanup. This will help decrease the maintain
> overhead in the future. Other similar selftests tools are also
> doing this.
>
> Acked-by: Barry Song <song.bao.hua@hisilicon.com>
>
+1 on this cleanup making this code maintainable. We are moving in
the direction of cleaning up defines in selftests for the same
reason.
Let's just make sure this works on older kernels. We do support
mainline kselftest on stable releases. With that:
Reviewed-by: Shuah Khan <skhan@linuxfoundation.org>
thanks,
-- Shuah
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-02-11 17:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-11 3:14 [PATCH] dma-mapping: benchmark: Extract a common header file for map_benchmark definition Tian Tao via iommu
2022-02-11 4:22 ` Song Bao Hua (Barry Song) via iommu
2022-02-11 17:11 ` Shuah Khan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox