All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Tengda Wu <wutengda@huaweicloud.com>
Cc: james.clark@linaro.org, xueshuai@linux.alibaba.com,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	leo.yan@linux.dev, Li Huafei <lihuafei1@huawei.com>,
	Ian Rogers <irogers@google.com>,
	Kim Phillips <kim.phillips@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Ingo Molnar <mingo@redhat.com>, Bill Wendling <morbo@google.com>,
	Nick Desaulniers <nick.desaulniers+lkml@gmail.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Zecheng Li <zli94@ncsu.edu>,
	linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	llvm@lists.linux.dev
Subject: Re: [PATCH v7 00/15] perf annotate arm64: Support instruction tracking for data type profiling
Date: Thu, 15 Oct 2026 16:11:33 -0700	[thread overview]
Message-ID: <atFdpZG-b2JPS1St@google.com> (raw)
In-Reply-To: <cover.1791629326.git.wutengda@huaweicloud.com>

Hello,

On Tue, Oct 13, 2026 at 01:27:58PM +0000, Tengda Wu wrote:
> This series adds arm64 support to perf's data type profiling by
> implementing instruction tracking for the arm64 architecture.
> 
> Patches 01-11 of v6 have already been merged. This version only
> contains the remaining instruction tracking part, renumbered from 01.
> 
> The main changes since v6 include:
> v6: https://lore.kernel.org/all/cover.1789521520.git.wutengda@huaweicloud.com/
> 
>   * Rebase on the latest tree, since flex array support patches have been
>     merged recently.
>   * Invalidate lifetime in propagate_load_reg_state(). (Sashiko)
>   * Remove the has_reg_type() guard in update_store_insn_state() to avoid
>     skipping the stack state invalidation logic. (Sashiko)
>   * Fix the issue where TSR_KIND_PERCPU_BASE fails to retry as expected. (Sashiko)
> 
> Patch organization
> ==================
> 
>   Patches 1-3:   Shared infrastructure. Extract invalidate_reg_state() as
>                  a common helper, add the arch_get_reg_offset() helper for
>                  computing operand base offsets, and wire up the arm64
>                  entry points (arch_supports_insn_tracking(),
>                  init_type_state(), and update_insn_state_arm64()).
> 
>   Patches 4-6:   Core instruction tracking for arm64: function return
>                  types after calls, load instructions (ldr/ldp and their
>                  addressing modes), and store instructions (str/stp).
> 
>   Patches 7-9:   Shared data structure improvements and an x86 fix.
>                  Expand type_state_reg.imm_value to u64 so 64-bit
>                  addresses can be tracked, preserve imm_value for stack
>                  variables, and delete stale stack state on store of an
>                  untracked register on x86.
> 
>   Patches 10-15: Remaining arm64 patterns: stack variable tracking,
>                  'mov' (register and immediate forms), 'add' member
>                  address calculation, 'adrp' global variable tracking,
>                  per-cpu variable access, and 'mrs sp_el0' to resolve the
>                  'current' pointer.
> 
> Each patch's type profiling results are as follows:
> 
> Patch | Feature                    | no_sym | no_var | no_typeinfo | bad_offset | insn_track | ok(%)
> ------+----------------------------+--------+--------+-------------+------------+------------+------
> base  | baseline                   | 6      | 493    | -           | -          | -          | 56.2%
> 0002  | enable insn tracking       | 6      | 42     | 437         | 2          | 12         | 57.2%
> 0005  | support 'load' insn        | 6      | 42     | 398         | 1          | 52         | 60.7%
> 0006  | support 'store' insn       | 6      | 42     | 398         | 1          | 52         | 60.7%
> 0010  | support stack variable     | 6      | 42     | 391         | 1          | 59         | 61.3%
> 0011  | support 'mov' insn         | 6      | 42     | 372         | 3          | 76         | 62.8%
> 0012  | support 'add' insn         | 6      | 42     | 318         | 7          | 126        | 67.2%
> 0013  | support 'adrp' insn        | 6      | 42     | 238         | 8          | 205        | 74.2%
> 0014  | support per-cpu variable   | 6      | 42     | 233         | 8          | 210        | 74.6%
> 0015  | support 'mrs' insn         | 6      | 42     | 230         | 8          | 213        | 74.9%
> 
> Testing
> =======
> 
> Tested on arm64 (all passed):
> 
>   # perf test -v "perf data type profiling tests"
>   81: perf data type profiling tests                                                                  : Ok
> 
>   === Test Summary ===
>   Passed main tests : 1
>   Passed subtests   : 0
>   Skipped tests     : 0
>   Failed tests      : 0
> 
> Tested on x86. The profiling results show no change before/after applying
> this patch series:
> 
>   before : total 880, ok 711 (80.8%), bad 169 (19.2%)
>   after  : total 880, ok 711 (80.8%), bad 169 (19.2%)
> 
> Changelog
> =========
> v6 -> v7:
>   - v6: https://lore.kernel.org/all/cover.1789521520.git.wutengda@huaweicloud.com/
>   - Invalidate lifetime in propagate_load_reg_state().
>   - Remove the has_reg_type() guard in update_store_insn_state().
>   - Fix the issue where TSR_KIND_PERCPU_BASE fails to retry as expected.
> 
> Please let me know if you have any feedback.

Thanks a lot for your work!  Assuming you'll fix the issues from Sashiko
in the next version, you can add my:

Reviewed-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung
 

> Tengda Wu (15):
>   perf annotate-data: Extract invalidate_reg_state() as a common helper
>   perf annotate-arm64: Enable instruction tracking support
>   perf annotate-data: Add arch_get_reg_offset helper
>   perf annotate-arm64: Track return type after call instructions
>   perf annotate-arm64: Support load instruction tracking
>   perf annotate-arm64: Support store instruction tracking
>   perf annotate-data: Expand type_state_reg imm_value to u64
>   perf annotate-data: Track imm_value for stack variables
>   perf annotate-x86: Delete stale stack state on store of untracked
>     register
>   perf annotate-arm64: Support stack variable tracking
>   perf annotate-arm64: Support 'mov' instruction tracking
>   perf annotate-arm64: Support 'add' instruction tracking
>   perf annotate-arm64: Support 'adrp' instruction to track global
>     variables
>   perf annotate-arm64: Support per-cpu variable access tracking
>   perf annotate-arm64: Support 'mrs' instruction to track 'current'
>     pointer
> 
>  .../perf/util/annotate-arch/annotate-arm64.c  | 750 ++++++++++++++++++
>  tools/perf/util/annotate-arch/annotate-x86.c  |  38 +-
>  tools/perf/util/annotate-data.c               | 209 ++++-
>  tools/perf/util/annotate-data.h               |  14 +-
>  4 files changed, 963 insertions(+), 48 deletions(-)
> 
> 
> base-commit: aac26bee2287c88af5be5a5ff96d783b19a28790
> -- 
> 2.34.1
> 

  parent reply	other threads:[~2026-10-15 23:11 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-13 13:27 [PATCH v7 00/15] perf annotate arm64: Support instruction tracking for data type profiling Tengda Wu
2026-10-13 13:27 ` [PATCH v7 01/15] perf annotate-data: Extract invalidate_reg_state() as a common helper Tengda Wu
2026-10-13 13:34   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 02/15] perf annotate-arm64: Enable instruction tracking support Tengda Wu
2026-10-13 13:38   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 03/15] perf annotate-data: Add arch_get_reg_offset helper Tengda Wu
2026-10-13 13:38   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 04/15] perf annotate-arm64: Track return type after call instructions Tengda Wu
2026-10-13 13:36   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 05/15] perf annotate-arm64: Support load instruction tracking Tengda Wu
2026-10-13 13:38   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 06/15] perf annotate-arm64: Support store " Tengda Wu
2026-10-13 13:36   ` sashiko-bot
2026-10-14  8:43     ` Tengda Wu
2026-10-15 23:02   ` Namhyung Kim
2026-10-16  1:14     ` Tengda Wu
2026-10-13 13:28 ` [PATCH v7 07/15] perf annotate-data: Expand type_state_reg imm_value to u64 Tengda Wu
2026-10-13 13:45   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 08/15] perf annotate-data: Track imm_value for stack variables Tengda Wu
2026-10-13 13:47   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 09/15] perf annotate-x86: Delete stale stack state on store of untracked register Tengda Wu
2026-10-13 13:44   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 10/15] perf annotate-arm64: Support stack variable tracking Tengda Wu
2026-10-13 13:44   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 11/15] perf annotate-arm64: Support 'mov' instruction tracking Tengda Wu
2026-10-13 13:45   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 12/15] perf annotate-arm64: Support 'add' " Tengda Wu
2026-10-13 13:47   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 13/15] perf annotate-arm64: Support 'adrp' instruction to track global variables Tengda Wu
2026-10-13 13:57   ` sashiko-bot
2026-10-14  8:49     ` Tengda Wu
2026-10-13 13:28 ` [PATCH v7 14/15] perf annotate-arm64: Support per-cpu variable access tracking Tengda Wu
2026-10-13 13:49   ` sashiko-bot
2026-10-13 13:28 ` [PATCH v7 15/15] perf annotate-arm64: Support 'mrs' instruction to track 'current' pointer Tengda Wu
2026-10-13 14:03   ` sashiko-bot
2026-10-14  8:50     ` Tengda Wu
2026-10-15 23:11 ` Namhyung Kim [this message]
2026-10-16  1:18   ` [PATCH v7 00/15] perf annotate arm64: Support instruction tracking for data type profiling Tengda Wu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=atFdpZG-b2JPS1St@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=kim.phillips@arm.com \
    --cc=leo.yan@linux.dev \
    --cc=lihuafei1@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=morbo@google.com \
    --cc=nick.desaulniers+lkml@gmail.com \
    --cc=peterz@infradead.org \
    --cc=wutengda@huaweicloud.com \
    --cc=xueshuai@linux.alibaba.com \
    --cc=zli94@ncsu.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.