]> git.itanic.dy.fi Git - linux-stable/commitdiff
perf annotate: Move max_coverage from 'struct annotation' to 'struct annotated_branch'
authorNamhyung Kim <namhyung@kernel.org>
Fri, 3 Nov 2023 19:19:05 +0000 (12:19 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 9 Nov 2023 16:49:33 +0000 (13:49 -0300)
The max_coverage field is only used when branch stack info is available
so it'd be natural to move to 'struct annotated_branch'.

Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: https://lore.kernel.org/r/20231103191907.54531-4-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-annotate.c
tools/perf/util/annotate.c
tools/perf/util/annotate.h
tools/perf/util/block-range.c

index aeeb801f1ed7b15f1118de904d4366feb7ed3a97..a9129b51d51180de45abeb6d7e857397949f9db9 100644 (file)
@@ -94,6 +94,7 @@ static void process_basic_block(struct addr_map_symbol *start,
        struct annotation *notes = sym ? symbol__annotation(sym) : NULL;
        struct block_range_iter iter;
        struct block_range *entry;
+       struct annotated_branch *branch;
 
        /*
         * Sanity; NULL isn't executable and the CPU cannot execute backwards
@@ -105,6 +106,8 @@ static void process_basic_block(struct addr_map_symbol *start,
        if (!block_range_iter__valid(&iter))
                return;
 
+       branch = annotation__get_branch(notes);
+
        /*
         * First block in range is a branch target.
         */
@@ -118,8 +121,8 @@ static void process_basic_block(struct addr_map_symbol *start,
                entry->coverage++;
                entry->sym = sym;
 
-               if (notes)
-                       notes->max_coverage = max(notes->max_coverage, entry->coverage);
+               if (branch)
+                       branch->max_coverage = max(branch->max_coverage, entry->coverage);
 
        } while (block_range_iter__next(&iter));
 
index 4e40c94c85d10697b426d69ad2b0824f486b9068..077a297f4dadc8d63def9fc8af3cfb09a7775df5 100644 (file)
@@ -946,7 +946,7 @@ static int __symbol__inc_addr_samples(struct map_symbol *ms,
        return 0;
 }
 
-static struct annotated_branch *annotation__get_branch(struct annotation *notes)
+struct annotated_branch *annotation__get_branch(struct annotation *notes)
 {
        if (notes == NULL)
                return NULL;
index 508b93d3dcde9d28f5d99b503162dfd1d57d84e3..8497130989538f09c5e853143ba17d3b40a7c420 100644 (file)
@@ -280,10 +280,10 @@ struct annotated_branch {
        unsigned int            total_insn;
        unsigned int            cover_insn;
        struct cyc_hist         *cycles_hist;
+       u64                     max_coverage;
 };
 
 struct LOCKABLE annotation {
-       u64                     max_coverage;
        u64                     start;
        struct annotation_options *options;
        struct annotation_line  **offsets;
@@ -355,6 +355,8 @@ static inline struct annotation *symbol__annotation(struct symbol *sym)
 int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample,
                                 struct evsel *evsel);
 
+struct annotated_branch *annotation__get_branch(struct annotation *notes);
+
 int addr_map_symbol__account_cycles(struct addr_map_symbol *ams,
                                    struct addr_map_symbol *start,
                                    unsigned cycles);
index 680e92774d0cde6171fddcc46a992af02766615a..15c42196c24c8230779b04c1ddd55e1d473deade 100644 (file)
@@ -311,6 +311,7 @@ struct block_range_iter block_range__create(u64 start, u64 end)
 double block_range__coverage(struct block_range *br)
 {
        struct symbol *sym;
+       struct annotated_branch *branch;
 
        if (!br) {
                if (block_ranges.blocks)
@@ -323,5 +324,9 @@ double block_range__coverage(struct block_range *br)
        if (!sym)
                return -1;
 
-       return (double)br->coverage / symbol__annotation(sym)->max_coverage;
+       branch = symbol__annotation(sym)->branch;
+       if (!branch)
+               return -1;
+
+       return (double)br->coverage / branch->max_coverage;
 }