[PATCH v1] perf lock: Provide a host_env for session new

Ian Rogers posted 1 patch 2 weeks, 5 days ago
tools/perf/builtin-lock.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
[PATCH v1] perf lock: Provide a host_env for session new
Posted by Ian Rogers 2 weeks, 5 days ago
When "perf lock con" is run in a live mode, with no data file, a host
environment must be provided. Testing missed this as a failing assert
was creating the 1 line of expected stderr output.

Signed-off-by: Ian Rogers <irogers@google.com>
---
Please consider this patch for v6.17 fixes.
---
 tools/perf/builtin-lock.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
index fd49703021fd..078634461df2 100644
--- a/tools/perf/builtin-lock.c
+++ b/tools/perf/builtin-lock.c
@@ -2009,6 +2009,7 @@ static int __cmd_contention(int argc, const char **argv)
 		.owner = show_lock_owner,
 		.cgroups = RB_ROOT,
 	};
+	struct perf_env host_env;
 
 	lockhash_table = calloc(LOCKHASH_SIZE, sizeof(*lockhash_table));
 	if (!lockhash_table)
@@ -2024,7 +2025,10 @@ static int __cmd_contention(int argc, const char **argv)
 	eops.mmap		 = perf_event__process_mmap;
 	eops.tracing_data	 = perf_event__process_tracing_data;
 
-	session = perf_session__new(use_bpf ? NULL : &data, &eops);
+	perf_env__init(&host_env);
+	session = __perf_session__new(use_bpf ? NULL : &data, &eops,
+				/*trace_event_repipe=*/false, &host_env);
+
 	if (IS_ERR(session)) {
 		pr_err("Initializing perf session failed\n");
 		err = PTR_ERR(session);
@@ -2142,6 +2146,7 @@ static int __cmd_contention(int argc, const char **argv)
 	evlist__delete(con.evlist);
 	lock_contention_finish(&con);
 	perf_session__delete(session);
+	perf_env__exit(&host_env);
 	zfree(&lockhash_table);
 	return err;
 }
-- 
2.51.0.384.g4c02a37b29-goog
Re: [PATCH v1] perf lock: Provide a host_env for session new
Posted by Namhyung Kim 2 weeks, 5 days ago
On Fri, Sep 12, 2025 at 05:01:29PM -0700, Ian Rogers wrote:
> When "perf lock con" is run in a live mode, with no data file, a host
> environment must be provided. Testing missed this as a failing assert
> was creating the 1 line of expected stderr output.
> 
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> Please consider this patch for v6.17 fixes.

Yep, I'll queue it to perf-tools tree.

Thanks,
Namhyung

> ---
>  tools/perf/builtin-lock.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
> index fd49703021fd..078634461df2 100644
> --- a/tools/perf/builtin-lock.c
> +++ b/tools/perf/builtin-lock.c
> @@ -2009,6 +2009,7 @@ static int __cmd_contention(int argc, const char **argv)
>  		.owner = show_lock_owner,
>  		.cgroups = RB_ROOT,
>  	};
> +	struct perf_env host_env;
>  
>  	lockhash_table = calloc(LOCKHASH_SIZE, sizeof(*lockhash_table));
>  	if (!lockhash_table)
> @@ -2024,7 +2025,10 @@ static int __cmd_contention(int argc, const char **argv)
>  	eops.mmap		 = perf_event__process_mmap;
>  	eops.tracing_data	 = perf_event__process_tracing_data;
>  
> -	session = perf_session__new(use_bpf ? NULL : &data, &eops);
> +	perf_env__init(&host_env);
> +	session = __perf_session__new(use_bpf ? NULL : &data, &eops,
> +				/*trace_event_repipe=*/false, &host_env);
> +
>  	if (IS_ERR(session)) {
>  		pr_err("Initializing perf session failed\n");
>  		err = PTR_ERR(session);
> @@ -2142,6 +2146,7 @@ static int __cmd_contention(int argc, const char **argv)
>  	evlist__delete(con.evlist);
>  	lock_contention_finish(&con);
>  	perf_session__delete(session);
> +	perf_env__exit(&host_env);
>  	zfree(&lockhash_table);
>  	return err;
>  }
> -- 
> 2.51.0.384.g4c02a37b29-goog
>