All of lore.kernel.org
 help / color / mirror / Atom feed
From: Justin Stitt <justinstitt@google.com>
To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	 Boqun Feng <boqun.feng@gmail.com>, Shuah Khan <shuah@kernel.org>,
	 Nathan Chancellor <nathan@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Tom Rix <trix@redhat.com>,
	 linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
	 llvm@lists.linux.dev
Subject: Re: [PATCH RFC] selftests/rseq: fix kselftest Clang build warnings
Date: Mon, 11 Sep 2023 09:53:42 -0700	[thread overview]
Message-ID: <CAFhGd8rHmQrThrCVHmVAp7fDFRidOAPR9Z6JFBpqAswX8dLGgw@mail.gmail.com> (raw)
In-Reply-To: <1fae4a2f-eaf1-c54c-9ec5-040b2714709e@efficios.com>

On Sat, Sep 9, 2023 at 5:37 AM Mathieu Desnoyers
<mathieu.desnoyers@efficios.com> wrote:
>
> On 9/8/23 19:03, Justin Stitt wrote:
> > Hi,
> >
> > I am experiencing many warnings when trying to build tools/testing/selftests.
> >
> > Here's one such example from rseq tree:
> > |  param_test.c:1234:10: error: address argument to atomic operation must be a pointer to _Atomic type ('intptr_t *' (aka 'long *') invalid)
> > |   1234 |         while (!atomic_load(&args->percpu_list_ptr)) {}
> > |        |                 ^           ~~~~~~~~~~~~~~~~~~~~~~
> > |  /usr/local/google/home/justinstitt/repos/tc-build/build/llvm/final/lib/clang/18/include/stdatomic.h:140:29: note: expanded from macro 'atomic_load'
> > |    140 | #define atomic_load(object) __c11_atomic_load(object, __ATOMIC_SEQ_CST)
> > |        |                             ^                 ~~~~~~
> >
> > I added the _Atomic type in various locations to silence _all_ (10) of these
> > warnings. I'm wondering, though, perhaps the absence of these _Atomic
> > types in the first place is on purpose? Am I on the right track to fix
> > these warnings without damaging the legitimacy of the tests at hand?
> >
> > I'd like some feedback about where to go from here and if others are
> > experiencing the same issues. Thanks!
> >
> > FWIW here's my specific build incantation on Clang-18 (49d41de57896e935cd5726719c5208bce22694ae):
> > $ make LLVM=1 -j128 ARCH=x86_64 mrproper headers defconfig kselftest-merge
> > $ make LLVM=1 ARCH=x86_64 -C tools/testing/selftests
>
> I should have used the __atomic_load_n() compiler builtin rather than
> atomic_load(), mainly because it does not require the _Atomic annotation
> to each type it touches.

Would you like me to send a patch in with this change?

>
> Thanks,
>
> Mathieu
>
>
> >
> > Link: https://github.com/ClangBuiltLinux/linux/issues/1698
> > Link: https://github.com/ClangBuiltLinux/continuous-integration2/issues/61
> > Signed-off-by: Justin Stitt <justinstitt@google.com>
> > ---
> >   tools/testing/selftests/rseq/param_test.c | 8 ++++----
> >   1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/tools/testing/selftests/rseq/param_test.c b/tools/testing/selftests/rseq/param_test.c
> > index bf951a490bb4..94802aeed2c6 100644
> > --- a/tools/testing/selftests/rseq/param_test.c
> > +++ b/tools/testing/selftests/rseq/param_test.c
> > @@ -356,7 +356,7 @@ struct inc_thread_test_data {
> >   };
> >
> >   struct percpu_list_node {
> > -     intptr_t data;
> > +     _Atomic intptr_t data;
> >       struct percpu_list_node *next;
> >   };
> >
> > @@ -1212,8 +1212,8 @@ static int set_signal_handler(void)
> >   /* Test MEMBARRIER_CMD_PRIVATE_RESTART_RSEQ_ON_CPU membarrier command. */
> >   #ifdef TEST_MEMBARRIER
> >   struct test_membarrier_thread_args {
> > -     int stop;
> > -     intptr_t percpu_list_ptr;
> > +     _Atomic int stop;
> > +     _Atomic intptr_t percpu_list_ptr;
> >   };
> >
> >   /* Worker threads modify data in their "active" percpu lists. */
> > @@ -1240,7 +1240,7 @@ void *test_membarrier_worker_thread(void *arg)
> >                       int cpu = get_current_cpu_id();
> >
> >                       ret = rseq_offset_deref_addv(RSEQ_MO_RELAXED, RSEQ_PERCPU,
> > -                             &args->percpu_list_ptr,
> > +                             (intptr_t*)&args->percpu_list_ptr,
> >                               sizeof(struct percpu_list_entry) * cpu, 1, cpu);
> >               } while (rseq_unlikely(ret));
> >       }
> >
> > ---
> > base-commit: 2dde18cd1d8fac735875f2e4987f11817cc0bc2c
> > change-id: 20230908-kselftest-param_test-c-1763b62e762f
> >
> > Best regards,
> > --
> > Justin Stitt <justinstitt@google.com>
> >
>
> --
> Mathieu Desnoyers
> EfficiOS Inc.
> https://www.efficios.com
>

  reply	other threads:[~2023-09-11 16:53 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-08 23:03 [PATCH RFC] selftests/rseq: fix kselftest Clang build warnings Justin Stitt
2023-09-08 23:11 ` Nick Desaulniers
2023-09-09 12:39 ` Mathieu Desnoyers
2023-09-11 16:53   ` Justin Stitt [this message]
2023-09-12  1:40     ` Mathieu Desnoyers

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=CAFhGd8rHmQrThrCVHmVAp7fDFRidOAPR9Z6JFBpqAswX8dLGgw@mail.gmail.com \
    --to=justinstitt@google.com \
    --cc=boqun.feng@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=nathan@kernel.org \
    --cc=ndesaulniers@google.com \
    --cc=paulmck@kernel.org \
    --cc=peterz@infradead.org \
    --cc=shuah@kernel.org \
    --cc=trix@redhat.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 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.