2020-02-13 00:35:16

by Yiwei Zhang

[permalink] [raw]
Subject: [PATCH v2] Add gpu memory tracepoints

From: Yiwei Zhang <[email protected]>

This change adds the below gpu memory tracepoint:
gpu_mem/gpu_mem_total: track global or process gpu memory total counters

Signed-off-by: Yiwei Zhang <[email protected]>
---
drivers/Kconfig | 2 +
drivers/gpu/Makefile | 1 +
drivers/gpu/trace/Kconfig | 4 ++
drivers/gpu/trace/Makefile | 3 ++
drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
include/trace/events/gpu_mem.h | 64 +++++++++++++++++++++++++++++++
6 files changed, 87 insertions(+)
create mode 100644 drivers/gpu/trace/Kconfig
create mode 100644 drivers/gpu/trace/Makefile
create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
create mode 100644 include/trace/events/gpu_mem.h

diff --git a/drivers/Kconfig b/drivers/Kconfig
index 8befa53f43be..e0eda1a5c3f9 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"

source "drivers/android/Kconfig"

+source "drivers/gpu/trace/Kconfig"
+
source "drivers/nvdimm/Kconfig"

source "drivers/dax/Kconfig"
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
index f17d01f076c7..835c88318cec 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -5,3 +5,4 @@
obj-$(CONFIG_TEGRA_HOST1X) += host1x/
obj-y += drm/ vga/
obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
+obj-$(CONFIG_TRACE_GPU_MEM) += trace/
diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
new file mode 100644
index 000000000000..c24e9edd022e
--- /dev/null
+++ b/drivers/gpu/trace/Kconfig
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config TRACE_GPU_MEM
+ bool
diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
new file mode 100644
index 000000000000..b70fbdc5847f
--- /dev/null
+++ b/drivers/gpu/trace/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
new file mode 100644
index 000000000000..01e855897b6d
--- /dev/null
+++ b/drivers/gpu/trace/trace_gpu_mem.c
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#include <linux/module.h>
+
+#define CREATE_TRACE_POINTS
+#include <trace/events/gpu_mem.h>
+
+EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
new file mode 100644
index 000000000000..3b632a2b5100
--- /dev/null
+++ b/include/trace/events/gpu_mem.h
@@ -0,0 +1,64 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM gpu_mem
+
+#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_GPU_MEM_H
+
+#include <linux/tracepoint.h>
+
+/*
+ * The gpu_memory_total event indicates that there's an update to either the
+ * global or process total gpu memory counters.
+ *
+ * This event should be emitted whenever the kernel device driver allocates,
+ * frees, imports, unimports memory in the GPU addressable space.
+ *
+ * @gpu_id: This is the gpu id.
+ *
+ * @pid: Put 0 for global total, while positive pid for process total.
+ *
+ * @size: Virtual size of the allocation in bytes.
+ *
+ */
+TRACE_EVENT(gpu_mem_total,
+ TP_PROTO(
+ uint32_t gpu_id,
+ uint32_t pid,
+ uint64_t size
+ ),
+ TP_ARGS(
+ gpu_id,
+ pid,
+ size
+ ),
+ TP_STRUCT__entry(
+ __field(uint32_t, gpu_id)
+ __field(uint32_t, pid)
+ __field(uint64_t, size)
+ ),
+ TP_fast_assign(
+ __entry->gpu_id = gpu_id;
+ __entry->pid = pid;
+ __entry->size = size;
+ ),
+ TP_printk(
+ "gpu_id=%u "
+ "pid=%u "
+ "size=%llu",
+ __entry->gpu_id,
+ __entry->pid,
+ __entry->size
+ )
+);
+
+#endif /* _TRACE_GPU_MEM_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
--
2.25.0.225.g125e21ebc7-goog


2020-02-13 00:40:13

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v2] Add gpu memory tracepoints

The context is here: https://lkml.org/lkml/2020/2/10/1903 and
https://lkml.org/lkml/2020/2/12/997

On Wed, Feb 12, 2020 at 4:33 PM <[email protected]> wrote:
>
> From: Yiwei Zhang <[email protected]>
>
> This change adds the below gpu memory tracepoint:
> gpu_mem/gpu_mem_total: track global or process gpu memory total counters
>
> Signed-off-by: Yiwei Zhang <[email protected]>
> ---
> drivers/Kconfig | 2 +
> drivers/gpu/Makefile | 1 +
> drivers/gpu/trace/Kconfig | 4 ++
> drivers/gpu/trace/Makefile | 3 ++
> drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
> include/trace/events/gpu_mem.h | 64 +++++++++++++++++++++++++++++++
> 6 files changed, 87 insertions(+)
> create mode 100644 drivers/gpu/trace/Kconfig
> create mode 100644 drivers/gpu/trace/Makefile
> create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
> create mode 100644 include/trace/events/gpu_mem.h
>
> diff --git a/drivers/Kconfig b/drivers/Kconfig
> index 8befa53f43be..e0eda1a5c3f9 100644
> --- a/drivers/Kconfig
> +++ b/drivers/Kconfig
> @@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"
>
> source "drivers/android/Kconfig"
>
> +source "drivers/gpu/trace/Kconfig"
> +
> source "drivers/nvdimm/Kconfig"
>
> source "drivers/dax/Kconfig"
> diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
> index f17d01f076c7..835c88318cec 100644
> --- a/drivers/gpu/Makefile
> +++ b/drivers/gpu/Makefile
> @@ -5,3 +5,4 @@
> obj-$(CONFIG_TEGRA_HOST1X) += host1x/
> obj-y += drm/ vga/
> obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
> +obj-$(CONFIG_TRACE_GPU_MEM) += trace/
> diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
> new file mode 100644
> index 000000000000..c24e9edd022e
> --- /dev/null
> +++ b/drivers/gpu/trace/Kconfig
> @@ -0,0 +1,4 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +
> +config TRACE_GPU_MEM
> + bool
> diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
> new file mode 100644
> index 000000000000..b70fbdc5847f
> --- /dev/null
> +++ b/drivers/gpu/trace/Makefile
> @@ -0,0 +1,3 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
> diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
> new file mode 100644
> index 000000000000..01e855897b6d
> --- /dev/null
> +++ b/drivers/gpu/trace/trace_gpu_mem.c
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * GPU memory trace points
> + *
> + * Copyright (C) 2020 Google, Inc.
> + */
> +
> +#include <linux/module.h>
> +
> +#define CREATE_TRACE_POINTS
> +#include <trace/events/gpu_mem.h>
> +
> +EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
> diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
> new file mode 100644
> index 000000000000..3b632a2b5100
> --- /dev/null
> +++ b/include/trace/events/gpu_mem.h
> @@ -0,0 +1,64 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * GPU memory trace points
> + *
> + * Copyright (C) 2020 Google, Inc.
> + */
> +
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM gpu_mem
> +
> +#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_GPU_MEM_H
> +
> +#include <linux/tracepoint.h>
> +
> +/*
> + * The gpu_memory_total event indicates that there's an update to either the
> + * global or process total gpu memory counters.
> + *
> + * This event should be emitted whenever the kernel device driver allocates,
> + * frees, imports, unimports memory in the GPU addressable space.
> + *
> + * @gpu_id: This is the gpu id.
> + *
> + * @pid: Put 0 for global total, while positive pid for process total.
> + *
> + * @size: Virtual size of the allocation in bytes.
> + *
> + */
> +TRACE_EVENT(gpu_mem_total,
> + TP_PROTO(
> + uint32_t gpu_id,
> + uint32_t pid,
> + uint64_t size
> + ),
> + TP_ARGS(
> + gpu_id,
> + pid,
> + size
> + ),
> + TP_STRUCT__entry(
> + __field(uint32_t, gpu_id)
> + __field(uint32_t, pid)
> + __field(uint64_t, size)
> + ),
> + TP_fast_assign(
> + __entry->gpu_id = gpu_id;
> + __entry->pid = pid;
> + __entry->size = size;
> + ),
> + TP_printk(
> + "gpu_id=%u "
> + "pid=%u "
> + "size=%llu",
> + __entry->gpu_id,
> + __entry->pid,
> + __entry->size
> + )
> +);
> +
> +#endif /* _TRACE_GPU_MEM_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
> --
> 2.25.0.225.g125e21ebc7-goog
>

2020-02-13 00:40:57

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v2] Add gpu memory tracepoints

On Wed, Feb 12, 2020 at 04:32:59PM -0800, [email protected] wrote:
> From: Yiwei Zhang <[email protected]>
>
> This change adds the below gpu memory tracepoint:
> gpu_mem/gpu_mem_total: track global or process gpu memory total counters
>
> Signed-off-by: Yiwei Zhang <[email protected]>

If this helps gpu drivers wean themselves off of debugfs, I am all for
it:
Acked-by: Greg Kroah-Hartman <[email protected]>

Thanks for doing this.

greg k-h

2020-02-13 01:24:07

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v2] Add gpu memory tracepoints

Hi Greg,

Thanks for your prompt response!

For upstream drm gem based gfx drivers, the lower level device driver
layer is able to implement such per-process gpu memory total counters
but the common drm gem layer is probably not. At least the global
total gpu memory counter is fairly easy to implement, and then this
tracepoint can still be useful right away.

For Android, the debugfs has already been forced to be deprecated in
the coming Android 11 release. We have asked Android GPU vendors to
implement such global and per-process total memory counters. So they
can easily use this tracepoint inside the driver. This is mainly to
serve the profiling needs as well as the runtime query needs(by
attaching a eBPF program from userspace), and this patch helps
standardize the tracepoint in the kernel.

Many thanks!
Yiwei


On Wed, Feb 12, 2020 at 4:40 PM Greg KH <[email protected]> wrote:
>
> On Wed, Feb 12, 2020 at 04:32:59PM -0800, [email protected] wrote:
> > From: Yiwei Zhang <[email protected]>
> >
> > This change adds the below gpu memory tracepoint:
> > gpu_mem/gpu_mem_total: track global or process gpu memory total counters
> >
> > Signed-off-by: Yiwei Zhang <[email protected]>
>
> If this helps gpu drivers wean themselves off of debugfs, I am all for
> it:
> Acked-by: Greg Kroah-Hartman <[email protected]>
>
> Thanks for doing this.
>
> greg k-h

2020-02-13 01:49:55

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v2] Add gpu memory tracepoints

On Wed, 12 Feb 2020 16:32:59 -0800
[email protected] wrote:

> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM gpu_mem
> +
> +#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_GPU_MEM_H
> +
> +#include <linux/tracepoint.h>
> +
> +/*
> + * The gpu_memory_total event indicates that there's an update to either the
> + * global or process total gpu memory counters.
> + *
> + * This event should be emitted whenever the kernel device driver allocates,
> + * frees, imports, unimports memory in the GPU addressable space.
> + *
> + * @gpu_id: This is the gpu id.
> + *
> + * @pid: Put 0 for global total, while positive pid for process total.
> + *
> + * @size: Virtual size of the allocation in bytes.
> + *
> + */
> +TRACE_EVENT(gpu_mem_total,
> + TP_PROTO(
> + uint32_t gpu_id,
> + uint32_t pid,
> + uint64_t size
> + ),
> + TP_ARGS(
> + gpu_id,
> + pid,
> + size
> + ),

This is unique whitespace parsing. Usually, this would be:

TP_PROTO(uint32_t gpu_id, unint32_t pid, uint64_t size),

TP_ARGS(gpu_id, pid, size),

> + TP_STRUCT__entry(
> + __field(uint32_t, gpu_id)
> + __field(uint32_t, pid)
> + __field(uint64_t, size)
> + ),
> + TP_fast_assign(
> + __entry->gpu_id = gpu_id;
> + __entry->pid = pid;
> + __entry->size = size;
> + ),
> + TP_printk(
> + "gpu_id=%u "
> + "pid=%u "
> + "size=%llu",

Breaking up a string is frowned upon.

TP_print("gpu_id=%u pid=$u size=%llu",
__entry->gpu_id,
__entry->pid,
__entry->size)

-- Steve

> + __entry->gpu_id,
> + __entry->pid,
> + __entry->size
> + )
> +);
> +
> +#endif /* _TRACE_GPU_MEM_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>

2020-02-13 02:22:33

by Yiwei Zhang

[permalink] [raw]
Subject: [PATCH v2] Add gpu memory tracepoints

From: Yiwei Zhang <[email protected]>

This change adds the below gpu memory tracepoint:
gpu_mem/gpu_mem_total: track global or process gpu memory total counters

Signed-off-by: Yiwei Zhang <[email protected]>
---
drivers/Kconfig | 2 ++
drivers/gpu/Makefile | 1 +
drivers/gpu/trace/Kconfig | 4 +++
drivers/gpu/trace/Makefile | 3 ++
drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
include/trace/events/gpu_mem.h | 57 +++++++++++++++++++++++++++++++
6 files changed, 80 insertions(+)
create mode 100644 drivers/gpu/trace/Kconfig
create mode 100644 drivers/gpu/trace/Makefile
create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
create mode 100644 include/trace/events/gpu_mem.h

diff --git a/drivers/Kconfig b/drivers/Kconfig
index 8befa53f43be..e0eda1a5c3f9 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"

source "drivers/android/Kconfig"

+source "drivers/gpu/trace/Kconfig"
+
source "drivers/nvdimm/Kconfig"

source "drivers/dax/Kconfig"
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
index f17d01f076c7..835c88318cec 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -5,3 +5,4 @@
obj-$(CONFIG_TEGRA_HOST1X) += host1x/
obj-y += drm/ vga/
obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
+obj-$(CONFIG_TRACE_GPU_MEM) += trace/
diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
new file mode 100644
index 000000000000..c24e9edd022e
--- /dev/null
+++ b/drivers/gpu/trace/Kconfig
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config TRACE_GPU_MEM
+ bool
diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
new file mode 100644
index 000000000000..b70fbdc5847f
--- /dev/null
+++ b/drivers/gpu/trace/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
new file mode 100644
index 000000000000..01e855897b6d
--- /dev/null
+++ b/drivers/gpu/trace/trace_gpu_mem.c
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#include <linux/module.h>
+
+#define CREATE_TRACE_POINTS
+#include <trace/events/gpu_mem.h>
+
+EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
new file mode 100644
index 000000000000..1897822a9150
--- /dev/null
+++ b/include/trace/events/gpu_mem.h
@@ -0,0 +1,57 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM gpu_mem
+
+#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_GPU_MEM_H
+
+#include <linux/tracepoint.h>
+
+/*
+ * The gpu_memory_total event indicates that there's an update to either the
+ * global or process total gpu memory counters.
+ *
+ * This event should be emitted whenever the kernel device driver allocates,
+ * frees, imports, unimports memory in the GPU addressable space.
+ *
+ * @gpu_id: This is the gpu id.
+ *
+ * @pid: Put 0 for global total, while positive pid for process total.
+ *
+ * @size: Virtual size of the allocation in bytes.
+ *
+ */
+TRACE_EVENT(gpu_mem_total,
+
+ TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
+
+ TP_ARGS(gpu_id, pid, size),
+
+ TP_STRUCT__entry(
+ __field(uint32_t, gpu_id)
+ __field(uint32_t, pid)
+ __field(uint64_t, size)
+ ),
+
+ TP_fast_assign(
+ __entry->gpu_id = gpu_id;
+ __entry->pid = pid;
+ __entry->size = size;
+ ),
+
+ TP_printk("gpu_id=%u pid=%u size=%llu",
+ __entry->gpu_id,
+ __entry->pid,
+ __entry->size)
+);
+
+#endif /* _TRACE_GPU_MEM_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
--
2.25.0.225.g125e21ebc7-goog

2020-02-13 02:26:20

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v2] Add gpu memory tracepoints

Hi Steven,

I'm not sure if my use of "in-reply-to" is correct. I can only find
the Message-Id of my original email from cmdline. but looks like the
diff shows up right.

Best,
Yiwei

On Wed, Feb 12, 2020 at 6:20 PM <[email protected]> wrote:
>
> From: Yiwei Zhang <[email protected]>
>
> This change adds the below gpu memory tracepoint:
> gpu_mem/gpu_mem_total: track global or process gpu memory total counters
>
> Signed-off-by: Yiwei Zhang <[email protected]>
> ---
> drivers/Kconfig | 2 ++
> drivers/gpu/Makefile | 1 +
> drivers/gpu/trace/Kconfig | 4 +++
> drivers/gpu/trace/Makefile | 3 ++
> drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
> include/trace/events/gpu_mem.h | 57 +++++++++++++++++++++++++++++++
> 6 files changed, 80 insertions(+)
> create mode 100644 drivers/gpu/trace/Kconfig
> create mode 100644 drivers/gpu/trace/Makefile
> create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
> create mode 100644 include/trace/events/gpu_mem.h
>
> diff --git a/drivers/Kconfig b/drivers/Kconfig
> index 8befa53f43be..e0eda1a5c3f9 100644
> --- a/drivers/Kconfig
> +++ b/drivers/Kconfig
> @@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"
>
> source "drivers/android/Kconfig"
>
> +source "drivers/gpu/trace/Kconfig"
> +
> source "drivers/nvdimm/Kconfig"
>
> source "drivers/dax/Kconfig"
> diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
> index f17d01f076c7..835c88318cec 100644
> --- a/drivers/gpu/Makefile
> +++ b/drivers/gpu/Makefile
> @@ -5,3 +5,4 @@
> obj-$(CONFIG_TEGRA_HOST1X) += host1x/
> obj-y += drm/ vga/
> obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
> +obj-$(CONFIG_TRACE_GPU_MEM) += trace/
> diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
> new file mode 100644
> index 000000000000..c24e9edd022e
> --- /dev/null
> +++ b/drivers/gpu/trace/Kconfig
> @@ -0,0 +1,4 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +
> +config TRACE_GPU_MEM
> + bool
> diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
> new file mode 100644
> index 000000000000..b70fbdc5847f
> --- /dev/null
> +++ b/drivers/gpu/trace/Makefile
> @@ -0,0 +1,3 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
> diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
> new file mode 100644
> index 000000000000..01e855897b6d
> --- /dev/null
> +++ b/drivers/gpu/trace/trace_gpu_mem.c
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * GPU memory trace points
> + *
> + * Copyright (C) 2020 Google, Inc.
> + */
> +
> +#include <linux/module.h>
> +
> +#define CREATE_TRACE_POINTS
> +#include <trace/events/gpu_mem.h>
> +
> +EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
> diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
> new file mode 100644
> index 000000000000..1897822a9150
> --- /dev/null
> +++ b/include/trace/events/gpu_mem.h
> @@ -0,0 +1,57 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * GPU memory trace points
> + *
> + * Copyright (C) 2020 Google, Inc.
> + */
> +
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM gpu_mem
> +
> +#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_GPU_MEM_H
> +
> +#include <linux/tracepoint.h>
> +
> +/*
> + * The gpu_memory_total event indicates that there's an update to either the
> + * global or process total gpu memory counters.
> + *
> + * This event should be emitted whenever the kernel device driver allocates,
> + * frees, imports, unimports memory in the GPU addressable space.
> + *
> + * @gpu_id: This is the gpu id.
> + *
> + * @pid: Put 0 for global total, while positive pid for process total.
> + *
> + * @size: Virtual size of the allocation in bytes.
> + *
> + */
> +TRACE_EVENT(gpu_mem_total,
> +
> + TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
> +
> + TP_ARGS(gpu_id, pid, size),
> +
> + TP_STRUCT__entry(
> + __field(uint32_t, gpu_id)
> + __field(uint32_t, pid)
> + __field(uint64_t, size)
> + ),
> +
> + TP_fast_assign(
> + __entry->gpu_id = gpu_id;
> + __entry->pid = pid;
> + __entry->size = size;
> + ),
> +
> + TP_printk("gpu_id=%u pid=%u size=%llu",
> + __entry->gpu_id,
> + __entry->pid,
> + __entry->size)
> +);
> +
> +#endif /* _TRACE_GPU_MEM_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
> --
> 2.25.0.225.g125e21ebc7-goog
>

2020-02-13 03:29:51

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v2] Add gpu memory tracepoints

On Wed, 12 Feb 2020 18:24:32 -0800
Yiwei Zhang <[email protected]> wrote:

> Hi Steven,
>
> I'm not sure if my use of "in-reply-to" is correct. I can only find
> the Message-Id of my original email from cmdline. but looks like the
> diff shows up right.

You mean this one?

https://lore.kernel.org/lkml/[email protected]/

Looks fine, except I think you meant to make this v3. Also you may have
wanted to add a topic, "gpu/trace: "? to the subject.

-- Steve

2020-02-13 04:23:52

by Yiwei Zhang

[permalink] [raw]
Subject: [PATCH v3] gpu/trace: add gpu memory tracepoints

From: Yiwei Zhang <[email protected]>

This change adds the below gpu memory tracepoint:
gpu_mem/gpu_mem_total: track global or process gpu memory total counters

Signed-off-by: Yiwei Zhang <[email protected]>
---
drivers/Kconfig | 2 ++
drivers/gpu/Makefile | 1 +
drivers/gpu/trace/Kconfig | 4 +++
drivers/gpu/trace/Makefile | 3 ++
drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
include/trace/events/gpu_mem.h | 57 +++++++++++++++++++++++++++++++
6 files changed, 80 insertions(+)
create mode 100644 drivers/gpu/trace/Kconfig
create mode 100644 drivers/gpu/trace/Makefile
create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
create mode 100644 include/trace/events/gpu_mem.h

diff --git a/drivers/Kconfig b/drivers/Kconfig
index 8befa53f43be..e0eda1a5c3f9 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"

source "drivers/android/Kconfig"

+source "drivers/gpu/trace/Kconfig"
+
source "drivers/nvdimm/Kconfig"

source "drivers/dax/Kconfig"
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
index f17d01f076c7..835c88318cec 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -5,3 +5,4 @@
obj-$(CONFIG_TEGRA_HOST1X) += host1x/
obj-y += drm/ vga/
obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
+obj-$(CONFIG_TRACE_GPU_MEM) += trace/
diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
new file mode 100644
index 000000000000..c24e9edd022e
--- /dev/null
+++ b/drivers/gpu/trace/Kconfig
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config TRACE_GPU_MEM
+ bool
diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
new file mode 100644
index 000000000000..b70fbdc5847f
--- /dev/null
+++ b/drivers/gpu/trace/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
new file mode 100644
index 000000000000..01e855897b6d
--- /dev/null
+++ b/drivers/gpu/trace/trace_gpu_mem.c
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#include <linux/module.h>
+
+#define CREATE_TRACE_POINTS
+#include <trace/events/gpu_mem.h>
+
+EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
new file mode 100644
index 000000000000..1897822a9150
--- /dev/null
+++ b/include/trace/events/gpu_mem.h
@@ -0,0 +1,57 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM gpu_mem
+
+#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_GPU_MEM_H
+
+#include <linux/tracepoint.h>
+
+/*
+ * The gpu_memory_total event indicates that there's an update to either the
+ * global or process total gpu memory counters.
+ *
+ * This event should be emitted whenever the kernel device driver allocates,
+ * frees, imports, unimports memory in the GPU addressable space.
+ *
+ * @gpu_id: This is the gpu id.
+ *
+ * @pid: Put 0 for global total, while positive pid for process total.
+ *
+ * @size: Virtual size of the allocation in bytes.
+ *
+ */
+TRACE_EVENT(gpu_mem_total,
+
+ TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
+
+ TP_ARGS(gpu_id, pid, size),
+
+ TP_STRUCT__entry(
+ __field(uint32_t, gpu_id)
+ __field(uint32_t, pid)
+ __field(uint64_t, size)
+ ),
+
+ TP_fast_assign(
+ __entry->gpu_id = gpu_id;
+ __entry->pid = pid;
+ __entry->size = size;
+ ),
+
+ TP_printk("gpu_id=%u pid=%u size=%llu",
+ __entry->gpu_id,
+ __entry->pid,
+ __entry->size)
+);
+
+#endif /* _TRACE_GPU_MEM_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
--
2.25.0.225.g125e21ebc7-goog

2020-02-13 04:29:02

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v3] gpu/trace: add gpu memory tracepoints

Hi Steven,

Just update a v3 here with the gpu/trace: included in the subject
line. You might have received a spam v3 previously, which I forgot to
include [email protected] for the confusion.

Best,
Yiwei

2020-02-13 14:06:03

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v3] gpu/trace: add gpu memory tracepoints


Hi Yiwei,

You left off a lot of people that you Cc'd for the previous versions.
You'll need at least Greg's acked-by on this, and perhaps even others
that own the gpu directory.

-- Steve


On Wed, 12 Feb 2020 20:23:31 -0800
[email protected] wrote:

> From: Yiwei Zhang <[email protected]>
>
> This change adds the below gpu memory tracepoint:
> gpu_mem/gpu_mem_total: track global or process gpu memory total counters
>
> Signed-off-by: Yiwei Zhang <[email protected]>
> ---
> drivers/Kconfig | 2 ++
> drivers/gpu/Makefile | 1 +
> drivers/gpu/trace/Kconfig | 4 +++
> drivers/gpu/trace/Makefile | 3 ++
> drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
> include/trace/events/gpu_mem.h | 57 +++++++++++++++++++++++++++++++
> 6 files changed, 80 insertions(+)
> create mode 100644 drivers/gpu/trace/Kconfig
> create mode 100644 drivers/gpu/trace/Makefile
> create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
> create mode 100644 include/trace/events/gpu_mem.h
>
> diff --git a/drivers/Kconfig b/drivers/Kconfig
> index 8befa53f43be..e0eda1a5c3f9 100644
> --- a/drivers/Kconfig
> +++ b/drivers/Kconfig
> @@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"
>
> source "drivers/android/Kconfig"
>
> +source "drivers/gpu/trace/Kconfig"
> +
> source "drivers/nvdimm/Kconfig"
>
> source "drivers/dax/Kconfig"
> diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
> index f17d01f076c7..835c88318cec 100644
> --- a/drivers/gpu/Makefile
> +++ b/drivers/gpu/Makefile
> @@ -5,3 +5,4 @@
> obj-$(CONFIG_TEGRA_HOST1X) += host1x/
> obj-y += drm/ vga/
> obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
> +obj-$(CONFIG_TRACE_GPU_MEM) += trace/
> diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
> new file mode 100644
> index 000000000000..c24e9edd022e
> --- /dev/null
> +++ b/drivers/gpu/trace/Kconfig
> @@ -0,0 +1,4 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +
> +config TRACE_GPU_MEM
> + bool
> diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
> new file mode 100644
> index 000000000000..b70fbdc5847f
> --- /dev/null
> +++ b/drivers/gpu/trace/Makefile
> @@ -0,0 +1,3 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
> diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
> new file mode 100644
> index 000000000000..01e855897b6d
> --- /dev/null
> +++ b/drivers/gpu/trace/trace_gpu_mem.c
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * GPU memory trace points
> + *
> + * Copyright (C) 2020 Google, Inc.
> + */
> +
> +#include <linux/module.h>
> +
> +#define CREATE_TRACE_POINTS
> +#include <trace/events/gpu_mem.h>
> +
> +EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
> diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
> new file mode 100644
> index 000000000000..1897822a9150
> --- /dev/null
> +++ b/include/trace/events/gpu_mem.h
> @@ -0,0 +1,57 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * GPU memory trace points
> + *
> + * Copyright (C) 2020 Google, Inc.
> + */
> +
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM gpu_mem
> +
> +#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_GPU_MEM_H
> +
> +#include <linux/tracepoint.h>
> +
> +/*
> + * The gpu_memory_total event indicates that there's an update to either the
> + * global or process total gpu memory counters.
> + *
> + * This event should be emitted whenever the kernel device driver allocates,
> + * frees, imports, unimports memory in the GPU addressable space.
> + *
> + * @gpu_id: This is the gpu id.
> + *
> + * @pid: Put 0 for global total, while positive pid for process total.
> + *
> + * @size: Virtual size of the allocation in bytes.
> + *
> + */
> +TRACE_EVENT(gpu_mem_total,
> +
> + TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
> +
> + TP_ARGS(gpu_id, pid, size),
> +
> + TP_STRUCT__entry(
> + __field(uint32_t, gpu_id)
> + __field(uint32_t, pid)
> + __field(uint64_t, size)
> + ),
> +
> + TP_fast_assign(
> + __entry->gpu_id = gpu_id;
> + __entry->pid = pid;
> + __entry->size = size;
> + ),
> +
> + TP_printk("gpu_id=%u pid=%u size=%llu",
> + __entry->gpu_id,
> + __entry->pid,
> + __entry->size)
> +);
> +
> +#endif /* _TRACE_GPU_MEM_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>

2020-02-13 17:51:09

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v3] gpu/trace: add gpu memory tracepoints

Hi folks,

This [PATCH v3] just re-format the tracepoint definition and update
the subject line. Please take another look. Many thanks!

Best,
Yiwei

On Thu, Feb 13, 2020 at 6:03 AM Steven Rostedt <[email protected]> wrote:
>
>
> Hi Yiwei,
>
> You left off a lot of people that you Cc'd for the previous versions.
> You'll need at least Greg's acked-by on this, and perhaps even others
> that own the gpu directory.
>
> -- Steve
>
>
> On Wed, 12 Feb 2020 20:23:31 -0800
> [email protected] wrote:
>
> > From: Yiwei Zhang <[email protected]>
> >
> > This change adds the below gpu memory tracepoint:
> > gpu_mem/gpu_mem_total: track global or process gpu memory total counters
> >
> > Signed-off-by: Yiwei Zhang <[email protected]>
> > ---
> > drivers/Kconfig | 2 ++
> > drivers/gpu/Makefile | 1 +
> > drivers/gpu/trace/Kconfig | 4 +++
> > drivers/gpu/trace/Makefile | 3 ++
> > drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
> > include/trace/events/gpu_mem.h | 57 +++++++++++++++++++++++++++++++
> > 6 files changed, 80 insertions(+)
> > create mode 100644 drivers/gpu/trace/Kconfig
> > create mode 100644 drivers/gpu/trace/Makefile
> > create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
> > create mode 100644 include/trace/events/gpu_mem.h
> >
> > diff --git a/drivers/Kconfig b/drivers/Kconfig
> > index 8befa53f43be..e0eda1a5c3f9 100644
> > --- a/drivers/Kconfig
> > +++ b/drivers/Kconfig
> > @@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"
> >
> > source "drivers/android/Kconfig"
> >
> > +source "drivers/gpu/trace/Kconfig"
> > +
> > source "drivers/nvdimm/Kconfig"
> >
> > source "drivers/dax/Kconfig"
> > diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
> > index f17d01f076c7..835c88318cec 100644
> > --- a/drivers/gpu/Makefile
> > +++ b/drivers/gpu/Makefile
> > @@ -5,3 +5,4 @@
> > obj-$(CONFIG_TEGRA_HOST1X) += host1x/
> > obj-y += drm/ vga/
> > obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
> > +obj-$(CONFIG_TRACE_GPU_MEM) += trace/
> > diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
> > new file mode 100644
> > index 000000000000..c24e9edd022e
> > --- /dev/null
> > +++ b/drivers/gpu/trace/Kconfig
> > @@ -0,0 +1,4 @@
> > +# SPDX-License-Identifier: GPL-2.0-only
> > +
> > +config TRACE_GPU_MEM
> > + bool
> > diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
> > new file mode 100644
> > index 000000000000..b70fbdc5847f
> > --- /dev/null
> > +++ b/drivers/gpu/trace/Makefile
> > @@ -0,0 +1,3 @@
> > +# SPDX-License-Identifier: GPL-2.0
> > +
> > +obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
> > diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
> > new file mode 100644
> > index 000000000000..01e855897b6d
> > --- /dev/null
> > +++ b/drivers/gpu/trace/trace_gpu_mem.c
> > @@ -0,0 +1,13 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * GPU memory trace points
> > + *
> > + * Copyright (C) 2020 Google, Inc.
> > + */
> > +
> > +#include <linux/module.h>
> > +
> > +#define CREATE_TRACE_POINTS
> > +#include <trace/events/gpu_mem.h>
> > +
> > +EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
> > diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
> > new file mode 100644
> > index 000000000000..1897822a9150
> > --- /dev/null
> > +++ b/include/trace/events/gpu_mem.h
> > @@ -0,0 +1,57 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/*
> > + * GPU memory trace points
> > + *
> > + * Copyright (C) 2020 Google, Inc.
> > + */
> > +
> > +#undef TRACE_SYSTEM
> > +#define TRACE_SYSTEM gpu_mem
> > +
> > +#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
> > +#define _TRACE_GPU_MEM_H
> > +
> > +#include <linux/tracepoint.h>
> > +
> > +/*
> > + * The gpu_memory_total event indicates that there's an update to either the
> > + * global or process total gpu memory counters.
> > + *
> > + * This event should be emitted whenever the kernel device driver allocates,
> > + * frees, imports, unimports memory in the GPU addressable space.
> > + *
> > + * @gpu_id: This is the gpu id.
> > + *
> > + * @pid: Put 0 for global total, while positive pid for process total.
> > + *
> > + * @size: Virtual size of the allocation in bytes.
> > + *
> > + */
> > +TRACE_EVENT(gpu_mem_total,
> > +
> > + TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
> > +
> > + TP_ARGS(gpu_id, pid, size),
> > +
> > + TP_STRUCT__entry(
> > + __field(uint32_t, gpu_id)
> > + __field(uint32_t, pid)
> > + __field(uint64_t, size)
> > + ),
> > +
> > + TP_fast_assign(
> > + __entry->gpu_id = gpu_id;
> > + __entry->pid = pid;
> > + __entry->size = size;
> > + ),
> > +
> > + TP_printk("gpu_id=%u pid=%u size=%llu",
> > + __entry->gpu_id,
> > + __entry->pid,
> > + __entry->size)
> > +);
> > +
> > +#endif /* _TRACE_GPU_MEM_H */
> > +
> > +/* This part must be outside protection */
> > +#include <trace/define_trace.h>
>

2020-02-24 06:33:39

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v3] gpu/trace: add gpu memory tracepoints

Dear gpu and tracing owners,

It's been a while and this is just a gentle and friendly re-ping for
review of this small patch.

Many many thanks!
Yiwei

2020-02-24 16:39:43

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v3] gpu/trace: add gpu memory tracepoints

On Sun, 23 Feb 2020 22:31:11 -0800
Yiwei Zhang <[email protected]> wrote:

> Dear gpu and tracing owners,
>
> It's been a while and this is just a gentle and friendly re-ping for
> review of this small patch.

I guess the question is what tree should this go through. I usually
only take tracing infrastructure changes and leave topic specific
tracing for those that maintain the topics.

I'm fine with taking this through my tree if I get a bunch of
acked/reviewed by from other maintainers.

-- Steve

2020-03-01 00:54:45

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v3] gpu/trace: add gpu memory tracepoints

On Mon, Feb 24, 2020 at 8:38 AM Steven Rostedt <[email protected]> wrote:
>
> On Sun, 23 Feb 2020 22:31:11 -0800
> Yiwei Zhang <[email protected]> wrote:
>
> > Dear gpu and tracing owners,
> >
> > It's been a while and this is just a gentle and friendly re-ping for
> > review of this small patch.
>
> I guess the question is what tree should this go through. I usually
> only take tracing infrastructure changes and leave topic specific
> tracing for those that maintain the topics.
>
> I'm fine with taking this through my tree if I get a bunch of
> acked/reviewed by from other maintainers.
>
> -- Steve
>

Hi GPU directory owners/maintainers,

Given Steve's reply, could you guys help review and ack this tiny
patch? This is a friendly re-ping since it's been more than 2 weeks
without any response from gpu directory folks. The patchset v2 was
ack'ed by Greg(gregkh@), and this v3 patch only has format updates.
Please take another look. Many many thanks!

Best regards,
Yiwei

2020-03-02 23:51:08

by Yiwei Zhang

[permalink] [raw]
Subject: [PATCH] [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

From: Yiwei Zhang <[email protected]>

This change adds the below gpu memory tracepoint:
gpu_mem/gpu_mem_total: track global or proc gpu memory total usages

Per process tracking of total gpu memory usage in the gem layer is not
appropriate and hard to implement with trivial overhead. So for the gfx
device driver layer to track total gpu memory usage both globally and
per process in an easy and uniform way is to integrate the tracepoint in
this patch to the underlying varied implementations of gpu memory
tracking system from vendors.

Putting this tracepoint in the common trace events can not only help
wean the gfx drivers off of debugfs but also greatly help the downstream
Android gpu vendors because debugfs is to be deprecated in the upcoming
Android release. Then the gpu memory tracking of both Android kernel and
the upstream linux kernel can stay closely, which can benefit the whole
kernel eco-system in the long term.

Signed-off-by: Yiwei Zhang <[email protected]>
---
drivers/Kconfig | 2 ++
drivers/gpu/Makefile | 1 +
drivers/gpu/trace/Kconfig | 4 +++
drivers/gpu/trace/Makefile | 3 ++
drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
include/trace/events/gpu_mem.h | 57 +++++++++++++++++++++++++++++++
6 files changed, 80 insertions(+)
create mode 100644 drivers/gpu/trace/Kconfig
create mode 100644 drivers/gpu/trace/Makefile
create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
create mode 100644 include/trace/events/gpu_mem.h

diff --git a/drivers/Kconfig b/drivers/Kconfig
index 8befa53f43be..e0eda1a5c3f9 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"

source "drivers/android/Kconfig"

+source "drivers/gpu/trace/Kconfig"
+
source "drivers/nvdimm/Kconfig"

source "drivers/dax/Kconfig"
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
index f17d01f076c7..835c88318cec 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -5,3 +5,4 @@
obj-$(CONFIG_TEGRA_HOST1X) += host1x/
obj-y += drm/ vga/
obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
+obj-$(CONFIG_TRACE_GPU_MEM) += trace/
diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
new file mode 100644
index 000000000000..c24e9edd022e
--- /dev/null
+++ b/drivers/gpu/trace/Kconfig
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config TRACE_GPU_MEM
+ bool
diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
new file mode 100644
index 000000000000..b70fbdc5847f
--- /dev/null
+++ b/drivers/gpu/trace/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
new file mode 100644
index 000000000000..01e855897b6d
--- /dev/null
+++ b/drivers/gpu/trace/trace_gpu_mem.c
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#include <linux/module.h>
+
+#define CREATE_TRACE_POINTS
+#include <trace/events/gpu_mem.h>
+
+EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
new file mode 100644
index 000000000000..1897822a9150
--- /dev/null
+++ b/include/trace/events/gpu_mem.h
@@ -0,0 +1,57 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM gpu_mem
+
+#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_GPU_MEM_H
+
+#include <linux/tracepoint.h>
+
+/*
+ * The gpu_memory_total event indicates that there's an update to either the
+ * global or process total gpu memory counters.
+ *
+ * This event should be emitted whenever the kernel device driver allocates,
+ * frees, imports, unimports memory in the GPU addressable space.
+ *
+ * @gpu_id: This is the gpu id.
+ *
+ * @pid: Put 0 for global total, while positive pid for process total.
+ *
+ * @size: Virtual size of the allocation in bytes.
+ *
+ */
+TRACE_EVENT(gpu_mem_total,
+
+ TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
+
+ TP_ARGS(gpu_id, pid, size),
+
+ TP_STRUCT__entry(
+ __field(uint32_t, gpu_id)
+ __field(uint32_t, pid)
+ __field(uint64_t, size)
+ ),
+
+ TP_fast_assign(
+ __entry->gpu_id = gpu_id;
+ __entry->pid = pid;
+ __entry->size = size;
+ ),
+
+ TP_printk("gpu_id=%u pid=%u size=%llu",
+ __entry->gpu_id,
+ __entry->pid,
+ __entry->size)
+);
+
+#endif /* _TRACE_GPU_MEM_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
--
2.25.0.265.gbab2e86ba0-goog

2020-03-02 23:52:27

by Yiwei Zhang

[permalink] [raw]
Subject: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

From: Yiwei Zhang <[email protected]>

This change adds the below gpu memory tracepoint:
gpu_mem/gpu_mem_total: track global or proc gpu memory total usages

Per process tracking of total gpu memory usage in the gem layer is not
appropriate and hard to implement with trivial overhead. So for the gfx
device driver layer to track total gpu memory usage both globally and
per process in an easy and uniform way is to integrate the tracepoint in
this patch to the underlying varied implementations of gpu memory
tracking system from vendors.

Putting this tracepoint in the common trace events can not only help
wean the gfx drivers off of debugfs but also greatly help the downstream
Android gpu vendors because debugfs is to be deprecated in the upcoming
Android release. Then the gpu memory tracking of both Android kernel and
the upstream linux kernel can stay closely, which can benefit the whole
kernel eco-system in the long term.

Signed-off-by: Yiwei Zhang <[email protected]>
---
drivers/Kconfig | 2 ++
drivers/gpu/Makefile | 1 +
drivers/gpu/trace/Kconfig | 4 +++
drivers/gpu/trace/Makefile | 3 ++
drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
include/trace/events/gpu_mem.h | 57 +++++++++++++++++++++++++++++++
6 files changed, 80 insertions(+)
create mode 100644 drivers/gpu/trace/Kconfig
create mode 100644 drivers/gpu/trace/Makefile
create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
create mode 100644 include/trace/events/gpu_mem.h

diff --git a/drivers/Kconfig b/drivers/Kconfig
index 8befa53f43be..e0eda1a5c3f9 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"

source "drivers/android/Kconfig"

+source "drivers/gpu/trace/Kconfig"
+
source "drivers/nvdimm/Kconfig"

source "drivers/dax/Kconfig"
diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
index f17d01f076c7..835c88318cec 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -5,3 +5,4 @@
obj-$(CONFIG_TEGRA_HOST1X) += host1x/
obj-y += drm/ vga/
obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
+obj-$(CONFIG_TRACE_GPU_MEM) += trace/
diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
new file mode 100644
index 000000000000..c24e9edd022e
--- /dev/null
+++ b/drivers/gpu/trace/Kconfig
@@ -0,0 +1,4 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config TRACE_GPU_MEM
+ bool
diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
new file mode 100644
index 000000000000..b70fbdc5847f
--- /dev/null
+++ b/drivers/gpu/trace/Makefile
@@ -0,0 +1,3 @@
+# SPDX-License-Identifier: GPL-2.0
+
+obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
new file mode 100644
index 000000000000..01e855897b6d
--- /dev/null
+++ b/drivers/gpu/trace/trace_gpu_mem.c
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#include <linux/module.h>
+
+#define CREATE_TRACE_POINTS
+#include <trace/events/gpu_mem.h>
+
+EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
new file mode 100644
index 000000000000..1897822a9150
--- /dev/null
+++ b/include/trace/events/gpu_mem.h
@@ -0,0 +1,57 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * GPU memory trace points
+ *
+ * Copyright (C) 2020 Google, Inc.
+ */
+
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM gpu_mem
+
+#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_GPU_MEM_H
+
+#include <linux/tracepoint.h>
+
+/*
+ * The gpu_memory_total event indicates that there's an update to either the
+ * global or process total gpu memory counters.
+ *
+ * This event should be emitted whenever the kernel device driver allocates,
+ * frees, imports, unimports memory in the GPU addressable space.
+ *
+ * @gpu_id: This is the gpu id.
+ *
+ * @pid: Put 0 for global total, while positive pid for process total.
+ *
+ * @size: Virtual size of the allocation in bytes.
+ *
+ */
+TRACE_EVENT(gpu_mem_total,
+
+ TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
+
+ TP_ARGS(gpu_id, pid, size),
+
+ TP_STRUCT__entry(
+ __field(uint32_t, gpu_id)
+ __field(uint32_t, pid)
+ __field(uint64_t, size)
+ ),
+
+ TP_fast_assign(
+ __entry->gpu_id = gpu_id;
+ __entry->pid = pid;
+ __entry->size = size;
+ ),
+
+ TP_printk("gpu_id=%u pid=%u size=%llu",
+ __entry->gpu_id,
+ __entry->pid,
+ __entry->size)
+);
+
+#endif /* _TRACE_GPU_MEM_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
--
2.25.0.265.gbab2e86ba0-goog

2020-03-02 23:56:57

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH] [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

Sorry for the noise here, there's a duplicate "[PATCH]" in the subject
line. Please refer to this one instead:
https://lkml.org/lkml/2020/3/2/1181

2020-03-03 14:13:51

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint


Greg,

You acked this patch before, did you want to ack it again, and I'll take it
in my tree?

-- Steve

On Mon, 2 Mar 2020 15:50:44 -0800
[email protected] wrote:

> From: Yiwei Zhang <[email protected]>
>
> This change adds the below gpu memory tracepoint:
> gpu_mem/gpu_mem_total: track global or proc gpu memory total usages
>
> Per process tracking of total gpu memory usage in the gem layer is not
> appropriate and hard to implement with trivial overhead. So for the gfx
> device driver layer to track total gpu memory usage both globally and
> per process in an easy and uniform way is to integrate the tracepoint in
> this patch to the underlying varied implementations of gpu memory
> tracking system from vendors.
>
> Putting this tracepoint in the common trace events can not only help
> wean the gfx drivers off of debugfs but also greatly help the downstream
> Android gpu vendors because debugfs is to be deprecated in the upcoming
> Android release. Then the gpu memory tracking of both Android kernel and
> the upstream linux kernel can stay closely, which can benefit the whole
> kernel eco-system in the long term.
>
> Signed-off-by: Yiwei Zhang <[email protected]>
> ---
> drivers/Kconfig | 2 ++
> drivers/gpu/Makefile | 1 +
> drivers/gpu/trace/Kconfig | 4 +++
> drivers/gpu/trace/Makefile | 3 ++
> drivers/gpu/trace/trace_gpu_mem.c | 13 +++++++
> include/trace/events/gpu_mem.h | 57 +++++++++++++++++++++++++++++++
> 6 files changed, 80 insertions(+)
> create mode 100644 drivers/gpu/trace/Kconfig
> create mode 100644 drivers/gpu/trace/Makefile
> create mode 100644 drivers/gpu/trace/trace_gpu_mem.c
> create mode 100644 include/trace/events/gpu_mem.h
>
> diff --git a/drivers/Kconfig b/drivers/Kconfig
> index 8befa53f43be..e0eda1a5c3f9 100644
> --- a/drivers/Kconfig
> +++ b/drivers/Kconfig
> @@ -200,6 +200,8 @@ source "drivers/thunderbolt/Kconfig"
>
> source "drivers/android/Kconfig"
>
> +source "drivers/gpu/trace/Kconfig"
> +
> source "drivers/nvdimm/Kconfig"
>
> source "drivers/dax/Kconfig"
> diff --git a/drivers/gpu/Makefile b/drivers/gpu/Makefile
> index f17d01f076c7..835c88318cec 100644
> --- a/drivers/gpu/Makefile
> +++ b/drivers/gpu/Makefile
> @@ -5,3 +5,4 @@
> obj-$(CONFIG_TEGRA_HOST1X) += host1x/
> obj-y += drm/ vga/
> obj-$(CONFIG_IMX_IPUV3_CORE) += ipu-v3/
> +obj-$(CONFIG_TRACE_GPU_MEM) += trace/
> diff --git a/drivers/gpu/trace/Kconfig b/drivers/gpu/trace/Kconfig
> new file mode 100644
> index 000000000000..c24e9edd022e
> --- /dev/null
> +++ b/drivers/gpu/trace/Kconfig
> @@ -0,0 +1,4 @@
> +# SPDX-License-Identifier: GPL-2.0-only
> +
> +config TRACE_GPU_MEM
> + bool
> diff --git a/drivers/gpu/trace/Makefile b/drivers/gpu/trace/Makefile
> new file mode 100644
> index 000000000000..b70fbdc5847f
> --- /dev/null
> +++ b/drivers/gpu/trace/Makefile
> @@ -0,0 +1,3 @@
> +# SPDX-License-Identifier: GPL-2.0
> +
> +obj-$(CONFIG_TRACE_GPU_MEM) += trace_gpu_mem.o
> diff --git a/drivers/gpu/trace/trace_gpu_mem.c b/drivers/gpu/trace/trace_gpu_mem.c
> new file mode 100644
> index 000000000000..01e855897b6d
> --- /dev/null
> +++ b/drivers/gpu/trace/trace_gpu_mem.c
> @@ -0,0 +1,13 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * GPU memory trace points
> + *
> + * Copyright (C) 2020 Google, Inc.
> + */
> +
> +#include <linux/module.h>
> +
> +#define CREATE_TRACE_POINTS
> +#include <trace/events/gpu_mem.h>
> +
> +EXPORT_TRACEPOINT_SYMBOL(gpu_mem_total);
> diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
> new file mode 100644
> index 000000000000..1897822a9150
> --- /dev/null
> +++ b/include/trace/events/gpu_mem.h
> @@ -0,0 +1,57 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * GPU memory trace points
> + *
> + * Copyright (C) 2020 Google, Inc.
> + */
> +
> +#undef TRACE_SYSTEM
> +#define TRACE_SYSTEM gpu_mem
> +
> +#if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ)
> +#define _TRACE_GPU_MEM_H
> +
> +#include <linux/tracepoint.h>
> +
> +/*
> + * The gpu_memory_total event indicates that there's an update to either the
> + * global or process total gpu memory counters.
> + *
> + * This event should be emitted whenever the kernel device driver allocates,
> + * frees, imports, unimports memory in the GPU addressable space.
> + *
> + * @gpu_id: This is the gpu id.
> + *
> + * @pid: Put 0 for global total, while positive pid for process total.
> + *
> + * @size: Virtual size of the allocation in bytes.
> + *
> + */
> +TRACE_EVENT(gpu_mem_total,
> +
> + TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
> +
> + TP_ARGS(gpu_id, pid, size),
> +
> + TP_STRUCT__entry(
> + __field(uint32_t, gpu_id)
> + __field(uint32_t, pid)
> + __field(uint64_t, size)
> + ),
> +
> + TP_fast_assign(
> + __entry->gpu_id = gpu_id;
> + __entry->pid = pid;
> + __entry->size = size;
> + ),
> +
> + TP_printk("gpu_id=%u pid=%u size=%llu",
> + __entry->gpu_id,
> + __entry->pid,
> + __entry->size)
> +);
> +
> +#endif /* _TRACE_GPU_MEM_H */
> +
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>

2020-03-03 14:17:15

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

On Tue, Mar 03, 2020 at 09:07:03AM -0500, Steven Rostedt wrote:
>
> Greg,
>
> You acked this patch before, did you want to ack it again, and I'll take it
> in my tree?

Sure, but where did my ack go? What changed from previous versions???

Anyway, the patch seems sane enough to me:

Acked-by: Greg Kroah-Hartman <[email protected]>

2020-03-03 14:33:23

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

On Tue, 3 Mar 2020 15:15:05 +0100
Greg KH <[email protected]> wrote:

> On Tue, Mar 03, 2020 at 09:07:03AM -0500, Steven Rostedt wrote:
> >
> > Greg,
> >
> > You acked this patch before, did you want to ack it again, and I'll take it
> > in my tree?
>
> Sure, but where did my ack go? What changed from previous versions???
>
> Anyway, the patch seems sane enough to me:
>
> Acked-by: Greg Kroah-Hartman <[email protected]>

Your previous ack was was here:

https://lore.kernel.org/lkml/[email protected]/

And the patch changed since then (although, only cosmetically), so your ack
was removed. The diff between this patch and the patch you acked is this:

-- Steve

diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
index 3b632a2b5100..1897822a9150 100644
--- a/include/trace/events/gpu_mem.h
+++ b/include/trace/events/gpu_mem.h
@@ -28,34 +28,27 @@
*
*/
TRACE_EVENT(gpu_mem_total,
- TP_PROTO(
- uint32_t gpu_id,
- uint32_t pid,
- uint64_t size
- ),
- TP_ARGS(
- gpu_id,
- pid,
- size
- ),
+
+ TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
+
+ TP_ARGS(gpu_id, pid, size),
+
TP_STRUCT__entry(
__field(uint32_t, gpu_id)
__field(uint32_t, pid)
__field(uint64_t, size)
),
+
TP_fast_assign(
__entry->gpu_id = gpu_id;
__entry->pid = pid;
__entry->size = size;
),
- TP_printk(
- "gpu_id=%u "
- "pid=%u "
- "size=%llu",
+
+ TP_printk("gpu_id=%u pid=%u size=%llu",
__entry->gpu_id,
__entry->pid,
- __entry->size
- )
+ __entry->size)
);

#endif /* _TRACE_GPU_MEM_H */

2020-03-03 15:48:21

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

On Tue, Mar 3, 2020 at 6:31 AM Steven Rostedt <[email protected]> wrote:
>
> On Tue, 3 Mar 2020 15:15:05 +0100
> Greg KH <[email protected]> wrote:
>
> > On Tue, Mar 03, 2020 at 09:07:03AM -0500, Steven Rostedt wrote:
> > >
> > > Greg,
> > >
> > > You acked this patch before, did you want to ack it again, and I'll take it
> > > in my tree?
> >
> > Sure, but where did my ack go? What changed from previous versions???
> >
> > Anyway, the patch seems sane enough to me:
> >
> > Acked-by: Greg Kroah-Hartman <[email protected]>
>
> Your previous ack was was here:
>
> https://lore.kernel.org/lkml/[email protected]/
>
> And the patch changed since then (although, only cosmetically), so your ack
> was removed. The diff between this patch and the patch you acked is this:
>
> -- Steve
>
> diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
> index 3b632a2b5100..1897822a9150 100644
> --- a/include/trace/events/gpu_mem.h
> +++ b/include/trace/events/gpu_mem.h
> @@ -28,34 +28,27 @@
> *
> */
> TRACE_EVENT(gpu_mem_total,
> - TP_PROTO(
> - uint32_t gpu_id,
> - uint32_t pid,
> - uint64_t size
> - ),
> - TP_ARGS(
> - gpu_id,
> - pid,
> - size
> - ),
> +
> + TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
> +
> + TP_ARGS(gpu_id, pid, size),
> +
> TP_STRUCT__entry(
> __field(uint32_t, gpu_id)
> __field(uint32_t, pid)
> __field(uint64_t, size)
> ),
> +
> TP_fast_assign(
> __entry->gpu_id = gpu_id;
> __entry->pid = pid;
> __entry->size = size;
> ),
> - TP_printk(
> - "gpu_id=%u "
> - "pid=%u "
> - "size=%llu",
> +
> + TP_printk("gpu_id=%u pid=%u size=%llu",
> __entry->gpu_id,
> __entry->pid,
> - __entry->size
> - )
> + __entry->size)
> );
>
> #endif /* _TRACE_GPU_MEM_H */

Hi Steve, since Greg has acknowledged again on the latest patch v4,
will you help merge from your tree?

Thanks for all the help!
Yiwei

2020-03-03 15:57:54

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

On Tue, 3 Mar 2020 07:15:46 -0800
Yiwei Zhang <[email protected]> wrote:


> Hi Steve, since Greg has acknowledged again on the latest patch v4,
> will you help merge from your tree?

Yes, I can add it to my queue for the next merge window.

-- Steve

2020-03-03 16:00:58

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

On Tue, Mar 03, 2020 at 09:31:04AM -0500, Steven Rostedt wrote:
> On Tue, 3 Mar 2020 15:15:05 +0100
> Greg KH <[email protected]> wrote:
>
> > On Tue, Mar 03, 2020 at 09:07:03AM -0500, Steven Rostedt wrote:
> > >
> > > Greg,
> > >
> > > You acked this patch before, did you want to ack it again, and I'll take it
> > > in my tree?
> >
> > Sure, but where did my ack go? What changed from previous versions???
> >
> > Anyway, the patch seems sane enough to me:
> >
> > Acked-by: Greg Kroah-Hartman <[email protected]>
>
> Your previous ack was was here:
>
> https://lore.kernel.org/lkml/[email protected]/

Yeah, I remember that.

> And the patch changed since then (although, only cosmetically), so your ack
> was removed. The diff between this patch and the patch you acked is this:
>
> -- Steve
>
> diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
> index 3b632a2b5100..1897822a9150 100644
> --- a/include/trace/events/gpu_mem.h
> +++ b/include/trace/events/gpu_mem.h
> @@ -28,34 +28,27 @@
> *
> */
> TRACE_EVENT(gpu_mem_total,
> - TP_PROTO(
> - uint32_t gpu_id,
> - uint32_t pid,
> - uint64_t size
> - ),
> - TP_ARGS(
> - gpu_id,
> - pid,
> - size
> - ),
> +
> + TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
> +
> + TP_ARGS(gpu_id, pid, size),
> +
> TP_STRUCT__entry(
> __field(uint32_t, gpu_id)
> __field(uint32_t, pid)
> __field(uint64_t, size)
> ),
> +
> TP_fast_assign(
> __entry->gpu_id = gpu_id;
> __entry->pid = pid;
> __entry->size = size;
> ),
> - TP_printk(
> - "gpu_id=%u "
> - "pid=%u "
> - "size=%llu",
> +
> + TP_printk("gpu_id=%u pid=%u size=%llu",
> __entry->gpu_id,
> __entry->pid,
> - __entry->size
> - )
> + __entry->size)
> );
>
> #endif /* _TRACE_GPU_MEM_H */

thanks for the diff, my ack still stands.

greg k-h

2020-03-13 23:03:57

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

On Tue, Mar 3, 2020 at 7:56 AM Greg KH <[email protected]> wrote:
>
> On Tue, Mar 03, 2020 at 09:31:04AM -0500, Steven Rostedt wrote:
> > On Tue, 3 Mar 2020 15:15:05 +0100
> > Greg KH <[email protected]> wrote:
> >
> > > On Tue, Mar 03, 2020 at 09:07:03AM -0500, Steven Rostedt wrote:
> > > >
> > > > Greg,
> > > >
> > > > You acked this patch before, did you want to ack it again, and I'll take it
> > > > in my tree?
> > >
> > > Sure, but where did my ack go? What changed from previous versions???
> > >
> > > Anyway, the patch seems sane enough to me:
> > >
> > > Acked-by: Greg Kroah-Hartman <[email protected]>
> >
> > Your previous ack was was here:
> >
> > https://lore.kernel.org/lkml/[email protected]/
>
> Yeah, I remember that.
>
> > And the patch changed since then (although, only cosmetically), so your ack
> > was removed. The diff between this patch and the patch you acked is this:
> >
> > -- Steve
> >
> > diff --git a/include/trace/events/gpu_mem.h b/include/trace/events/gpu_mem.h
> > index 3b632a2b5100..1897822a9150 100644
> > --- a/include/trace/events/gpu_mem.h
> > +++ b/include/trace/events/gpu_mem.h
> > @@ -28,34 +28,27 @@
> > *
> > */
> > TRACE_EVENT(gpu_mem_total,
> > - TP_PROTO(
> > - uint32_t gpu_id,
> > - uint32_t pid,
> > - uint64_t size
> > - ),
> > - TP_ARGS(
> > - gpu_id,
> > - pid,
> > - size
> > - ),
> > +
> > + TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size),
> > +
> > + TP_ARGS(gpu_id, pid, size),
> > +
> > TP_STRUCT__entry(
> > __field(uint32_t, gpu_id)
> > __field(uint32_t, pid)
> > __field(uint64_t, size)
> > ),
> > +
> > TP_fast_assign(
> > __entry->gpu_id = gpu_id;
> > __entry->pid = pid;
> > __entry->size = size;
> > ),
> > - TP_printk(
> > - "gpu_id=%u "
> > - "pid=%u "
> > - "size=%llu",
> > +
> > + TP_printk("gpu_id=%u pid=%u size=%llu",
> > __entry->gpu_id,
> > __entry->pid,
> > - __entry->size
> > - )
> > + __entry->size)
> > );
> >
> > #endif /* _TRACE_GPU_MEM_H */
>
> thanks for the diff, my ack still stands.
>
> greg k-h

Hi guys, thanks for all the help throughout this. After struggling a
while, I failed to figure out when the next merge window is. Could you
help point me to the release calendar or something? Thanks again!

Best,
Yiwei

2020-03-16 18:06:37

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

On Fri, 13 Mar 2020 15:59:37 -0700
Yiwei Zhang <[email protected]> wrote:

> Hi guys, thanks for all the help throughout this. After struggling a
> while, I failed to figure out when the next merge window is. Could you
> help point me to the release calendar or something? Thanks again!

I have this queued in my local tree. I'm currently having some issues with
my testing (there appears to be an unrelated bug to my code keeping it from
passing). But you should see this patch fly by when I add it to my
linux-next queue.

-- Steve

2020-03-16 19:29:00

by Yiwei Zhang

[permalink] [raw]
Subject: Re: [PATCH v4] gpu/trace: add a gpu total memory usage tracepoint

On Mon, Mar 16, 2020 at 11:05 AM Steven Rostedt <[email protected]> wrote:
>
> On Fri, 13 Mar 2020 15:59:37 -0700
> Yiwei Zhang <[email protected]> wrote:
>
> > Hi guys, thanks for all the help throughout this. After struggling a
> > while, I failed to figure out when the next merge window is. Could you
> > help point me to the release calendar or something? Thanks again!
>
> I have this queued in my local tree. I'm currently having some issues with
> my testing (there appears to be an unrelated bug to my code keeping it from
> passing). But you should see this patch fly by when I add it to my
> linux-next queue.
>
> -- Steve

Got it. Awesome, thanks Steve!