perf: cs-etm: Improve missing sink warning message

Message ID 20230123161114.261255-1-james.clark@arm.com
State New
Headers
Series perf: cs-etm: Improve missing sink warning message |

Commit Message

James Clark Jan. 23, 2023, 4:11 p.m. UTC
  Make the sink error message more similar to the event error message that
reminds about missing kernel support. The available sinks are also
determined by the hardware so mention that too.

Also, usually it's not necessary to specify the sink, so add that as a
hint.

Now the error for a made up sink looks like this:

  $ perf record -e cs_etm/@abc/
  Couldn't find sink "abc" on event cs_etm/@abc/.
  Missing kernel or device support? Errno: 2 (No such file or directory)

  Hint: An appropriate sink will picked automatically if none is specified.

Signed-off-by: James Clark <james.clark@arm.com>
---
 tools/perf/arch/arm/util/cs-etm.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)


base-commit: 5670ebf54bd26482f57a094c53bdc562c106e0a9
  

Comments

Suzuki K Poulose Jan. 23, 2023, 6:02 p.m. UTC | #1
On 23/01/2023 16:11, James Clark wrote:
> Make the sink error message more similar to the event error message that
> reminds about missing kernel support. The available sinks are also
> determined by the hardware so mention that too.
> 
> Also, usually it's not necessary to specify the sink, so add that as a
> hint.
> 
> Now the error for a made up sink looks like this:
> 
>    $ perf record -e cs_etm/@abc/
>    Couldn't find sink "abc" on event cs_etm/@abc/.
>    Missing kernel or device support? Errno: 2 (No such file or directory)
> 
>    Hint: An appropriate sink will picked automatically if none is specified.
> 
> Signed-off-by: James Clark <james.clark@arm.com>
> ---
>   tools/perf/arch/arm/util/cs-etm.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
> index 481e170cd3f1..c6195a7a3cbf 100644
> --- a/tools/perf/arch/arm/util/cs-etm.c
> +++ b/tools/perf/arch/arm/util/cs-etm.c
> @@ -283,7 +283,9 @@ static int cs_etm_set_sink_attr(struct perf_pmu *pmu,
>   
>   		ret = perf_pmu__scan_file(pmu, path, "%x", &hash);
>   		if (ret != 1) {
> -			pr_err("failed to set sink \"%s\" on event %s with %d (%s)\n",
> +			pr_err("Couldn't find sink \"%s\" on event %s\n"

Could this be tied to "errno == ENOENT" ?  Otherwise, this could be 
guiding the user to wrong direction.

> +			       "Missing kernel or device support? errno: %d (%s)\n\n"
> +			       "Hint: An appropriate sink will picked automatically if one isn't specified.\n",

minor nit: "... sink will *be* picked.." ?

Otherwise, looks good to me.

Suzuki

>   			       sink, evsel__name(evsel), errno,
>   			       str_error_r(errno, msg, sizeof(msg)));
>   			return ret;
> 
> base-commit: 5670ebf54bd26482f57a094c53bdc562c106e0a9
  

Patch

diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
index 481e170cd3f1..c6195a7a3cbf 100644
--- a/tools/perf/arch/arm/util/cs-etm.c
+++ b/tools/perf/arch/arm/util/cs-etm.c
@@ -283,7 +283,9 @@  static int cs_etm_set_sink_attr(struct perf_pmu *pmu,
 
 		ret = perf_pmu__scan_file(pmu, path, "%x", &hash);
 		if (ret != 1) {
-			pr_err("failed to set sink \"%s\" on event %s with %d (%s)\n",
+			pr_err("Couldn't find sink \"%s\" on event %s\n"
+			       "Missing kernel or device support? errno: %d (%s)\n\n"
+			       "Hint: An appropriate sink will picked automatically if one isn't specified.\n",
 			       sink, evsel__name(evsel), errno,
 			       str_error_r(errno, msg, sizeof(msg)));
 			return ret;