From: Jonathan Rajotte-Julien via lttng-dev <lttng-dev@lists.lttng.org>
To: "Zhang, Qiang" <Qiang.Zhang@windriver.com>
Cc: lttng-dev <lttng-dev@lists.lttng.org>
Subject: Re: [lttng-dev] 回复: 回复: help modpost: "__bad_cmpxchg"
Date: Fri, 15 Jan 2021 14:18:41 -0500 [thread overview]
Message-ID: <20210115191841.GA3115961@joraj-alpa> (raw)
In-Reply-To: <BYAPR11MB2632B7E0BD848485746A80AFFFAE0@BYAPR11MB2632.namprd11.prod.outlook.com>
[-- Attachment #1: Type: text/plain, Size: 5396 bytes --]
Hi Quiang,
Please test the attached patch.
Cheers
On Sat, Jan 09, 2021 at 05:40:48AM +0000, Zhang, Qiang wrote:
>
>
> ________________________________________
> 发件人: Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
> 发送时间: 2021年1月8日 0:54
> 收件人: Zhang, Qiang
> 抄送: lttng-dev
> 主题: Re: 回复: help modpost: "__bad_cmpxchg"
>
> [Please note this e-mail is from an EXTERNAL e-mail address]
>
> >Hi,
> >
> >Note
> > The initial email was sent to the "owner" of the mailing list. Please
> > *always* send email to the mailing list directly: lttng->dev@lists.lttng.org .
> > Otherwise we will not be interested in helping you in the future.
> >
> >Sorry forgot to ask you the following.
> >
> >What is the arm CPU you are compiling against? The more details the >more we can
> >help here.
> >
> >Please provide the .config file for the kernel (via pastebin please) and >the
>
> Hello
>
> Attached is the kernel configuration file
> and compiler configuration file.
>
> bsp is xilinx-zynq (arm32, armv7), v5.10 kernel have delete
> 'CONFIG_OPTIMIZE_INLINING' config option.
>
> Cheers
>
> >compiler used. Mathieu Desnoyers (CompuDJ) might have a lead >regarding cmpxchg
> >and __bad_cmpxchg linker error trick used by the implementation and >the
> >optimized inlining config option (CONFIG_OPTIMIZE_INLINING).
> >
> >These should help us validate this lead.
>
> >
> >Cheers
> >
> >On Thu, Jan 07, 2021 at 01:20:54AM +0000, Zhang, Qiang wrote:
> >
> >
> > ________________________________________
> > 发件人: Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
> > 发送时间: 2021年1月6日 23:03
> > 收件人: Zhang, Qiang
> > 抄送: lttng-dev-owner@lists.lttng.org
> > 主题: Re: help modpost: "__bad_cmpxchg"
> >
> > [Please note this e-mail is from an EXTERNAL e-mail address]
> >
> > >Hi,
> > >
> > >What the kernel version are you compiling against?
> >
> >
> > kernel version 5.10.2
> > lttng-modules master branch commit :
> > 61e631e93e512b636ea6d52796bcce1c485a551b
> >
> > Cheers
> >
> > >
> > >Cheers
> > >
> > >On Wed, Jan 06, 2021 at 05:20:06AM +0000, Zhang, Qiang wrote:
> > >
> > >
> > > The following error occurred when I compiled lttng modules under armv7 architecture
> > >
> > > ERROR: modpost: "__bad_cmpxchg" [/buildarea1/OnDemand_CI_Build_World/build_dir/12251727-build_world/xilinx-zynq-standard-std-OE/build/tmp-glibc/work/xilinx_zynq-wrs-linux-gnueabi/lttng-modules/2.12.3+gitAUTOINC+61e631e93e-r0/git/src/lttng-counter-client-percpu-64-modular.ko] undefined!
> > >
> > > ERROR: modpost: "__bad_cmpxchg" [/buildarea1/OnDemand_CI_Build_World/build_dir/12251727-build_world/xilinx-zynq-standard-std-OE/build/tmp-glibc/work/xilinx_zynq-wrs-linux-gnueabi/lttng-modules/2.12.3+gitAUTOINC+61e631e93e-r0/git/src/lttng-counter-client-percpu-32-modular.ko] undefined!
> > >
> > > I find under the condition of
> > >
> > > COUNTER_SIZE_32_BIT, cmpxchg_local function trigger error in counter-api.h file.
> > >
> > > is cmpxchg_local is support in amv7?
> >
> > --
> > Jonathan Rajotte-Julien
> > EfficiOS
>
> --
> Jonathan Rajotte-Julien
> EfficiOS
> ./arm-wrs-linux-gnueabi-gcc -v
> Using built-in specs.
> COLLECT_GCC=./arm-wrs-linux-gnueabi-gcc
> COLLECT_LTO_WRAPPER=/buildarea1/qzhang2/jira/LINCD-3904/build/tmp-glibc/work/armv7at2hf-neon-wrs-linux-gnueabi/libgcc/10.2.0-r0/recipe-sysroot-native/usr/bin/arm-wrs-linux-gnueabi/../../libexec/arm-wrs-linux-gnueabi/gcc/arm-wrs-linux-gnueabi/10.2.0/lto-wrapper
> Target: arm-wrs-linux-gnueabi
> Configured with: ../../../../../../work-shared/gcc-10.2.0-r0/gcc-10.2.0/configure --build=x86_64-linux --host=x86_64-linux --target=arm-wrs-linux-gnueabi --prefix=/host-native/usr --exec_prefix=/host-native/usr --bindir=/host-native/usr/bin/arm-wrs-linux-gnueabi --sbindir=/host-native/usr/bin/arm-wrs-linux-gnueabi --libexecdir=/host-native/usr/libexec/arm-wrs-linux-gnueabi --datadir=/host-native/usr/share --sysconfdir=/host-native/etc --sharedstatedir=/host-native/com --localstatedir=/host-native/var --libdir=/host-native/usr/lib/arm-wrs-linux-gnueabi --includedir=/host-native/usr/include --oldincludedir=/host-native/usr/include --infodir=/host-native/usr/share/info --mandir=/host-native/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/host-native --enable-clocale=generic --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --disable-multilib --enable-default-pie --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=arm-wrs-linux-gnueabi- --without-local-prefix --disable-install-libiberty --disable-libssp --enable-libitm --enable-lto --disable-bootstrap --with-system-zlib --with-linker-hash-style=sysv --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --without-isl --with-gxx-include-dir=/not/exist/usr/include/c++/10.2.0 --with-sysroot=/not/exist --with-build-sysroot=/host --enable-poison-system-directories --with-system-zlib --disable-nls --with-glibc-version=2.28 --enable-initfini-array
> Thread model: posix
> Supported LTO compression algorithms: zlib
> gcc version 10.2.0 (GCC)
>
--
Jonathan Rajotte-Julien
EfficiOS
[-- Attachment #2: 0001-Fix-counter-api-always-inline-counter-add-function.patch --]
[-- Type: text/x-diff, Size: 3987 bytes --]
From f08da105102561886a9d207c56b65dd89beb0de7 Mon Sep 17 00:00:00 2001
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date: Wed, 6 Jan 2021 15:07:01 -0500
Subject: [PATCH lttng-modules] Fix: counter-api: always inline counter add
function
The counter add function uses cmpxchg() and cmpxchg_local() on 1, 2, 4,
and 8 bytes types.
In libcounter, the 8 bytes type is only supported on 64-bit
architectures, but the 1, 2, 4 byte type code is present for all
architectures, even though only the 4 byte code is currently used by
lttng-modules.
The ARM implementation of cmpxchg uses the "__bad_cmpxchg" linker error
to report use of cmpxchg on an unsupported size.
Considering that "inline" does not strictly mean always inline (depends
on CONFIG_OPTIMIZE_INLINING on some kernels, and does not mean forced
inlining in recent kernels), the compiler is free to generate a function
rather than perform inlining. If that happens, then the __bad_cmpxchg
linker error is generated even if the 1 and 2 bytes types are unused.
Therefore, use __always_inline for functions in counter-api.h to force
inlining, and therefore removal of unused code before linking, which is
required by this Linux kernel __bad_cmpxchg linker error trick.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1adccd1382e71abc5880e0351d976b779245468a
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
---
include/counter/counter-api.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/include/counter/counter-api.h b/include/counter/counter-api.h
index 12520445..fbc65818 100644
--- a/include/counter/counter-api.h
+++ b/include/counter/counter-api.h
@@ -20,7 +20,7 @@
/*
* Using unsigned arithmetic because overflow is defined.
*/
-static inline int __lttng_counter_add(const struct lib_counter_config *config,
+static __always_inline int __lttng_counter_add(const struct lib_counter_config *config,
enum lib_counter_config_alloc alloc,
enum lib_counter_config_sync sync,
struct lib_counter *counter,
@@ -226,7 +226,7 @@ static inline int __lttng_counter_add(const struct lib_counter_config *config,
return 0;
}
-static inline int __lttng_counter_add_percpu(const struct lib_counter_config *config,
+static __always_inline int __lttng_counter_add_percpu(const struct lib_counter_config *config,
struct lib_counter *counter,
const size_t *dimension_indexes, int64_t v)
{
@@ -243,7 +243,7 @@ static inline int __lttng_counter_add_percpu(const struct lib_counter_config *co
return 0;
}
-static inline int __lttng_counter_add_global(const struct lib_counter_config *config,
+static __always_inline int __lttng_counter_add_global(const struct lib_counter_config *config,
struct lib_counter *counter,
const size_t *dimension_indexes, int64_t v)
{
@@ -251,7 +251,7 @@ static inline int __lttng_counter_add_global(const struct lib_counter_config *co
dimension_indexes, v, NULL);
}
-static inline int lttng_counter_add(const struct lib_counter_config *config,
+static __always_inline int lttng_counter_add(const struct lib_counter_config *config,
struct lib_counter *counter,
const size_t *dimension_indexes, int64_t v)
{
@@ -266,14 +266,14 @@ static inline int lttng_counter_add(const struct lib_counter_config *config,
}
}
-static inline int lttng_counter_inc(const struct lib_counter_config *config,
+static __always_inline int lttng_counter_inc(const struct lib_counter_config *config,
struct lib_counter *counter,
const size_t *dimension_indexes)
{
return lttng_counter_add(config, counter, dimension_indexes, 1);
}
-static inline int lttng_counter_dec(const struct lib_counter_config *config,
+static __always_inline int lttng_counter_dec(const struct lib_counter_config *config,
struct lib_counter *counter,
const size_t *dimension_indexes)
{
--
2.25.1
[-- Attachment #3: Type: text/plain, Size: 156 bytes --]
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
next prev parent reply other threads:[~2021-01-15 19:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <BYAPR11MB263254ABB57F458031AB33DBFFD50@BYAPR11MB2632.namprd11.prod.outlook.com>
[not found] ` <BYAPR11MB2632B3DA9B535943CEE08A73FFD00@BYAPR11MB2632.namprd11.prod.outlook.com>
[not found] ` <20210106150309.GA227614@joraj-alpa>
[not found] ` <BYAPR11MB2632B5DE22E2561F0B018909FFAF0@BYAPR11MB2632.namprd11.prod.outlook.com>
2021-01-07 16:54 ` [lttng-dev] " Jonathan Rajotte-Julien via lttng-dev
2021-01-09 5:40 ` [lttng-dev] 回复: " Zhang, Qiang via lttng-dev
2021-01-13 6:03 ` Zhang, Qiang via lttng-dev
2021-01-15 19:18 ` Jonathan Rajotte-Julien via lttng-dev [this message]
2021-01-18 2:04 ` [lttng-dev] 回复: " Zhang, Qiang via lttng-dev
2021-01-19 16:40 ` Mathieu Desnoyers via lttng-dev
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=20210115191841.GA3115961@joraj-alpa \
--to=lttng-dev@lists.lttng.org \
--cc=Qiang.Zhang@windriver.com \
--cc=jonathan.rajotte-julien@efficios.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox