[v3,1/3] test/rcu: fix the compiling error for armv8.2
Checks
Commit Message
With "-march=armv8.2-a" specified, a compiling error generated:
app/test/test_rcu_qsbr.c:234:10: error: comparison of integer
expressions of different signedness: ‘unsigned int’ and ‘int’
[-Werror=sign-compare]
Fixes: b87089b0bb19 ("test/rcu: add API and functional tests")
Cc: stable@dpdk.org
Signed-off-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Steve Capper <steve.capper@arm.com>
---
app/test/test_rcu_qsbr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
11/11/2019 06:41, Gavin Hu:
> With "-march=armv8.2-a" specified, a compiling error generated:
> app/test/test_rcu_qsbr.c:234:10: error: comparison of integer
> expressions of different signedness: ‘unsigned int’ and ‘int’
> [-Werror=sign-compare]
>
> Fixes: b87089b0bb19 ("test/rcu: add API and functional tests")
> Cc: stable@dpdk.org
>
> Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> Reviewed-by: Steve Capper <steve.capper@arm.com>
> ---
> --- a/app/test/test_rcu_qsbr.c
> +++ b/app/test/test_rcu_qsbr.c
> /* Skip one update */
> - if (i == (RTE_MAX_LCORE - 10))
> + if (i == (unsigned int)(RTE_MAX_LCORE - 10))
For N1 SDP, RTE_MAX_LCORE = 4.
So this test weird.
Why not using rand() to find a number between 0 and max ?
You are hiding a real failure with a forced type casting.
Please reviewers, explain why you think it is the right thing to do?
> -----Original Message-----
> From: Thomas Monjalon <thomas@monjalon.net>
> Sent: Thursday, November 21, 2019 6:19 AM
> To: Gavin Hu (Arm Technology China) <Gavin.Hu@arm.com>; Honnappa
> Nagarahalli <Honnappa.Nagarahalli@arm.com>; Steve Capper
> <Steve.Capper@arm.com>
> Cc: stable@dpdk.org; dev@dpdk.org; nd <nd@arm.com>;
> david.marchand@redhat.com
> Subject: Re: [dpdk-stable] [PATCH v3 1/3] test/rcu: fix the compiling error for
> armv8.2
>
> 11/11/2019 06:41, Gavin Hu:
> > With "-march=armv8.2-a" specified, a compiling error generated:
> > app/test/test_rcu_qsbr.c:234:10: error: comparison of integer
> > expressions of different signedness: ‘unsigned int’ and ‘int’
> > [-Werror=sign-compare]
> >
> > Fixes: b87089b0bb19 ("test/rcu: add API and functional tests")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Gavin Hu <gavin.hu@arm.com>
> > Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> > Reviewed-by: Steve Capper <steve.capper@arm.com>
> > ---
> > --- a/app/test/test_rcu_qsbr.c
> > +++ b/app/test/test_rcu_qsbr.c
> > /* Skip one update */
> > - if (i == (RTE_MAX_LCORE - 10))
> > + if (i == (unsigned int)(RTE_MAX_LCORE - 10))
>
> For N1 SDP, RTE_MAX_LCORE = 4.
> So this test weird.
> Why not using rand() to find a number between 0 and max ?
>
> You are hiding a real failure with a forced type casting.
>
> Please reviewers, explain why you think it is the right thing to do?
>
Thanks for pointing out this issue, will fix in next release.
@@ -230,7 +230,7 @@ test_rcu_qsbr_thread_unregister(void)
/* Update quiescent state counter */
for (i = 0; i < num_threads[j]; i++) {
/* Skip one update */
- if (i == (RTE_MAX_LCORE - 10))
+ if (i == (unsigned int)(RTE_MAX_LCORE - 10))
continue;
rte_rcu_qsbr_quiescent(t[0],
(j == 2) ? (RTE_MAX_LCORE - 1) : i);