Re: [PATCH v1 2/2] perf auxtrace: Optimize barriers with load-acquire and store-release
From: Leo Yan <hidden>
Date: 2021-06-01 14:57:05
Also in:
lkml
On Tue, Jun 01, 2021 at 12:45:16PM +0300, Adrian Hunter wrote:
On 1/06/21 12:17 pm, Peter Zijlstra wrote:quoted
On Tue, Jun 01, 2021 at 12:07:31PM +0300, Adrian Hunter wrote:quoted
__sync_xxx_compare_and_swap is out-of-date now. This page: https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins.html#g_t_005f_005fsync-Builtins recommends '__atomic' builtins instead.perf doesn't seem to use that.I guess we could drop support for the compat case; add validation: "Error, 32-bit perf cannot record AUX area traces from a 64-bit kernel. Please use a 64-bit version of perf instead."
Not sure what's a good method to detect the compat case. I can think
out to use below conditions to check the compat case:
if ((sizeof(unsigned long) == 4) &&
(machine__is(machine, "x86_64") || machine__is(machine, "arm64") ||
machine__is(machine, "aarch64"))) {
pr_warn("Error, 32-bit perf cannot record from a 64-bit kernel.\n"
"Please use a 64-bit version of perf instead.\n");
return -ENOTSUP;
}
Just want to check if any better to detect compat case in perf?
Thanks for suggestions,
Leo
quoted
quoted
Since atomics are needed only for the "compat" case (i.e. 32-bit perf with 64-bit kernel) you could try to find an elegant way to check for a 64-bit kernel, and avoid the atomics for a 32-bit perf with 32-bit kernel.Most 32bit archs cannot do 64bit atomics. I suppose the only reason this doesn't explode is because the aux stuff isn't supported on many architectures?Yes but presumably the race itself is unlikely since the upper byte changes only once every 4GiB.