[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1169128156.59953.1606320652393.JavaMail.zimbra@efficios.com>
Date: Wed, 25 Nov 2020 11:10:52 -0500 (EST)
From: Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
To: Xingxing Su <suxingxing@...ngson.cn>, shuah <shuah@...nel.org>
Cc: Peter Zijlstra <peterz@...radead.org>,
paulmck <paulmck@...nel.org>, Boqun Feng <boqun.feng@...il.com>,
linux-kernel <linux-kernel@...r.kernel.org>,
linux-kselftest <linux-kselftest@...r.kernel.org>
Subject: Re: [PATCH] rseq/selftests: Fix
MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ build error under other arch.
----- On Nov 24, 2020, at 11:04 PM, Xingxing Su suxingxing@...ngson.cn wrote:
> Except arch x86, the function rseq_offset_deref_addv is not defined.
> The function test_membarrier_manager_thread call rseq_offset_deref_addv
> produces a build error.
>
> The RSEQ_ARCH_HAS_OFFSET_DEREF_ADD should contain all the code
> for the MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ.
> If the other Arch implements this feature,
> defined RSEQ_ARCH_HAS_OFFSET_DEREF_ADD in the header file
> to ensure that this feature is available.
>
> Following build errors:
>
> param_test.c: In function ‘test_membarrier_worker_thread’:
> param_test.c:1164:10: warning: implicit declaration of function
> ‘rseq_offset_deref_addv’
> ret = rseq_offset_deref_addv(&args->percpu_list_ptr,
> ^~~~~~~~~~~~~~~~~~~~~~
> /tmp/ccMj9yHJ.o: In function `test_membarrier_worker_thread':
> param_test.c:1164: undefined reference to `rseq_offset_deref_addv'
> param_test.c:1164: undefined reference to `rseq_offset_deref_addv'
> collect2: error: ld returned 1 exit status
> make: *** [/selftests/rseq/param_test_benchmark] Error 1
>
> Signed-off-by: Xingxing Su <suxingxing@...ngson.cn>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@...icios.com>
Shuah, can you pick up this fix please ?
Thanks,
Mathieu
> ---
> tools/testing/selftests/rseq/param_test.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/rseq/param_test.c
> b/tools/testing/selftests/rseq/param_test.c
> index 3845890..699ad5f 100644
> --- a/tools/testing/selftests/rseq/param_test.c
> +++ b/tools/testing/selftests/rseq/param_test.c
> @@ -1133,6 +1133,8 @@ static int set_signal_handler(void)
> return ret;
> }
>
> +/* Test MEMBARRIER_CMD_PRIVATE_RESTART_RSEQ_ON_CPU membarrier command. */
> +#ifdef RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV
> struct test_membarrier_thread_args {
> int stop;
> intptr_t percpu_list_ptr;
> @@ -1286,8 +1288,6 @@ void *test_membarrier_manager_thread(void *arg)
> return NULL;
> }
>
> -/* Test MEMBARRIER_CMD_PRIVATE_RESTART_RSEQ_ON_CPU membarrier command. */
> -#ifdef RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV
> void test_membarrier(void)
> {
> const int num_threads = opt_threads;
> --
> 1.8.3.1
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
Powered by blists - more mailing lists