[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAP-5=fU-aJYKAcbFeFYcgMfpvt8oY4BTxEgczP_rvUAiJt+U-Q@mail.gmail.com>
Date: Tue, 3 Feb 2026 10:15:30 -0800
From: Ian Rogers <irogers@...gle.com>
To: Arnaldo Carvalho de Melo <acme@...nel.org>, Namhyung Kim <namhyung@...nel.org>,
Dmitry Dolgov <9erthalion6@...il.com>
Cc: linux-perf-users@...r.kernel.org,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [RFC PATCH v1] perf tests: Test annotate with data type profiling
and rust
On Tue, Feb 3, 2026 at 6:45 AM Arnaldo Carvalho de Melo <acme@...nel.org> wrote:
>
> On Sun, Feb 01, 2026 at 11:33:54AM +0100, Dmitry Dolgov wrote:
> > > On Fri, Jan 30, 2026 at 09:44:47AM +0100, Dmitry Dolgov wrote:
> > > > I'm not managing to reproduce your results, can you please elaborate
> > > > some more?
> > >
> > > That's most unexpected for me, the test output I see looks like this:
> > >
> > > : 54 for _ in 1..count {
> > > 0.00 : 5423b8: mov %ecx,0x7c(%rsp)
> > > 0.00 : 5423bc: mov %eax,0x80(%rsp)
> > > 0.00 : 5423c3: lea 0x7c(%rsp),%rdi
> > > 12.28 : 5423c8: call 541f00 <core::iter::range::<impl core::iter::traits::iterator::Iterator for core::ops::range::Range<A>>::next>
> > > 0.00 : 5423cd: mov %eax,0x20(%rsp)
> > > 10.21 : 5423d1: jmp 5423d3 <test_rs+0xb3>
> > > 0.00 : 5423d3: mov 0x20(%rsp),%eax
> > > 0.00 : 5423d7: mov %eax,%eax
> > > 0.00 : 5423d9: test $0x1,%rax
> > > 0.29 : 5423df: je 5423f6 <test_rs+0xd6>
> > > : 65 b.data1 += 1;
> > > 13.69 : 5423e1: mov 0x48(%rsp),%rax # data-type: struct Buf +0x18 (data1)
> > > 0.00 : 5423e6: add $0x1,%rax
> > > 0.00 : 5423ea: mov %rax,0x18(%rsp) # data-type: u64 +0
> > > 0.00 : 5423ef: setb %al
> > > 11.17 : 5423f2: jb 54243a <test_rs+0x11a>
> > > 0.00 : 5423f4: jmp 542426 <test_rs+0x106>
> > > 0.00 : 5423f6: lea 0x30(%rsp),%rdi
> > > : 73 }
> > >
> > > Where '# data-type: struct Buf' is as far as I understand a manifestation of
> > > data type profiling succeeding. But my environment has slightly different
> > > version of rust -- I need to figure out what's going on here, thanks.
> >
> > I've being testing this in the same way, but without any rust code --
> > just on a simple datasym workload. Surprisingly, it seems that
> > 'data-type: buf' marks are disappearing even in this case starting from:
> >
> > c31040085914f1188720073baa43d1483693c0a3 (perf dwarf-regs: Clean up x86
> > dwarf_regnum code)
>
> > I'm not sure yet why this is happening, but don't see anything in the
> > commit mentioning that -- since there are no code-with-type tests yet,
> > maybe an unexpected side effect?
>
> Ian, can you please take a look at this?
That particular commit is largely adding an i386 to dwarf register
number mapping table but it also expands the x86-64 mapping table:
https://web.git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools-next.git/commit/?h=perf-tools-next&id=c31040085914f1188720073baa43d1483693c0a3
The code to search the table is largely unchanged so my guess would be
that the new x86-64 entries are causing a dwarf register to be
returned in cases where previously this was -ENOENT. This may have
broken the type profiling, but Namhyung would be the expert on that.
Thanks,
Ian
> Cheers,
>
> - Arnaldo
Powered by blists - more mailing lists